@hpcc-js/layout 2.42.0 → 2.46.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es6.js","sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/AbsoluteSurface.ts","../src/Accordion.ts","../src/Surface.ts","../src/Cell.ts","../src/Border.ts","../src/Border2.ts","../src/Carousel.ts","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/symbol/circle.js","../../../node_modules/d3-shape/src/symbol/cross.js","../../../node_modules/d3-shape/src/symbol/diamond.js","../../../node_modules/d3-shape/src/symbol/star.js","../../../node_modules/d3-shape/src/symbol/square.js","../../../node_modules/d3-shape/src/symbol/triangle.js","../../../node_modules/d3-shape/src/symbol/wye.js","../../../node_modules/d3-shape/src/symbol.js","../../../node_modules/d3-svg-legend/src/legend.js","../../../node_modules/d3-svg-legend/src/color.js","../src/Legend.ts","../src/Modal.ts","../src/ChartPanel.ts","../src/FlexGrid.ts","../../../node_modules/grid-list/src/gridList.js","../src/Grid.ts","../src/HorizontalList.ts","../src/Layered.ts","../src/Popup.ts","../src/Tabbed.ts","../src/Toolbar.ts","../src/VerticalList.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/layout\";\r\nexport const PKG_VERSION = \"2.42.0\";\r\nexport const BUILD_VERSION = \"2.97.0\";\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/AbsoluteSurface.css\";\n\nexport class AbsoluteSurface extends HTMLWidget {\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n let xPos = 0;\n let yPos = 0;\n let width = this.clientWidth();\n let height = this.clientHeight();\n switch (this.units()) {\n case \"pixels\":\n xPos = this.widgetX();\n yPos = this.widgetY();\n width = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth());\n height = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight());\n break;\n case \"percent\":\n xPos = this.widgetX() * width / 100;\n yPos = this.widgetY() * height / 100;\n width = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth()) * width / 100;\n height = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight()) * height / 100;\n break;\n }\n element.style(\"opacity\", this.opacity());\n\n const widgets = element.selectAll(\"#\" + this._id + \" > .placeholder\").data(this.widget() ? [this.widget()] : [], function (d) { return d._id; });\n widgets.enter().append(\"div\")\n .attr(\"class\", \"placeholder\")\n .each(function (d) {\n d.target(this);\n })\n .merge(widgets)\n .style(\"left\", xPos + \"px\")\n .style(\"top\", yPos + \"px\")\n .style(\"width\", width + \"px\")\n .style(\"bottom\", height + \"px\")\n .each(function (d) {\n d\n .resize({ width, height })\n ;\n })\n ;\n widgets.exit().each(function (d) {\n d.target(null);\n }).remove();\n }\n\n exit(domNode, element) {\n if (this.widget()) {\n this.widget().target(null);\n }\n super.exit(domNode, element);\n }\n\n units: { (): string; (_: string): AbsoluteSurface; };\n widgetX: { (): number; (_: number): AbsoluteSurface; };\n widgetY: { (): number; (_: number): AbsoluteSurface; };\n widgetWidth: { (): string; (_: string): AbsoluteSurface; };\n widgetHeight: { (): string; (_: string): AbsoluteSurface; };\n widget: { (): any; (_: any): AbsoluteSurface; };\n opacity: { (): number; (_: number): AbsoluteSurface; };\n}\nAbsoluteSurface.prototype._class += \" layout_AbsoluteSurface\";\n\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","import { FAChar, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Accordion.css\";\n\nexport class Accordion extends HTMLWidget {\n protected _isClosed: boolean;\n titleSpan;\n iconDiv;\n ul;\n icon;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._isClosed = false;\n }\n\n pushListItem(widget, prepend: boolean = false, protect: boolean = false) {\n const contentArr = this.content();\n\n widget._protected = protect;\n\n if (prepend) {\n contentArr.unshift(widget);\n } else {\n contentArr.push(widget);\n }\n this.content(contentArr);\n return this;\n }\n\n clearListItems() {\n const arr = [];\n for (const i in this.content()) {\n if (this.content()[i]._protected) {\n arr.push(this.content()[i]);\n }\n }\n this.content(arr);\n return this;\n }\n\n collapseClick(element) {\n if (element.classed(\"closed\")) {\n this._isClosed = false;\n element.classed(\"open\", true);\n element.classed(\"closed\", false);\n } else {\n this._isClosed = true;\n element.classed(\"open\", false);\n element.classed(\"closed\", true);\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._isClosed = this.defaultCollapsed();\n element.classed(this._isClosed ? \"closed\" : \"open\", true);\n\n this.titleSpan = element.append(\"span\").classed(\"collapsible-title\", true);\n this.iconDiv = element.append(\"div\").classed(\"collapsible-icon\", true);\n this.ul = element.append(\"ul\");\n\n this.icon = new FAChar()\n .size({ height: 24, width: 24 })\n .target(this.iconDiv.node());\n\n this.iconDiv.on(\"click\", function () {\n context.collapseClick(element);\n context.render();\n });\n this.titleSpan.on(\"click\", function () {\n context.collapseClick(element);\n context.render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const this_id = \"\";\n this.titleSpan.text(context.title().length > 0 ? context.title() + this_id : \"Accordion [\" + context._id + \"]\" + this_id);\n const rows = this.ul.selectAll(\"#\" + context._id + \" > ul > li\").data(this.content(), function (d) {\n return d._id;\n });\n rows.enter()\n .append(function (widget) {\n const li = document.createElement(\"li\");\n if (widget._target === null) {\n const wSize = widget.size();\n if (wSize.width === 0 || wSize.height === 0) {\n const cSize = context.size();\n widget.size({\n width: cSize.width,\n height: cSize.width\n });\n }\n widget.target(li);\n } else {\n return widget._target;\n }\n return li;\n })\n ;\n rows.exit().remove();\n\n this.icon\n .text_colorFill(this.titleFontColor())\n .char(this._isClosed ? this.closedIcon() : this.openIcon()).render()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n content: { (): any[]; (_: any[]): Accordion; };\n title: { (): string; (_: string): Accordion; };\n openIcon: { (): string; (_: string): Accordion; };\n closedIcon: { (): string; (_: string): Accordion; };\n titleFontColor: { (): string; (_: string): Accordion; };\n titleBackgroundColor: { (): any; (_: any): Accordion; };\n defaultCollapsed: { (): boolean; (_: boolean): Accordion; };\n}\nAccordion.prototype._class += \" layout_Accordion\";\n\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\", \"\\uf147\", \"string\", \"Icon to display when list is open\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"closedIcon\", \"\\uf196\", \"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\"] });\n\nAccordion.prototype.publish(\"defaultCollapsed\", false, \"boolean\", \"Collapsed by default if true\", null, { tags: [\"Private\"] });\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Surface.css\";\n\nexport class Surface extends HTMLWidget {\n _surfaceButtons;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._surfaceButtons = [];\n }\n\n widgetSize(titleDiv, widgetDiv) {\n let width = this.clientWidth();\n let height = this.clientHeight();\n if (this.title()) {\n height -= this.calcHeight(titleDiv);\n }\n height -= this.calcFrameHeight(widgetDiv);\n width -= this.calcFrameWidth(widgetDiv);\n return { width, height };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element2) {\n super.update(domNode, element2);\n const context = this;\n\n element2\n .classed(\"shadow2\", this.surfaceShadow())\n .style(\"border-width\", this.surfaceBorderWidth_exists() ? this.surfaceBorderWidth() + \"px\" : null)\n .style(\"border-color\", this.surfaceBorderColor())\n .style(\"border-radius\", this.surfaceBorderRadius_exists() ? this.surfaceBorderRadius() + \"px\" : null)\n .style(\"background-color\", this.surfaceBackgroundColor())\n ;\n\n const titles = element2.selectAll(\".surfaceTitle\").data(this.title() ? [this.title()] : []);\n titles.enter().insert(\"h3\", \"div\")\n .attr(\"class\", \"surfaceTitle\")\n .merge(titles)\n .text(function (d) { return d; })\n .style(\"text-align\", this.surfaceTitleAlignment())\n .style(\"color\", this.surfaceTitleFontColor())\n .style(\"font-size\", this.surfaceTitleFontSize_exists() ? this.surfaceTitleFontSize() + \"px\" : null)\n .style(\"font-family\", this.surfaceTitleFontFamily())\n .style(\"font-weight\", this.surfaceTitleFontBold() ? \"bold\" : \"normal\")\n .style(\"background-color\", this.surfaceTitleBackgroundColor())\n .style(\"padding\", this.surfaceTitlePadding_exists() ? this.surfaceTitlePadding() + \"px\" : null)\n .style(\"title\", this.altText_exists() ? this.altText() : null)\n ;\n titles.exit().remove();\n\n const surfaceTitle = element2.select(\".surfaceTitle\");\n\n const surfaceButtons = surfaceTitle.append(\"div\").attr(\"class\", \"html-button-container\").selectAll(\".surface-button\").data(this.buttonAnnotations());\n surfaceButtons.enter().append(\"button\").classed(\"surface-button\", true)\n .each(function (button, idx) {\n const el = context._surfaceButtons[idx] = d3Select(this)\n .attr(\"class\", \"surface-button\" + (button.class ? \" \" + button.class : \"\"))\n .attr(\"id\", button.id)\n .style(\"padding\", button.padding)\n .style(\"width\", button.width)\n .style(\"height\", button.height)\n .style(\"cursor\", \"pointer\");\n if (button.font === \"FontAwesome\") {\n el\n .style(\"background\", \"transparent\")\n .style(\"border\", \"none\")\n .on(\"click\", function (d) { context.click(d); })\n .append(\"i\")\n .attr(\"class\", \"fa\")\n .text(function () { return button.label; });\n } else {\n el\n .text(function () { return button.label; })\n .on(\"click\", function (d) { context.click(d); });\n }\n })\n ;\n surfaceButtons.exit()\n .each(function (_d, idx) {\n const element = d3Select(this);\n delete context._surfaceButtons[idx];\n element.remove();\n })\n ;\n const widgets = element2.selectAll(\"#\" + this._id + \" > .surfaceWidget\").data(this.widget() ? [this.widget()] : [], function (d) { return d._id; });\n\n widgets.enter().append(\"div\")\n .attr(\"class\", \"surfaceWidget\")\n .each(function (d) {\n d3Select(context.element().node().parentElement).classed(\"content-icon content-icon-\" + (d.classID().split(\"_\")[1]), true);\n d.target(this);\n })\n .merge(widgets)\n .style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null)\n .each(function (d) {\n const widgetSize = context.widgetSize(element2.select(\"h3\"), d3Select(this));\n if (widgetSize.width < 0) widgetSize.width = 0;\n if (widgetSize.height < 0) widgetSize.height = 0;\n d\n .resize({ width: widgetSize.width, height: widgetSize.height })\n ;\n })\n ;\n widgets.exit().each(function (d) {\n d.target(null);\n }).remove();\n }\n\n exit(domNode, element) {\n if (this.widget()) {\n this.widget().target(null);\n }\n super.exit(domNode, element);\n }\n\n title: { (): string; (_: string): Surface; };\n altText: { (): string; (_: string): Surface; };\n altText_exists: () => boolean;\n surfaceTitlePadding: { (): number; (_: number): Surface; };\n surfaceTitlePadding_exists: () => boolean;\n surfaceTitleFontSize: { (): number; (_: number): Surface; };\n surfaceTitleFontSize_exists: () => boolean;\n surfaceTitleFontColor: { (): string; (_: string): Surface; };\n surfaceTitleFontFamily: { (): string; (_: string): Surface; };\n surfaceTitleFontBold: { (): boolean; (_: boolean): Surface; };\n surfaceTitleBackgroundColor: { (): string; (_: string): Surface; };\n surfaceTitleAlignment: { (): string; (_: string): Surface; };\n\n surfaceShadow: { (): boolean; (_: boolean): Surface; };\n surfacePadding: { (): string; (_: string): Surface; };\n surfacePadding_exists: () => boolean;\n surfaceBackgroundColor: { (): string; (_: string): Surface; };\n surfaceBorderWidth: { (): number; (_: number): Surface; };\n surfaceBorderWidth_exists: () => boolean;\n surfaceBorderColor: { (): string; (_: string): Surface; };\n surfaceBorderRadius: { (): number; (_: number): Surface; };\n surfaceBorderRadius_exists: () => boolean;\n\n buttonAnnotations: { (): any[]; (_: any[]): Surface; };\n\n widget: { (): Widget; (_: Widget): Surface; };\n\n // Events ---\n click(obj) {\n console.log(\"Clicked: \" + obj.id);\n }\n}\nSurface.prototype._class += \" layout_Surface\";\n\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, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleBackgroundColor\", null, \"html-color\", \"Title Background Color\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleAlignment\", \"center\", \"set\", \"Title Alignment\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], disable: (w: any) => !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\"] });\n\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Private\"] });\n\nSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"] });\n","import { Widget } from \"@hpcc-js/common\";\nimport { select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport { Surface } from \"./Surface\";\n\nimport \"../src/Cell.css\";\n\nexport class Cell extends Surface {\n _indicateTheseIds;\n\n constructor() {\n super();\n this._indicateTheseIds = [];\n }\n\n indicateTheseIds(): any[];\n indicateTheseIds(_: any[]): Cell;\n indicateTheseIds(_?: any[]): any[] | Cell {\n if (!arguments.length) return this._indicateTheseIds;\n this._indicateTheseIds = _;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n element\n .classed(\"layout_Surface\", true)\n .on(\"mouseenter\", function () { context.onMouseEnter(); })\n .on(\"mouseleave\", function () { context.onMouseLeave(); })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n\n onMouseEnter() {\n const arr = this.indicateTheseIds();\n const opacity = this.indicatorOpacity();\n const indicatorBorderColor = this.indicatorBorderColor();\n const indicatorGlowColor = this.indicatorGlowColor();\n for (let i = 0; i < arr.length; i++) {\n const otherElement = d3Select(\"#\" + arr[i]);\n const otherWidget: Widget = otherElement.datum() as Widget;\n if (otherElement && otherWidget) {\n otherElement.append(\"div\")\n .attr(\"class\", \"update-indicator\")\n .style(\"width\", otherWidget.width() + \"px\")\n .style(\"height\", otherWidget.height() + \"px\")\n .style(\"opacity\", opacity)\n .style(\"border-color\", indicatorBorderColor)\n .style(\"-webkit-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\n .style(\"-moz-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\n .style(\"box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\n ;\n }\n }\n }\n\n onMouseLeave() {\n const arr = this.indicateTheseIds();\n for (let i = 0; i < arr.length; i++) {\n d3SelectAll(\"#\" + arr[i] + \" > div.update-indicator\").remove();\n }\n }\n\n title: { (): string; (_: string): Cell; };\n widget: { (): Widget; (_: Widget): Cell; };\n\n gridRow: { (): number; (_: number): Cell; };\n gridCol: { (): number; (_: number): Cell; };\n gridRowSpan: { (): number; (_: number): Cell; };\n gridColSpan: { (): number; (_: number): Cell; };\n\n indicatorGlowColor: { (): string; (_: string): Cell; };\n indicatorBorderColor: { (): string; (_: string): Cell; };\n indicatorOpacity: { (): number; (_: number): Cell; };\n\n}\nCell.prototype._class += \" layout_Cell\";\n\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\"] });\n\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\", 0.8, \"number\", \"Opacity of update-indicator\", null, { tags: [\"Basic\"] });\n","import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { Cell } from \"./Cell\";\n\nimport \"../src/Border.css\";\n\nexport class Border extends HTMLWidget {\n _colCount: number;\n _rowCount: number;\n _colSize: number;\n _rowSize: number;\n _shrinkWrapBoxes;\n _watch;\n _offsetX;\n _offsetY;\n _dragCell;\n _dragCellSize;\n _dragCellStartSize;\n _handleTop;\n _handleLeft;\n _dragPrevX;\n _dragPrevY;\n _cellSizes;\n contentDiv;\n _scrollBarWidth;\n _borderHandles;\n _sectionTypeArr;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n\n this._colCount = 0;\n this._rowCount = 0;\n this._colSize = 0;\n this._rowSize = 0;\n\n this._shrinkWrapBoxes = {};\n\n this.content([]);\n this.sectionTypes([]);\n }\n\n watchWidget(widget) {\n if (this._watch === undefined) {\n this._watch = {};\n }\n if (this._watch[widget.id()]) {\n this._watch[widget.id()].remove();\n delete this._watch[widget.id()];\n }\n if (widget) {\n const context = this;\n this._watch[widget.id()] = widget.monitor(function (paramId, newVal, oldVal) {\n if (oldVal !== newVal) {\n context.lazyPostUpdate();\n }\n });\n }\n }\n\n lazyPostUpdate = Utility.debounce(function () {\n this.postUpdate();\n }, 100);\n\n applyLayoutType() {\n const layoutObj = this.borderLayoutObject();\n this.content().forEach(function (cell, i) {\n cell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n cell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n cell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n cell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n cell._dragHandles = this.cellSpecificDragHandles(this.sectionTypes()[i]);\n }, this);\n }\n cellSpecificDragHandles(sectionType) {\n switch (sectionType) {\n case \"top\": return [\"s\"];\n case \"right\": return [\"w\"];\n case \"bottom\": return [\"n\"];\n case \"left\": return [\"e\"];\n case \"center\": return [];\n }\n }\n\n borderLayoutObject(layoutType?) {\n const retObj = {};\n const context = this;\n let topSize;\n let topPerc;\n let bottomSize;\n let bottomPerc;\n let leftSize;\n let leftPerc;\n let rightSize;\n let rightPerc;\n\n const bcRect = this.target().getBoundingClientRect();\n const gridRect: any = {};\n gridRect.top = bcRect.top;\n gridRect.left = bcRect.left;\n gridRect.bottom = bcRect.bottom;\n gridRect.right = bcRect.right;\n if (this.target() instanceof SVGElement) {\n gridRect.width = parseFloat(this.target().getAttribute(\"width\"));\n gridRect.height = parseFloat(this.target().getAttribute(\"height\"));\n } else {\n gridRect.width = bcRect.width;\n gridRect.height = bcRect.height;\n }\n if (this.sectionTypes().indexOf(\"top\") !== -1) {\n topSize = this.topSize();\n topPerc = this.topPercentage();\n if (typeof (this._shrinkWrapBoxes[\"top\"]) !== \"undefined\") {\n topSize = this._shrinkWrapBoxes[\"top\"].height + this.gutter();\n topPerc = 0;\n }\n }\n if (this.sectionTypes().indexOf(\"bottom\") !== -1) {\n bottomSize = this.bottomSize();\n bottomPerc = this.bottomPercentage();\n if (typeof (this._shrinkWrapBoxes[\"bottom\"]) !== \"undefined\") {\n bottomSize = this._shrinkWrapBoxes[\"bottom\"].height + this.gutter();\n bottomPerc = 0;\n }\n }\n if (this.sectionTypes().indexOf(\"left\") !== -1) {\n leftSize = this.leftSize();\n leftPerc = this.leftPercentage();\n if (typeof (this._shrinkWrapBoxes[\"left\"]) !== \"undefined\") {\n leftSize = this._shrinkWrapBoxes[\"left\"].width + this.gutter();\n leftPerc = 0;\n }\n }\n if (this.sectionTypes().indexOf(\"right\") !== -1) {\n rightSize = this.rightSize();\n rightPerc = this.rightPercentage();\n if (typeof (this._shrinkWrapBoxes[\"right\"]) !== \"undefined\") {\n rightSize = this._shrinkWrapBoxes[\"right\"].width + this.gutter();\n rightPerc = 0;\n }\n }\n\n const t = _sectionPlacementObject({\n width: { \"px\": 0, \"%\": 100 },\n height: { \"px\": topSize, \"%\": topPerc },\n top: { \"px\": 0, \"%\": 0 },\n left: { \"px\": 0, \"%\": 0 }\n });\n const b = _sectionPlacementObject({\n width: { \"px\": 0, \"%\": 100 },\n height: { \"px\": bottomSize, \"%\": bottomPerc },\n top: { \"px\": 0, \"%\": 100 },\n left: { \"px\": 0, \"%\": 0 }\n });\n b.top -= b.height;\n const l = _sectionPlacementObject({\n width: { \"px\": leftSize, \"%\": leftPerc },\n height: { \"px\": -t.height - b.height, \"%\": 100 },\n top: { \"px\": t.height, \"%\": 0 },\n left: { \"px\": 0, \"%\": 0 }\n });\n const r = _sectionPlacementObject({\n width: { \"px\": rightSize, \"%\": rightPerc },\n height: { \"px\": -t.height - b.height, \"%\": 100 },\n top: { \"px\": t.height, \"%\": 0 },\n left: { \"px\": 0, \"%\": 100 }\n });\n r.left -= r.width;\n const c = _sectionPlacementObject({\n width: { \"px\": -r.width - l.width, \"%\": 100 },\n height: { \"px\": -t.height - b.height, \"%\": 100 },\n top: { \"px\": t.height, \"%\": 0 },\n left: { \"px\": l.width, \"%\": 0 }\n });\n retObj[\"top\"] = t;\n retObj[\"bottom\"] = b;\n retObj[\"right\"] = r;\n retObj[\"left\"] = l;\n retObj[\"center\"] = c;\n return retObj;\n\n function _sectionPlacementObject(obj) {\n obj.width[\"px\"] = typeof (obj.width[\"px\"]) !== \"undefined\" ? obj.width[\"px\"] : 0;\n obj.width[\"%\"] = typeof (obj.width[\"%\"]) !== \"undefined\" ? obj.width[\"%\"] : 0;\n obj.height[\"px\"] = typeof (obj.height[\"px\"]) !== \"undefined\" ? obj.height[\"px\"] : 0;\n obj.height[\"%\"] = typeof (obj.height[\"%\"]) !== \"undefined\" ? obj.height[\"%\"] : 0;\n const ret = {\n width: obj.width[\"px\"] + (obj.width[\"%\"] / 100 * context.width()),\n height: obj.height[\"px\"] + (obj.height[\"%\"] / 100 * context.height()),\n top: obj.top[\"px\"] + (obj.top[\"%\"] / 100 * context.height()) + context.gutter() / 2,\n left: obj.left[\"px\"] + (obj.left[\"%\"] / 100 * context.width()) + context.gutter() / 2\n };\n return ret;\n }\n }\n\n clearContent(sectionType) {\n if (!sectionType) {\n this.content().forEach(function (contentWidget) {\n contentWidget.target(null);\n return false;\n });\n d3Select(\"#\" + this.id() + \" > div.borderHandle\")\n .classed(\"borderHandleDisabled\", true)\n ;\n delete this._watch;\n this.content([]);\n this.sectionTypes([]);\n } else {\n const idx = this.sectionTypes().indexOf(sectionType);\n if (idx >= 0) {\n if (this._watch && this.content()[idx]) {\n delete this._watch[this.content()[idx].id()];\n }\n this.content()[idx].target(null);\n d3Select(\"#\" + this.id() + \" > div.borderHandle_\" + sectionType)\n .classed(\"borderHandleDisabled\", true)\n ;\n this.content().splice(idx, 1);\n this.sectionTypes().splice(idx, 1);\n }\n }\n }\n\n hasContent(sectionType, widget, title) {\n return this.sectionTypes().indexOf(sectionType) >= 0;\n }\n\n setContent(sectionType, widget, title?) {\n this.clearContent(sectionType);\n title = typeof (title) !== \"undefined\" ? title : \"\";\n if (widget) {\n const cell = new Cell()\n .surfaceBorderWidth(0)\n .widget(widget)\n .title(title)\n ;\n this.watchWidget(widget);\n this.content().push(cell);\n this.sectionTypes().push(sectionType);\n }\n return this;\n }\n\n getCell(id) {\n const idx = this.sectionTypes().indexOf(id);\n if (idx >= 0) {\n return this.content()[idx];\n }\n return null;\n }\n\n getContent(id) {\n const idx = this.sectionTypes().indexOf(id);\n if (idx >= 0) {\n return this.content()[idx].widget();\n }\n return null;\n }\n\n setLayoutOffsets() {\n this._offsetX = this._element.node().getBoundingClientRect().left + (this.gutter() / 2);\n this._offsetY = this._element.node().getBoundingClientRect().top + (this.gutter() / 2);\n }\n\n dragStart(handle) {\n const event = d3Event();\n event.sourceEvent.stopPropagation();\n const context = this;\n\n this._dragCell = handle;\n this._dragCellStartSize = this[handle + \"Size\"]();\n\n if (this[handle + \"ShrinkWrap\"]()) {\n this[handle + \"Percentage\"](0);\n this[handle + \"ShrinkWrap\"](false);\n }\n\n const handleElm = d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + handle);\n context._handleTop = parseFloat(handleElm.style(\"top\").split(\"px\")[0]);\n context._handleLeft = parseFloat(handleElm.style(\"left\").split(\"px\")[0]);\n\n this._dragPrevX = event.sourceEvent.clientX;\n this._dragPrevY = event.sourceEvent.clientY;\n }\n dragTick(handle) {\n const context = this;\n\n const event = d3Event();\n const xDelta = this._dragPrevX - event.sourceEvent.clientX;\n const yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\n switch (handle) {\n case \"top\":\n case \"bottom\":\n _moveHandles(handle, yDelta);\n break;\n case \"right\":\n case \"left\":\n _moveHandles(handle, xDelta);\n break;\n }\n\n function _moveHandles(handle2, delta) {\n if (delta === 0) return;\n const handles = d3SelectAll(\"#\" + context.id() + \" > div.borderHandle\");\n const grabbedHandle = d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + handle2);\n\n if (grabbedHandle.classed(\"borderHandle_top\")) {\n grabbedHandle.style(\"top\", (context._handleTop - delta) + \"px\");\n context._cellSizes.topHeight = context._handleTop - delta;\n context._cellSizes.leftHeight = context._cellSizes.height;\n context._cellSizes.leftHeight -= context._cellSizes.topHeight;\n context._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n context._cellSizes.rightHeight = context._cellSizes.leftHeight;\n } else if (grabbedHandle.classed(\"borderHandle_right\")) {\n grabbedHandle.style(\"left\", (context._handleLeft - delta) + \"px\");\n context._cellSizes.rightWidth = context._cellSizes.width - context._handleLeft + delta;\n } else if (grabbedHandle.classed(\"borderHandle_bottom\")) {\n grabbedHandle.style(\"top\", (context._handleTop - delta) + \"px\");\n context._cellSizes.bottomHeight = context._cellSizes.height - context._handleTop + delta;\n context._cellSizes.leftHeight = context._cellSizes.height;\n context._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n context._cellSizes.leftHeight -= context._cellSizes.topHeight;\n context._cellSizes.rightHeight = context._cellSizes.leftHeight;\n } else if (grabbedHandle.classed(\"borderHandle_left\")) {\n grabbedHandle.style(\"left\", (context._handleLeft - delta) + \"px\");\n context._cellSizes.leftWidth = context._handleLeft - delta;\n }\n\n handles.each(function () {\n const handle3 = d3Select(this);\n if (handle3.classed(\"borderHandle_top\")) {\n handle3.style(\"width\", context._cellSizes.width + \"px\");\n handle3.style(\"top\", (context._cellSizes.topHeight - 3) + \"px\");\n } else if (handle3.classed(\"borderHandle_right\")) {\n handle3.style(\"left\", (context._cellSizes.width - context._cellSizes.rightWidth) + \"px\");\n handle3.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n handle3.style(\"height\", context._cellSizes.rightHeight + \"px\");\n } else if (handle3.classed(\"borderHandle_bottom\")) {\n handle3.style(\"width\", context._cellSizes.width + \"px\");\n handle3.style(\"top\", (context._cellSizes.height - context._cellSizes.bottomHeight - 3) + \"px\");\n } else if (handle3.classed(\"borderHandle_left\")) {\n handle3.style(\"left\", context._cellSizes.leftWidth + \"px\");\n handle3.style(\"height\", context._cellSizes.leftHeight + \"px\");\n handle3.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n }\n });\n }\n }\n dragEnd(handle) {\n if (handle) {\n const event = d3Event();\n const xDelta = this._dragPrevX - event.sourceEvent.clientX;\n const yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\n switch (handle) {\n case \"top\":\n if (yDelta !== 0) {\n this.topPercentage(0);\n this.topSize(this.topSize() === 0 ? this.getContent(\"top\").getBBox().height - yDelta : this.topSize() - yDelta);\n }\n break;\n case \"right\":\n if (xDelta !== 0) {\n this.rightPercentage(0);\n this.rightSize(this.rightSize() === 0 ? this.getContent(\"right\").getBBox().width + xDelta : this.rightSize() + xDelta);\n }\n break;\n case \"bottom\":\n if (yDelta !== 0) {\n this.bottomPercentage(0);\n this.bottomSize(this.bottomSize() === 0 ? this.getContent(\"bottom\").getBBox().height + yDelta : this.bottomSize() + yDelta);\n }\n break;\n case \"left\":\n if (xDelta !== 0) {\n this.leftPercentage(0);\n this.leftSize(this.leftSize() === 0 ? this.getContent(\"left\").getBBox().width - xDelta : this.leftSize() - xDelta);\n }\n break;\n }\n\n this._dragPrevX = event.sourceEvent.clientX;\n this._dragPrevY = event.sourceEvent.clientY;\n }\n this.render();\n }\n\n size(_?) {\n const retVal = HTMLWidget.prototype.size.apply(this, arguments);\n if (arguments.length && this.contentDiv) {\n this.contentDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n element.style(\"position\", \"relative\");\n this.contentDiv = element.append(\"div\").classed(\"border-content\", true);\n this._scrollBarWidth = Platform.getScrollbarWidth();\n this._borderHandles = [\"top\", \"left\", \"right\", \"bottom\"];\n\n const handles = element.selectAll(\"div.borderHandle\").data(this._borderHandles);\n handles.enter().append(\"div\")\n .classed(\"borderHandle\", true)\n .each(function (handle) {\n const h = d3Select(this);\n h.classed(\"borderHandle_\" + handle, true)\n .classed(\"borderHandleDisabled\", context.getContent(handle) === null)\n ;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._sectionTypeArr = this.sectionTypes();\n const context = this;\n\n element.classed(\"design-mode\", this.designMode());\n\n this.setLayoutOffsets();\n\n const rows = this.contentDiv.selectAll(\".cell_\" + this._id).data(this.content(), function (d) { return d._id; });\n const rowsUpdate = rows.enter().append(\"div\")\n .classed(\"cell_\" + this._id, true)\n .style(\"position\", \"absolute\")\n .each(function (d, i) {\n d3Select(this).classed(\"border-cell border-cell-\" + context._sectionTypeArr[i], true);\n d.target(this);\n d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + context._sectionTypeArr[i])\n .classed(\"borderHandleDisabled\", false);\n }).merge(rows);\n rowsUpdate\n .each(function (d, idx) {\n const sectionType = context.sectionTypes()[idx];\n if (typeof (context[sectionType + \"ShrinkWrap\"]) !== \"undefined\" && context[sectionType + \"ShrinkWrap\"]()) {\n d.render();\n context._shrinkWrapBoxes[sectionType] = d.widget().getBBox(true);\n } else {\n delete context._shrinkWrapBoxes[sectionType];\n }\n });\n\n const drag = d3Drag()\n .on(\"start\", function (d, i) { context.dragStart.call(context, d, i); })\n .on(\"drag\", function (d, i) { context.dragTick.call(context, d, i); })\n .on(\"end\", function (d, i) { context.dragEnd.call(context, d, i); })\n ;\n if (this.designMode()) {\n element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").call(drag);\n } else {\n element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").on(\".drag\", null);\n }\n\n const layoutObj = this.borderLayoutObject();\n this.content().forEach(function (cell, i) {\n cell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n cell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n cell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n cell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n cell._dragHandles = [];\n }, this);\n\n rowsUpdate\n .style(\"left\", function (d) { return d._fixedLeft + \"px\"; })\n .style(\"top\", function (d) { return d._fixedTop + \"px\"; })\n .style(\"width\", function (d) { return d._fixedWidth - context.gutter() + \"px\"; })\n .style(\"height\", function (d) { return d._fixedHeight - context.gutter() + \"px\"; })\n .each(function (d) {\n d._placeholderElement\n .attr(\"draggable\", context.designMode())\n .selectAll(\".dragHandle\")\n .attr(\"draggable\", context.designMode())\n ;\n d\n .surfacePadding(context.surfacePadding())\n .resize()\n ;\n });\n rows.exit().each(function (d) {\n d.target(null);\n }).remove();\n\n this.getCellSizes();\n\n element\n .selectAll(\"#\" + this.id() + \" > div.borderHandle\")\n .each(function () {\n const handle = d3Select(this);\n if (handle.classed(\"borderHandle_top\")) {\n handle.style(\"width\", context._cellSizes.width + \"px\");\n handle.style(\"top\", (context._cellSizes.topHeight - 3) + \"px\");\n } else if (handle.classed(\"borderHandle_right\")) {\n handle.style(\"left\", (context._cellSizes.width - context._cellSizes.rightWidth) + \"px\");\n handle.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n handle.style(\"height\", context._cellSizes.rightHeight + \"px\");\n } else if (handle.classed(\"borderHandle_bottom\")) {\n handle.style(\"width\", context._cellSizes.width + \"px\");\n handle.style(\"top\", (context._cellSizes.height - context._cellSizes.bottomHeight - 3) + \"px\");\n } else if (handle.classed(\"borderHandle_left\")) {\n handle.style(\"left\", context._cellSizes.leftWidth + \"px\");\n handle.style(\"height\", context._cellSizes.leftHeight + \"px\");\n handle.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n }\n\n })\n ;\n }\n\n getCellSizes() {\n const context = this;\n context._cellSizes = {};\n const contentRect = this.element().node().getBoundingClientRect();\n context._cellSizes.width = contentRect.width;\n context._cellSizes.height = contentRect.height;\n this.element()\n .selectAll(\"#\" + this.id() + \" > div > div.border-cell\")\n .each(function () {\n const cell = d3Select(this);\n if (typeof cell.node === \"function\") {\n const rect = cell.node().getBoundingClientRect();\n if (cell.classed(\"border-cell-top\")) {\n context._cellSizes.topHeight = rect.height;\n } else if (cell.classed(\"border-cell-left\")) {\n context._cellSizes.leftWidth = rect.width;\n context._cellSizes.leftHeight = rect.height;\n } else if (cell.classed(\"border-cell-right\")) {\n context._cellSizes.rightWidth = rect.width;\n context._cellSizes.rightHeight = rect.height;\n } else if (cell.classed(\"border-cell-bottom\")) {\n context._cellSizes.bottomHeight = rect.height;\n }\n }\n });\n const sizes = [\"height\", \"width\", \"topHeight\", \"bottomHeight\", \"leftHeight\", \"rightHeight\", \"leftWidth\", \"rightWidth\"];\n sizes.forEach(function (size) {\n context._cellSizes[size] = context._cellSizes[size] === undefined ? 0 : context._cellSizes[size];\n });\n }\n\n postUpdate(domNode, element) {\n const context = this;\n this.content().forEach(function (n) {\n if (n._element.node() !== null && n.widget()) {\n const prevBox = n.widget().getBBox(false, true);\n const currBox = n.widget().getBBox(true, true);\n if (prevBox.width !== currBox.width || prevBox.height !== currBox.height) {\n context.lazyRender();\n }\n }\n });\n }\n\n exit(domNode, element) {\n this.content().forEach(w => w.target(null));\n super.exit(domNode, element);\n }\n\n designMode: { (): boolean; (_: boolean): Border; };\n\n content: { (): any[]; (_: any[]): Border; };\n\n gutter: { (): number; (_: number): Border; };\n\n topShrinkWrap: { (): boolean; (_: boolean): Border; };\n leftShrinkWrap: { (): boolean; (_: boolean): Border; };\n rightShrinkWrap: { (): boolean; (_: boolean): Border; };\n bottomShrinkWrap: { (): boolean; (_: boolean): Border; };\n\n topSize: { (): number; (_: number): Border; };\n leftSize: { (): number; (_: number): Border; };\n rightSize: { (): number; (_: number): Border; };\n bottomSize: { (): number; (_: number): Border; };\n\n topPercentage: { (): number; (_: number): Border; };\n leftPercentage: { (): number; (_: number): Border; };\n rightPercentage: { (): number; (_: number): Border; };\n bottomPercentage: { (): number; (_: number): Border; };\n\n surfacePadding: { (): number; (_: number): Border; };\n\n sectionTypes: { (): any[]; (_: any[]): Border; };\n}\nBorder.prototype._class += \" layout_Border\";\n\nBorder.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\n\nBorder.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Intermediate\"] });\n\nBorder.prototype.publish(\"gutter\", 0, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\n\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\"] });\n\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\"] });\n\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\"] });\n\nBorder.prototype.publish(\"surfacePadding\", 0, \"number\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\n\nBorder.prototype.publish(\"sectionTypes\", [], \"array\", \"Section Types sharing an index with 'content' - Used to determine position/size.\", null, { tags: [\"Private\"] });\n","import { BBox, HTMLWidget, Platform, Widget } from \"@hpcc-js/common\";\n\nimport \"../src/Border2.css\";\n\nexport type OverflowT = \"hidden\" | \"scroll\" | \"visible\" | \"auto\";\nexport type ChartPanelSectionT = \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\nexport class WidgetDiv {\n private _div;\n private _overlay: boolean = false;\n private _overflowX: OverflowT = \"visible\";\n private _overflowY: OverflowT = \"visible\";\n private _widget: Widget;\n\n constructor(div) {\n this._div = div;\n }\n\n overlay(): boolean;\n overlay(_: boolean): this;\n overlay(_?: boolean): boolean | this {\n if (!arguments.length) return this._overlay;\n this._overlay = _;\n return this;\n }\n\n overflowX(): OverflowT;\n overflowX(_: OverflowT): this;\n overflowX(_?: OverflowT): OverflowT | this {\n if (!arguments.length) return this._overflowX;\n this._overflowX = _;\n this._div.style(\"overflow-x\", _);\n return this;\n }\n overflowY(): OverflowT;\n overflowY(_: OverflowT): this;\n overflowY(_?: OverflowT): OverflowT | this {\n if (!arguments.length) return this._overflowY;\n this._overflowY = _;\n this._div.style(\"overflow-y\", _);\n return this;\n }\n\n element() {\n return this._div;\n }\n\n node(): SVGElement | HTMLElement {\n return this._div.node();\n }\n\n widget(): Widget;\n widget(_: Widget): this;\n widget(_?: Widget): Widget | this {\n if (!arguments.length) return this._widget;\n if (this._widget !== _) {\n if (this._widget) {\n this._widget.target(null);\n }\n this._widget = _;\n if (this._widget) {\n this._widget.target(this._div.node());\n }\n }\n return this;\n }\n\n resize(size: { width: number, height: number }) {\n if (this._widget) {\n this._div\n .style(\"width\", `${size.width}px`)\n .style(\"height\", `${size.height}px`)\n ;\n this._widget.resize(size);\n }\n return this;\n }\n\n async render(getBBox?, availableHeight?: number, availableWidth?: number): Promise<BBox | undefined> {\n let overflowX = this.overflowX();\n if(!this.overlay() && overflowX === \"visible\") {\n overflowX = null;\n }\n let overflowY = this.overflowY();\n if(!this.overlay() && overflowY === \"visible\") {\n overflowY = null;\n }\n this._div\n .style(\"height\", this.overlay() ? \"0px\" : null)\n .style(\"overflow-x\", overflowX)\n .style(\"overflow-y\", overflowY)\n ;\n if (this._widget) {\n return this._widget.renderPromise().then(w => {\n if (getBBox && this._widget.visible()) {\n const retVal = this._widget.getBBox();\n retVal.width += 8;\n if (availableHeight !== undefined && retVal.height > availableHeight) {\n retVal.width += Platform.getScrollbarWidth();\n }\n if (availableWidth !== undefined && retVal.width > availableWidth) {\n retVal.height += Platform.getScrollbarWidth();\n }\n if (this.overlay()) {\n retVal.height = 0;\n } else {\n retVal.height += 4;\n }\n return retVal;\n }\n return getBBox ? { x: 0, y: 0, width: 0, height: 0 } : undefined;\n });\n } else {\n return Promise.resolve(getBBox ? { x: 0, y: 0, width: 0, height: 0 } : undefined);\n }\n }\n}\n\nexport class Border2 extends HTMLWidget {\n\n protected _bodyElement;\n\n protected _topWA: WidgetDiv;\n protected _leftWA: WidgetDiv;\n protected _centerWA: WidgetDiv;\n protected _rightWA: WidgetDiv;\n protected _bottomWA: WidgetDiv;\n protected _topPrevOverflow: OverflowT;\n protected _leftPrevOverflow: OverflowT;\n protected _rightPrevOverflow: OverflowT;\n protected _bottomPrevOverflow: OverflowT;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n \n const topElement = element.append(\"header\");\n\n this._bodyElement = element.append(\"div\").attr(\"class\", \"body\");\n const centerElement = this._bodyElement.append(\"div\").attr(\"class\", \"center\");\n const leftElement = this._bodyElement.append(\"div\").attr(\"class\", \"lhs\");\n const rightElement = this._bodyElement.append(\"div\").attr(\"class\", \"rhs\");\n\n const bottomElement = element.append(\"div\").attr(\"class\", \"footer\");\n\n this._topWA = new WidgetDiv(topElement);\n this._centerWA = new WidgetDiv(centerElement);\n this._leftWA = new WidgetDiv(leftElement);\n this._rightWA = new WidgetDiv(rightElement);\n this._bottomWA = new WidgetDiv(bottomElement);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._topWA.element().style(\"display\", this.showTop() ? null : \"none\");\n this._rightWA.element().style(\"display\", this.showRight() ? null : \"none\");\n this._bottomWA.element().style(\"display\", this.showBottom() ? null : \"none\");\n this._leftWA.element().style(\"display\", this.showLeft() ? null : \"none\");\n if(this.topOverflowX() !== this._topWA.overflowX()) {\n this._topWA.overflowX(this.topOverflowX());\n }\n if(this.rightOverflowX() !== this._rightWA.overflowX()) {\n this._rightWA.overflowX(this.rightOverflowX());\n }\n if(this.bottomOverflowX() !== this._bottomWA.overflowX()) {\n this._bottomWA.overflowX(this.bottomOverflowX());\n }\n if(this.leftOverflowX() !== this._leftWA.overflowX()) {\n this._leftWA.overflowX(this.leftOverflowX());\n }\n if(this.topOverflowY() !== this._topWA.overflowY()) {\n this._topWA.overflowY(this.topOverflowY());\n }\n if(this.rightOverflowY() !== this._rightWA.overflowY()) {\n this._rightWA.overflowY(this.rightOverflowY());\n }\n if(this.bottomOverflowY() !== this._bottomWA.overflowY()) {\n this._bottomWA.overflowY(this.bottomOverflowY());\n }\n if(this.leftOverflowY() !== this._leftWA.overflowY()) {\n this._leftWA.overflowY(this.leftOverflowY());\n }\n this.element()\n .style(\"width\", `${this.width()}px`)\n .style(\"height\", `${this.height()}px`)\n ;\n }\n\n private targetNull(w?: Widget) {\n if (w) {\n w.target(null);\n }\n }\n\n exit(domNode, element) {\n this.targetNull(this.center());\n this.targetNull(this.bottom());\n this.targetNull(this.right());\n this.targetNull(this.left());\n this.targetNull(this.top());\n super.exit(domNode, element);\n }\n\n swap(sectionA: ChartPanelSectionT, sectionB: ChartPanelSectionT): this {\n const a = this[sectionA]();\n const b = this[sectionB]();\n this.targetNull(a);\n this.targetNull(b);\n this[`_${sectionA}WA`].widget(null);\n this[`_${sectionB}WA`].widget(null);\n this[sectionA](b);\n this[sectionB](a);\n return this;\n }\n\n render(callback?: (w: Widget) => void): this {\n const retVal = super.render(w => {\n if (this._topWA) {\n this._topWA\n .widget(this.top())\n .overlay(this.topOverlay())\n .render(true).then(async topBBox => {\n const bottomBBox: BBox = await this._bottomWA.widget(this.bottom()).render(true, undefined, this.width()) as BBox;\n const availableHeight = this.height() - (topBBox.height + bottomBBox.height);\n const leftBBox: BBox = await this._leftWA.widget(this.left()).render(true, availableHeight) as BBox;\n const rightBBox: BBox = await this._rightWA.widget(this.right()).render(true, availableHeight) as BBox;\n \n if (this.bottomHeight_exists()) {\n bottomBBox.height = this.bottomHeight();\n }\n const bodyWidth = this.width() - (leftBBox.width + rightBBox.width);\n const bodyHeight = this.height() - (topBBox.height + bottomBBox.height);\n \n const centerOverflowX = this.centerOverflowX();\n const centerOverflowY = this.centerOverflowY();\n\n const scrollCenterX = [\"auto\", \"scroll\"].indexOf(centerOverflowX) !== -1;\n const scrollCenterY = [\"auto\", \"scroll\"].indexOf(centerOverflowY) !== -1;\n if(scrollCenterX || scrollCenterY) {\n this._centerWA\n .overflowX(this.centerOverflowX())\n .overflowY(this.centerOverflowY())\n .widget(this.center())\n .resize({\n width: bodyWidth,\n height: bodyHeight\n })\n .render()\n ;\n }\n this._bodyElement.style(\"height\", `${bodyHeight}px`);\n const promises = [\n this._topWA\n .overflowX(this.topOverflowX())\n .overflowY(this.topOverflowY())\n .resize({\n width: this.width(),\n height: topBBox.height\n })\n .render(),\n this._leftWA\n .overflowX(this.leftOverflowX())\n .overflowY(this.leftOverflowY())\n .resize({\n width: leftBBox.width,\n height: bodyHeight\n })\n .render(),\n this._rightWA\n .overflowX(this.rightOverflowX())\n .overflowY(this.rightOverflowY())\n .resize({\n width: rightBBox.width,\n height: bodyHeight\n })\n .render(),\n this._centerWA\n .overflowX(this.centerOverflowX())\n .overflowY(this.centerOverflowY())\n .widget(this.center())\n .resize({\n width: bodyWidth,\n height: bodyHeight\n })\n .render(),\n this._bottomWA\n .overflowX(this.bottomOverflowX())\n .overflowY(this.bottomOverflowY())\n .resize({\n width: this.width(),\n height: bottomBBox.height\n })\n .render()\n ];\n Promise.all(promises).then(promises => {\n if (callback) {\n callback(this);\n }\n });\n })\n ;\n } else {\n if (callback) {\n callback(this);\n }\n }\n });\n return retVal;\n }\n}\nBorder2.prototype._class += \" layout_Border2\";\n\nexport interface Border2 {\n top(): Widget;\n top(_: Widget): this;\n topOverlay(): boolean;\n topOverlay(_: boolean): this;\n left(): Widget;\n left(_: Widget): this;\n center(): Widget;\n center(_: Widget): this;\n right(): Widget;\n right(_: Widget): this;\n bottom(): Widget;\n bottom(_: Widget): this;\n bottomHeight(): number;\n bottomHeight(_: number): this;\n bottomHeight_exists(): boolean;\n topOverflowX(): OverflowT;\n topOverflowX(_: OverflowT): this;\n rightOverflowX(): OverflowT;\n rightOverflowX(_: OverflowT): this;\n bottomOverflowX(): OverflowT;\n bottomOverflowX(_: OverflowT): this;\n leftOverflowX(): OverflowT;\n leftOverflowX(_: OverflowT): this;\n centerOverflowX(): OverflowT;\n centerOverflowX(_: OverflowT): this;\n topOverflowY(): OverflowT;\n topOverflowY(_: OverflowT): this;\n rightOverflowY(): OverflowT;\n rightOverflowY(_: OverflowT): this;\n bottomOverflowY(): OverflowT;\n bottomOverflowY(_: OverflowT): this;\n leftOverflowY(): OverflowT;\n leftOverflowY(_: OverflowT): this;\n centerOverflowY(): OverflowT;\n centerOverflowY(_: OverflowT): this;\n showTop(): boolean;\n showTop(_: boolean): this;\n showRight(): boolean;\n showRight(_: boolean): this;\n showBottom(): boolean;\n showBottom(_: boolean): this;\n showLeft(): boolean;\n showLeft(_: boolean): this;\n topOverflowX_default(_: OverflowT);\n rightOverflowX_default(_: OverflowT);\n bottomOverflowX_default(_: OverflowT);\n leftOverflowX_default(_: OverflowT);\n centerOverflowX_default(_: OverflowT);\n topOverflowY_default(_: OverflowT);\n rightOverflowY_default(_: OverflowT);\n bottomOverflowY_default(_: OverflowT);\n leftOverflowY_default(_: OverflowT);\n centerOverflowY_default(_: OverflowT);\n}\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\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"rightOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the right widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"bottomOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the bottom widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"leftOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the left widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"centerOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the center widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"topOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the top widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"rightOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the right widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"bottomOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the bottom widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"leftOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the left widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"centerOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the center widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"top\", null, \"widget\", \"Top Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"topOverlay\", false, \"boolean\", \"Overlay Top Widget\");\nBorder2.prototype.publish(\"left\", null, \"widget\", \"Left Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"center\", null, \"widget\", \"Center Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"right\", null, \"widget\", \"Right Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"bottom\", null, \"widget\", \"Bottom Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"bottomHeight\", null, \"number\", \"Bottom Fixed Height\", undefined, { optional: true });\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\n\nimport \"../src/Carousel.css\";\n\nexport class Carousel extends HTMLWidget {\n\n protected _prevActive: number = 0;\n protected _root;\n\n activeWidget(): Widget {\n return this.widgets()[this.active()];\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._root = element.append(\"div\")\n .attr(\"id\", `${this.id()}_root`)\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const active = this.active();\n const width = this.width();\n this._root\n .style(\"width\", `${width}px`)\n .style(\"height\", `${this.height()}px`)\n ;\n const widgetElements = this._root.selectAll(`#${this.id()}_root > .carouselItem`).data(this.widgets(), d => d.id());\n const update = widgetElements.enter().append(\"div\")\n .attr(\"class\", \"carouselItem\")\n .each(function (w) {\n w.target(this);\n })\n .merge(widgetElements)\n .style(\"left\", (d, i) => `${(i - this._prevActive) * width}px`)\n .style(\"width\", `${width}px`)\n ;\n if (this._prevActive !== active) {\n update\n .style(\"display\", (d, i) => i === this._prevActive || i === active ? null : \"none\") // Must be called before render callback (not inside transition)\n .transition().duration(this.transitionDuration())\n .style(\"left\", (d, i) => `${(i - active) * width}px`)\n .on(\"end\", function (d, i) {\n d3Select(this).style(\"display\", () => i === active ? null : \"none\");\n })\n ;\n this._prevActive = active;\n }\n widgetElements.exit()\n .each(function (w) {\n w.target(null);\n })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n this.widgets().forEach(w => w.target(null));\n super.exit(domNode, element);\n }\n\n render(callback): this {\n return super.render(w => {\n if (!this.visible() || this.isDOMHidden()) {\n if (callback) {\n callback(w);\n }\n } else {\n const aw = this.activeWidget();\n if (aw) {\n aw\n .resize(this.size())\n .render(w2 => {\n if (callback) {\n callback(w);\n }\n })\n ;\n }\n }\n });\n }\n}\nCarousel.prototype._class += \" layout_Carousel\";\n\nexport interface Carousel {\n widgets(): Widget[];\n widgets(_: Widget[]): this;\n active(): number;\n active(_: number): this;\n transitionDuration(): Widget[];\n transitionDuration(_: Widget[]): this;\n}\n\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","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","import { select } from 'd3-selection'\nimport { format, formatPrefix } from 'd3-format'\n\nconst d3_identity = (d) => d\n\nconst d3_reverse = (arr) => {\n const mirror = [];\n for (let i = 0, l = arr.length; i < l; i++) {\n mirror[i] = arr[l-i-1];\n }\n return mirror;\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst d3_textWrapping = (text, width) => {\n text.each(function() {\n var text = select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.2, //ems\n y = text.attr(\"y\"),\n dy = parseFloat(text.attr(\"dy\")) || 0,\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", dy + \"em\");\n\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + dy + \"em\").text(word);\n }\n }\n });\n}\n\n\nconst d3_mergeLabels = (gen=[], labels, domain, range) => {\n\n if (typeof labels === \"object\"){\n if(labels.length === 0) return gen;\n\n let i = labels.length;\n for (; i < gen.length; i++) {\n labels.push(gen[i]);\n }\n return labels;\n } else if (typeof labels === \"function\") {\n const customLabels = []\n const genLength = gen.length\n for (let i=0; i < genLength; i++){\n customLabels.push(labels({\n i,\n genLength,\n generatedLabels : gen,\n domain,\n range }))\n }\n return customLabels\n }\n\n return gen;\n }\n\nconst d3_linearLegend = (scale, cells, labelFormat) => {\n let data = [];\n\n if (cells.length > 1){\n data = cells;\n\n } else {\n const domain = scale.domain(),\n increment = (domain[domain.length - 1] - domain[0])/(cells - 1)\n let i = 0;\n\n for (; i < cells; i++){\n data.push(domain[0] + i*increment);\n }\n }\n\n const labels = data.map(labelFormat);\n return {data: data,\n labels: labels,\n feature: d => scale(d)};\n}\n\nconst d3_quantLegend = (scale, labelFormat, labelDelimiter) => {\n const labels = scale.range().map( d => {\n const invert = scale.invertExtent(d);\n return labelFormat(invert[0]) + \" \" + labelDelimiter + \" \" + labelFormat(invert[1]);\n });\n\n return {data: scale.range(),\n labels: labels,\n feature: d3_identity\n };\n}\n\nconst d3_ordinalLegend= scale => ({data: scale.domain(),\n labels: scale.domain(),\n feature: d => scale(d) }\n)\n\nconst d3_cellOver = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellover\", obj, d);\n}\n\nconst d3_cellOut = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellout\", obj, d);\n}\n\nconst d3_cellClick = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellclick\", obj, d);\n}\n\n\nexport default {\n\n d3_drawShapes: (shape, shapes, shapeHeight, shapeWidth, shapeRadius, path) => {\n if (shape === \"rect\"){\n shapes.attr(\"height\", shapeHeight)\n .attr(\"width\", shapeWidth);\n\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius)\n\n } else if (shape === \"line\") {\n shapes.attr(\"x1\", 0).attr(\"x2\", shapeWidth).attr(\"y1\", 0).attr(\"y2\", 0);\n\n } else if (shape === \"path\") {\n shapes.attr(\"d\", path);\n }\n },\n\n d3_addText: function (svg, enter, labels, classPrefix, labelWidth){\n enter.append(\"text\").attr(\"class\", classPrefix + \"label\");\n const text = svg.selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .data(labels)\n .text(d3_identity);\n\n if (labelWidth){\n svg.selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .call(d3_textWrapping, labelWidth)\n }\n\n return text\n },\n\n d3_calcType: function (scale, ascending, cells, labels, labelFormat, labelDelimiter){\n const type = scale.invertExtent ?\n d3_quantLegend(scale, labelFormat, labelDelimiter) : scale.ticks ?\n d3_linearLegend(scale, cells, labelFormat) : d3_ordinalLegend(scale);\n\n //for d3.scaleSequential that doesn't have a range function\n const range = scale.range && scale.range() || scale.domain()\n type.labels = d3_mergeLabels(type.labels, labels, scale.domain(), range);\n\n if (ascending) {\n type.labels = d3_reverse(type.labels);\n type.data = d3_reverse(type.data);\n }\n\n return type;\n },\n\n d3_filterCells: (type, cellFilter) => {\n let filterCells = type.data.map((d, i) => ({ data: d, label: type.labels[i] }))\n .filter(cellFilter)\n const dataValues = filterCells.map(d => d.data)\n const labelValues = filterCells.map(d => d.label)\n type.data = type.data.filter(d => dataValues.indexOf(d) !== -1)\n type.labels = type.labels.filter(d => labelValues.indexOf(d) !== -1)\n return type\n },\n\n d3_placement: (orient, cell, cellTrans, text, textTrans, labelAlign) => {\n cell.attr(\"transform\", cellTrans);\n text.attr(\"transform\", textTrans);\n if (orient === \"horizontal\"){\n text.style(\"text-anchor\", labelAlign);\n }\n },\n\n d3_addEvents: function(cells, dispatcher){\n cells.on(\"mouseover.legend\", function (d) { d3_cellOver(dispatcher, d, this); })\n .on(\"mouseout.legend\", function (d) { d3_cellOut(dispatcher, d, this); })\n .on(\"click.legend\", function (d) { d3_cellClick(dispatcher, d, this); });\n },\n\n d3_title: (svg, title, classPrefix, titleWidth) => {\n if (title !== \"\"){\n\n const titleText = svg.selectAll('text.' + classPrefix + 'legendTitle');\n\n titleText.data([title])\n .enter()\n .append('text')\n .attr('class', classPrefix + 'legendTitle');\n\n svg.selectAll('text.' + classPrefix + 'legendTitle')\n .text(title)\n\n if (titleWidth){\n svg.selectAll('text.' + classPrefix + 'legendTitle')\n .call(d3_textWrapping, titleWidth)\n }\n\n const cellsSvg = svg.select('.' + classPrefix + 'legendCells')\n const yOffset = svg.select('.' + classPrefix + 'legendTitle').nodes()\n .map(d => d.getBBox().height)[0],\n\n xOffset = -cellsSvg.nodes().map(function(d) { return d.getBBox().x})[0];\n cellsSvg.attr('transform', 'translate(' + xOffset + ',' + (yOffset) + ')');\n\n }\n },\n\n d3_defaultLocale: {\n format,\n formatPrefix\n },\n\n d3_defaultFormatSpecifier: '.01f',\n\n d3_defaultDelimiter: 'to'\n}\n","import helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\n\nimport { sum } from \"d3-array\"\n\nexport default function color() {\n let scale = scaleLinear(),\n shape = \"rect\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 2,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\n useClass = false,\n title = \"\",\n locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelOffset = 10,\n labelAlign = \"middle\",\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n path,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\")\n\n function legend(svg) {\n const type = helper.d3_calcType(\n scale,\n ascending,\n cells,\n labels,\n locale.format(specifier),\n labelDelimiter\n ),\n legendG = svg.selectAll(\"g\").data([scale])\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\n\n const cellEnter = cell\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n let shapes = svg\n .selectAll(\n \"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\"\n )\n .data(type.data)\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher)\n\n cell\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n\n shapes = shapes.merge(shapes)\n\n helper.d3_drawShapes(\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n path\n )\n const text = helper.d3_addText(\n svg,\n cellEnter,\n type.labels,\n classPrefix,\n labelWrap\n )\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell)\n\n // sets placement\n const textSize = text.nodes().map(d => d.getBBox()),\n shapeSize = shapes.nodes().map(d => d.getBBox())\n //sets scale\n //everything is fill except for line which is stroke,\n if (!useClass) {\n if (shape == \"line\") {\n shapes.style(\"stroke\", type.feature)\n } else {\n shapes.style(\"fill\", type.feature)\n }\n } else {\n shapes.attr(\"class\", d => `${classPrefix}swatch ${type.feature(d)}`)\n }\n\n let cellTrans,\n textTrans,\n textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? 0.5 : 1\n\n //positions cells and text\n if (orient === \"vertical\") {\n const cellSize = textSize.map((d, i) =>\n Math.max(d.height, shapeSize[i].height)\n )\n\n cellTrans = (d, i) => {\n const height = sum(cellSize.slice(0, i))\n return `translate(0, ${height + i * shapePadding})`\n }\n\n textTrans = (d, i) =>\n `translate( ${shapeSize[i].width +\n shapeSize[i].x +\n labelOffset}, ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\n } else if (orient === \"horizontal\") {\n cellTrans = (d, i) =>\n `translate(${i * (shapeSize[i].width + shapePadding)},0)`\n textTrans = (d, i) => `translate(${shapeSize[i].width * textAlign +\n shapeSize[i].x},\n ${shapeSize[i].height + shapeSize[i].y + labelOffset + 8})`\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign)\n helper.d3_title(svg, title, classPrefix, titleWidth)\n\n cell.transition().style(\"opacity\", 1)\n }\n\n legend.scale = function(_) {\n if (!arguments.length) return scale\n scale = _\n return legend\n }\n\n legend.cells = function(_) {\n if (!arguments.length) return cells\n if (_.length > 1 || _ >= 2) {\n cells = _\n }\n return legend\n }\n\n legend.cellFilter = function(_) {\n if (!arguments.length) return cellFilter\n cellFilter = _\n return legend\n }\n\n legend.shape = function(_, d) {\n if (!arguments.length) return shape\n if (\n _ == \"rect\" ||\n _ == \"circle\" ||\n _ == \"line\" ||\n (_ == \"path\" && typeof d === \"string\")\n ) {\n shape = _\n path = d\n }\n return legend\n }\n\n legend.shapeWidth = function(_) {\n if (!arguments.length) return shapeWidth\n shapeWidth = +_\n return legend\n }\n\n legend.shapeHeight = function(_) {\n if (!arguments.length) return shapeHeight\n shapeHeight = +_\n return legend\n }\n\n legend.shapeRadius = function(_) {\n if (!arguments.length) return shapeRadius\n shapeRadius = +_\n return legend\n }\n\n legend.shapePadding = function(_) {\n if (!arguments.length) return shapePadding\n shapePadding = +_\n return legend\n }\n\n legend.labels = function(_) {\n if (!arguments.length) return labels\n labels = _\n return legend\n }\n\n legend.labelAlign = function(_) {\n if (!arguments.length) return labelAlign\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _\n }\n return legend\n }\n\n legend.locale = function(_) {\n if (!arguments.length) return locale\n locale = formatLocale(_)\n return legend\n }\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return legend.locale().format(specifier)\n specifier = formatSpecifier(_)\n return legend\n }\n\n legend.labelOffset = function(_) {\n if (!arguments.length) return labelOffset\n labelOffset = +_\n return legend\n }\n\n legend.labelDelimiter = function(_) {\n if (!arguments.length) return labelDelimiter\n labelDelimiter = _\n return legend\n }\n\n legend.labelWrap = function(_) {\n if (!arguments.length) return labelWrap\n labelWrap = _\n return legend\n }\n\n legend.useClass = function(_) {\n if (!arguments.length) return useClass\n if (_ === true || _ === false) {\n useClass = _\n }\n return legend\n }\n\n legend.orient = function(_) {\n if (!arguments.length) return orient\n _ = _.toLowerCase()\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _\n }\n return legend\n }\n\n legend.ascending = function(_) {\n if (!arguments.length) return ascending\n ascending = !!_\n return legend\n }\n\n legend.classPrefix = function(_) {\n if (!arguments.length) return classPrefix\n classPrefix = _\n return legend\n }\n\n legend.title = function(_) {\n if (!arguments.length) return title\n title = _\n return legend\n }\n\n legend.titleWidth = function(_) {\n if (!arguments.length) return titleWidth\n titleWidth = _\n return legend\n }\n\n legend.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n return legend\n }\n\n legend.on = function() {\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value\n }\n\n return legend\n}\n","import { instanceOfIHighlight } from \"@hpcc-js/api\";\nimport { Database, Palette, SVGWidget, Widget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleOrdinal as d3ScaleOrdinal } from \"d3-scale\";\nimport {\n symbol as d3Symbol,\n symbolCircle as d3SymbolCircle,\n symbolCross as d3SymbolCross,\n symbolDiamond as d3SymbolDiamond,\n symbolSquare as d3SymbolSquare,\n symbolStar as d3SymbolStar,\n symbolTriangle as d3SymbolTriangle,\n symbolWye as d3SymbolWye\n} from \"d3-shape\";\nimport { legendColor as d3LegendColor } from \"d3-svg-legend\";\nimport { ChartPanel } from \"./ChartPanel\";\n\nexport class Legend extends SVGWidget {\n _owner: ChartPanel;\n _targetWidget: Widget;\n _targetWidgetMonitor;\n _legendOrdinal;\n _disabled: string[] = [];\n\n private _symbolTypeMap = {\n \"circle\": d3SymbolCircle,\n \"cross\": d3SymbolCross,\n \"diamond\": d3SymbolDiamond,\n \"square\": d3SymbolSquare,\n \"star\": d3SymbolStar,\n \"triangle\": d3SymbolTriangle,\n \"wye\": d3SymbolWye\n };\n\n constructor(owner: ChartPanel) {\n super();\n this._owner = owner;\n this._drawStartPos = \"origin\";\n\n const context = this;\n this._legendOrdinal = d3LegendColor()\n .shape(\"path\", d3Symbol().type(d3SymbolCircle).size(150)())\n .shapePadding(10)\n .shapeRadius(10)\n .on(\"cellclick\", function (d) {\n context.onClick(d, this);\n })\n .on(\"cellover\", (d) => {\n context.onOver(d, this);\n })\n .on(\"cellout\", (d) => {\n context.onOut(d, this);\n })\n ;\n }\n\n isDisabled(d: string | Database.Field): boolean {\n if (typeof d === \"undefined\") {\n return false;\n } else if (typeof d === \"string\") {\n return d.indexOf(\"__\") === 0 || this._disabled.indexOf(d) >= 0;\n } else if (d instanceof Database.Field) {\n return d.id().indexOf(\"__\") === 0 || this._disabled.indexOf(d.id()) >= 0;\n }\n return this._disabled.indexOf(d) >= 0;\n }\n\n filteredFields(): Database.Field[] {\n switch (this.dataFamily()) {\n case \"2D\":\n return this.fields();\n case \"ND\":\n return this.fields().filter(d => !this.isDisabled(d));\n }\n return this.fields();\n }\n\n filteredColumns(): string[] {\n switch (this.dataFamily()) {\n case \"2D\":\n return this.columns();\n case \"ND\":\n return this.columns().filter(d => !this.isDisabled(d));\n }\n return this.columns();\n }\n\n filteredData(): any[][] {\n switch (this.dataFamily()) {\n case \"2D\":\n return this.data().filter(row => !this.isDisabled(row[0]));\n case \"ND\":\n const disabledCols: { [key: number]: boolean } = {};\n let anyDisabled: boolean = false;\n this.columns().forEach((col, idx) => {\n const disabled = this.isDisabled(col);\n disabledCols[idx] = disabled;\n if (disabled) {\n anyDisabled = true;\n }\n });\n return !anyDisabled ? this.data() : this.data().map(row => {\n return row.filter((cell, idx) => !disabledCols[idx]);\n });\n }\n return this.data();\n }\n\n isRainbow() {\n const widget = this.getWidget();\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\n }\n\n targetWidget(): Widget;\n targetWidget(_: Widget): this;\n targetWidget(_?: Widget): Widget | this {\n if (!arguments.length) return this._targetWidget;\n this._targetWidget = _;\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n if (this._targetWidget) {\n const context = this;\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\n switch (key) {\n case \"chart\":\n case \"columns\":\n case \"data\":\n case \"paletteID\":\n context.lazyRender();\n break;\n }\n });\n }\n return this;\n }\n\n getWidget() {\n if (this._targetWidget) {\n switch (this._targetWidget.classID()) {\n case \"composite_MultiChart\":\n return (this._targetWidget as any).chart();\n }\n }\n return this._targetWidget;\n }\n\n getPalette(): Palette.OrdinalPaletteFunc | Palette.RainbowPaletteFunc {\n const widget = this.getWidget();\n if (widget && widget._palette) {\n switch (widget._palette.type()) {\n case \"ordinal\":\n return Palette.ordinal(widget._palette.id());\n case \"rainbow\":\n return Palette.rainbow(widget._palette.id());\n }\n }\n return Palette.ordinal(\"default\");\n }\n\n getPaletteType() {\n return this.getPalette().type();\n }\n\n fillColorFunc() {\n const widget = this.getWidget();\n if (widget && widget.fillColor) {\n // Legend will render before the widget, so its possible the widgets palette will not have switched yet...\n if (widget._palette && widget.paletteID && widget._palette.name !== widget.paletteID()) {\n widget._palette = widget._palette.switch(widget.paletteID());\n }\n return (row, col, sel) => {\n return widget.fillColor(row, col, sel);\n };\n }\n const palette = Palette.ordinal(widget && widget.paletteID ? widget.paletteID() || \"default\" : \"default\");\n return (row, col, sel) => {\n return palette(col);\n };\n }\n\n fillColor(row, col, sel) {\n return this.fillColorFunc()(row, col, sel);\n }\n\n protected _g;\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\")\n .attr(\"class\", \"legendOrdinal\")\n ;\n }\n\n calcMetaData() {\n let dataArr = [];\n let total = 0;\n let maxLabelWidth = 0;\n const colLength = this.columns().length;\n \n if (this._targetWidget) {\n const columns = this.columns();\n switch (this.getPaletteType()) {\n case \"ordinal\":\n const fillColor = this.fillColorFunc();\n let val = 0;\n switch (this.dataFamily()) {\n case \"2D\":\n dataArr = this.data().map(function (n, i) {\n val = this.data()[i].slice(1, colLength).reduce((acc, n) => acc + n, 0);\n const disabled = this.isDisabled(n[0]);\n if(!disabled)total += val;\n const label = n[0] + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n const textSize = this.textSize(label);\n if(maxLabelWidth < textSize.width)maxLabelWidth = textSize.width;\n return [fillColor(n, n[0], false), n[0], label];\n }, this);\n break;\n case \"ND\":\n const widgetColumns = this.columns().filter(col => col.indexOf(\"__\") !== 0);\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n, i) {\n val = this.data().reduce((acc, n) => acc + n[i + 1], 0);\n const disabled = this.isDisabled(columns[i+1]);\n const label = n + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n if(!disabled)total += val;\n const textSize = this.textSize(label);\n if(maxLabelWidth < textSize.width)maxLabelWidth = textSize.width;\n return [fillColor(undefined, n, false), n, label];\n }, this);\n break;\n default:\n const widgetColumns2 = this.columns();\n dataArr = widgetColumns2.map(function (n) {\n return [fillColor(undefined, n, false), n];\n }, this);\n break;\n }\n break;\n case \"rainbow\":\n const palette = this.getPalette() as Palette.RainbowPaletteFunc;\n const format = d3Format(this.rainbowFormat());\n const widget = this.getWidget();\n const steps = this.rainbowBins();\n const weightMin: number = widget._dataMinWeight;\n const weightMax: number = widget._dataMaxWeight;\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n dataArr.push([palette(weightMin, weightMin, weightMax), format(weightMin)]);\n for (let x = 1; x < steps - 1; ++x) {\n let mid = stepWeightDiff * x;\n if (Math.floor(mid) > parseInt(dataArr[0][1])) {\n mid = Math.floor(mid);\n }\n dataArr.push([palette(mid, weightMin, weightMax), format(mid)]);\n }\n dataArr.push([palette(weightMax, weightMin, weightMax), format(weightMax)]);\n break;\n }\n }\n return {\n dataArr,\n total,\n maxLabelWidth\n };\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n \n const { dataArr, maxLabelWidth, total } = this.calcMetaData();\n\n const radius = this.shapeRadius();\n const size = this.radiusToSymbolSize(radius);\n\n const strokeWidth = 1;\n\n let shapePadding = this.itemPadding();// + strokeWidth;\n if(this.orientation() === \"horizontal\") {\n shapePadding += maxLabelWidth - (radius * 2);\n }\n\n const ordinal = d3ScaleOrdinal()\n .domain(dataArr.map(row => row[1]))\n .range(dataArr.map(row => row[0]));\n this._legendOrdinal\n .shape(\"path\", d3Symbol().type(this._symbolTypeMap[this.symbolType()]).size(size)())\n .orient(this.orientation())\n .title(this.title())\n .labelWrap(this.labelMaxWidth())\n .labelAlign(this.labelAlign())\n .shapePadding(shapePadding)\n .scale(ordinal)\n .labels(d => dataArr[d.i][2])\n ;\n \n this._g.call(this._legendOrdinal);\n\n this.updateDisabled(element, dataArr);\n\n const legendCellsBbox = this._g.select(\".legendCells\").node().getBBox();\n let offsetX = Math.abs(legendCellsBbox.x);\n let offsetY = Math.abs(legendCellsBbox.y) + strokeWidth;\n \n if(this.orientation() === \"horizontal\") {\n if(this.labelAlign() === \"start\") {\n offsetX += strokeWidth;\n } else if(this.labelAlign() === \"end\") {\n offsetX -= strokeWidth;\n }\n if(this.width() > legendCellsBbox.width) {\n const extraWidth = this.width() - legendCellsBbox.width;\n offsetX += (extraWidth/2);\n }\n } else if (this.orientation() === \"vertical\") {\n offsetX += strokeWidth;\n if(this._containerSize.height > legendCellsBbox.height) {\n const extraHeight = this.height() - legendCellsBbox.height;\n offsetY += (extraHeight/2);\n }\n }\n\n this._g.attr(\"transform\", `translate(${offsetX}, ${offsetY})`);\n this.pos({\n x: 0,\n y: 0\n });\n this._legendOrdinal\n .labelOffset(this.itemPadding())\n ;\n const legendTotal = this._g.selectAll(\".legendTotal\").data(dataArr.length && this.showLegendTotal() ? [total] : []);\n const totalText = `Total: ${total}`;\n const totalOffsetX = -offsetX;\n const totalOffsetY = legendCellsBbox.height + this.itemPadding() + strokeWidth;\n this.enableOverflowScroll(false);\n this.enableOverflow(true);\n legendTotal\n .enter()\n .append(\"text\")\n .classed(\"legendTotal\", true)\n .merge(legendTotal)\n .attr(\"transform\", `translate(${totalOffsetX}, ${totalOffsetY})`)\n .text(totalText)\n ;\n legendTotal.exit().remove();\n }\n\n updateDisabled(element, dataArr) {\n element\n .style(\"cursor\", \"pointer\")\n .selectAll(\"path.swatch\").filter((d, i) => i < dataArr.length)\n .style(\"stroke\", (d, i) => dataArr[i][0])\n .style(\"fill\", (d, i) =>\n this._disabled.indexOf(d) < 0 ? dataArr[i][0] : \"white\"\n )\n ;\n }\n\n postUpdate(domNode, element) {\n let w;\n if (this._boundingBox) {\n w = this._boundingBox.width;\n this._boundingBox.width = this._size.width;\n }\n super.postUpdate(domNode, element);\n if (w !== undefined) {\n this._boundingBox.width = w;\n }\n this._parentRelativeDiv.style(\"overflow\", \"hidden\");\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n radiusToSymbolSize(radius) {\n const circleSize = Math.pow(radius, 2) * Math.PI;\n switch(this.symbolType()){\n case \"star\":\n return circleSize * 0.45;\n case \"triangle\":\n return circleSize * 0.65;\n case \"cross\":\n case \"diamond\":\n case \"wye\":\n return circleSize * 0.75;\n case \"circle\":\n return circleSize;\n case \"square\":\n return circleSize * 1.3;\n }\n }\n\n onClick(d, domNode) {\n switch (this.getPaletteType()) {\n case \"ordinal\":\n switch (this.dataFamily()) {\n case \"2D\":\n case \"ND\":\n const disabledIdx = this._disabled.indexOf(d);\n if (disabledIdx < 0) {\n this._disabled.push(d);\n } else {\n this._disabled.splice(disabledIdx, 1);\n }\n this._owner.refreshColumns();\n this._owner.refreshData();\n this._owner.render();\n break;\n }\n break;\n }\n }\n\n onOver(d, domNode) {\n if (instanceOfIHighlight(this._owner)) {\n switch (this.getPaletteType()) {\n case \"ordinal\":\n switch (this.dataFamily()) {\n case \"2D\":\n case \"ND\":\n if (this._disabled.indexOf(d) < 0) {\n this._owner.highlightColumn(d);\n }\n break;\n }\n break;\n }\n }\n }\n\n onOut(d, domNode) {\n if (instanceOfIHighlight(this._owner)) {\n switch (this.getPaletteType()) {\n case \"ordinal\":\n switch (this.dataFamily()) {\n case \"2D\":\n case \"ND\":\n this._owner.highlightColumn();\n break;\n }\n break;\n }\n }\n }\n\n onDblClick(rowData, rowIdx) {\n console.log(\"Legend onDblClick method\");\n console.log(\"rowData: \" + rowData);\n console.log(\"rowIdx: \" + rowIdx);\n }\n\n onMouseOver(rowData, rowIdx) {\n console.log(\"Legend onMouseOver method\");\n console.log(\"rowData: \" + rowData);\n console.log(\"rowIdx: \" + rowIdx);\n }\n private _containerSize;\n resize(_size?: { width: number, height: number }) {\n let retVal;\n if(this.fitToContent()) {\n this._containerSize = _size;\n const bbox = this.getBBox();\n if(_size.width > bbox.width){\n bbox.width = _size.width;\n }\n if(_size.height > bbox.height){\n bbox.height = _size.height;\n }\n retVal = super.resize.apply(this, [{...bbox}]);\n } else {\n retVal = super.resize.apply(this, arguments);\n }\n return retVal;\n }\n\n}\nLegend.prototype._class += \" layout_Legend\";\n\nexport interface Legend {\n title(): string;\n title(_: string): this;\n symbolType(): \"circle\" | \"cross\" | \"diamond\" | \"square\" | \"star\" | \"triangle\" | \"wye\";\n symbolType(_: \"circle\" | \"cross\" | \"diamond\" | \"square\" | \"star\" | \"triangle\" | \"wye\"): this;\n labelMaxWidth(): number;\n labelMaxWidth(_: number): this;\n orientation(): \"vertical\" | \"horizontal\";\n orientation(_: \"vertical\" | \"horizontal\"): this;\n orientation_exists: () => boolean;\n dataFamily(): \"1D\" | \"2D\" | \"ND\" | \"map\" | \"graph\" | \"any\";\n dataFamily(_: \"1D\" | \"2D\" | \"ND\" | \"map\" | \"graph\" | \"any\"): this;\n dataFamily_exists: () => boolean;\n rainbowFormat(): string;\n rainbowFormat(_: string): this;\n rainbowFormat_exists: () => boolean;\n rainbowBins(): number;\n rainbowBins(_: number): this;\n rainbowBins_exists: () => boolean;\n showSeriesTotal(): boolean;\n showSeriesTotal(_: boolean): this;\n showLegendTotal(): boolean;\n showLegendTotal(_: boolean): this;\n itemPadding(): number;\n itemPadding(_: number): this;\n shapeRadius(): number;\n shapeRadius(_: number): this;\n fitToContent(): boolean;\n fitToContent(_: boolean): this;\n labelAlign(): \"start\" | \"middle\" | \"end\";\n labelAlign(_: \"start\" | \"middle\" | \"end\"): this;\n}\nLegend.prototype.publish(\"title\", \"\", \"string\", \"Title\");\nLegend.prototype.publish(\"symbolType\", \"circle\", \"set\", \"Shape of each legend item\", [\"circle\", \"cross\", \"diamond\", \"square\", \"star\", \"triangle\", \"wye\"]);\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\", [\"1D\", \"2D\", \"ND\", \"map\", \"graph\", \"any\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\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)\", [\"start\", \"middle\", \"end\"], { optional: true, disable: (w: any) => w.orientation() === \"vertical\" });\n","import { HTMLWidget, ISize, Widget } from \"@hpcc-js/common\";\n\nimport \"../src/Modal.css\";\n\nexport class Modal extends HTMLWidget {\n\n protected _widget: Widget;\n\n protected _relativeTarget: HTMLElement;\n\n protected _fade;\n protected _modal;\n protected _modalHeader;\n protected _modalBody;\n protected _modalHeaderAnnotations;\n protected _modalHeaderCloseButton;\n _close: () => void;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n closeModal() {\n this.visible(false);\n }\n\n getRelativeTarget() {\n let relativeTarget;\n if (this.relativeTargetId()) {\n relativeTarget = document.getElementById(this.relativeTargetId());\n if (relativeTarget) {\n return relativeTarget;\n }\n }\n if (!relativeTarget) {\n relativeTarget = this.locateAncestor(\"layout_Grid\");\n if (relativeTarget && relativeTarget.element) {\n return relativeTarget.element().node();\n }\n }\n return document.body;\n }\n\n setModalSize(): ISize {\n if (this.fixedHeight() !== null && this.fixedWidth() !== null) {\n this._modal\n .style(\"height\", this.fixedHeight())\n .style(\"width\", this.fixedWidth())\n .style(\"min-height\", null)\n .style(\"min-width\", null)\n .style(\"max-height\", null)\n .style(\"max-width\", null)\n ;\n } else if (this.minHeight() || this.minWidth()) {\n this._modal\n .style(\"min-height\", this.minHeight())\n .style(\"min-width\", this.minWidth())\n .style(\"max-height\", this.maxHeight())\n .style(\"max-width\", this.maxWidth())\n ;\n }\n const modalRect = this._modal.node().getBoundingClientRect();\n const headerRect = this._modalHeader.node().getBoundingClientRect();\n this._modalBody\n .style(\"height\", (modalRect.height - headerRect.height) + \"px\")\n .style(\"width\", modalRect.width);\n\n return modalRect;\n }\n\n setFadePosition(rect) {\n this._fade\n .style(\"top\", rect.top + \"px\")\n .style(\"left\", rect.left + \"px\")\n .style(\"width\", rect.width + \"px\")\n .style(\"height\", rect.height + \"px\")\n ;\n }\n\n setModalPosition(rect) {\n const modalRect = this.setModalSize();\n if (this.fixedTop() !== null && this.fixedLeft() !== null) {\n this._modal\n .style(\"top\", `calc(${this.fixedTop()} + ${rect.top}px)`)\n .style(\"left\", `calc(${this.fixedLeft()} + ${rect.left}px)`)\n ;\n } else if (this.fixedHeight() !== null && this.fixedWidth() !== null) {\n this._modal\n .style(\"top\", (rect.top + (rect.height / 2) - (modalRect.height / 2)) + \"px\")\n .style(\"left\", (rect.left + (rect.width / 2) - (modalRect.width / 2)) + \"px\")\n ;\n } else if (this.minHeight() || this.minWidth()) {\n const contentRect = this._modal.node().getBoundingClientRect();\n this._modal\n .style(\"top\", (rect.top + (rect.height / 2) - (contentRect.height / 2)) + \"px\")\n .style(\"left\", (rect.left + (rect.width / 2) - (contentRect.width / 2)) + \"px\")\n ;\n }\n }\n\n resize(size?: any): this {\n super.resize();\n if (this._modal) this.setModalSize();\n return this;\n }\n\n resizeBodySync(width: number, height: number): this {\n const header = this._modalHeader.node();\n const headerRect = header.getBoundingClientRect();\n\n this._modal\n .style(\"width\", width + \"px\")\n .style(\"height\", (height + headerRect.height) + \"px\")\n .style(\"min-width\", width + \"px\")\n .style(\"min-height\", (height + headerRect.height) + \"px\")\n ;\n this._modalHeader\n .style(\"width\", width + \"px\")\n ;\n this._modalBody\n .style(\"width\", width + \"px\")\n .style(\"height\", height + \"px\")\n ;\n return this\n .minWidth(width + \"px\")\n .minHeight((height + headerRect.height) + \"px\")\n .resize({\n height: height + headerRect.height,\n width\n })\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._fade = element.append(\"div\")\n .classed(\"layout_Modal-fade\", true)\n .classed(\"layout_Modal-fadeClickable\", this.enableClickFadeToClose())\n .classed(\"layout_Modal-fade-hidden\", !this.showFade())\n ;\n const header_h = this.titleFontSize() * 2;\n this._modal = element.append(\"div\")\n .classed(\"layout_Modal-content\", true)\n ;\n this._modalHeader = this._modal.append(\"div\")\n .classed(\"layout_Modal-header\", true)\n .style(\"color\", this.titleFontColor())\n .style(\"font-size\", this.titleFontSize() + \"px\")\n .style(\"height\", header_h + \"px\")\n ;\n this._modalBody = this._modal.append(\"div\")\n .classed(\"layout_Modal-body\", true)\n .style(\"height\", `calc( 100% - ${header_h}px )`)\n .style(\"overflow-x\", this.overflowX())\n .style(\"overflow-y\", this.overflowY())\n ;\n this._modalHeader.append(\"div\")\n .classed(\"layout_Modal-title\", true)\n .style(\"line-height\", this.titleFontSize() + \"px\")\n .style(\"top\", (this.titleFontSize() / 2) + \"px\")\n .style(\"left\", (this.titleFontSize() / 2) + \"px\")\n .text(this.formattedTitle())\n ;\n\n this._modalHeaderAnnotations = this._modalHeader.append(\"div\")\n .classed(\"layout_Modal-annotations\", true)\n ;\n this._modalHeaderCloseButton = this._modalHeaderAnnotations.append(\"div\")\n .classed(\"layout_Modal-closeButton\", true)\n .html(\"<i class=\\\"fa fa-close\\\"></i>\")\n ;\n\n this._modalHeaderAnnotations\n .style(\"line-height\", this.titleFontSize() + \"px\")\n .style(\"right\", (this.titleFontSize() / 2) + \"px\")\n .style(\"top\", (this.titleFontSize() / 2) + \"px\")\n ;\n this._modalHeaderCloseButton.on(\"click\", () => {\n this.closeModal();\n });\n this._fade.on(\"click\", n => {\n if (this.enableClickFadeToClose()) {\n this.closeModal();\n }\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element.style(\"display\", this.show() ? null : \"none\");\n this._fade.classed(\"layout_Modal-fade-hidden\", !this.showFade());\n this._relativeTarget = this.getRelativeTarget();\n\n this.setModalSize();\n const rect = this._relativeTarget.getBoundingClientRect();\n this.setFadePosition(rect);\n this.setModalPosition(rect);\n\n if (this.show()) {\n if (!this._widget.target()) {\n this._widget.target(this._modalBody.node());\n }\n this._widget.resize().render();\n } else {\n this._widget\n .target(null)\n .render()\n ;\n }\n }\n\n exit(domNode, element) {\n if (this._widget) {\n this._widget.target(null);\n }\n super.exit(domNode, element);\n }\n\n formattedTitle() {\n const title = this.title_exists() ? this.title().trim() : \"\";\n if (title.length > 0 && title.slice(0, 1) === \"(\" && title.slice(-1) === \")\") {\n return title.slice(1, -1);\n }\n return this.title();\n }\n}\nModal.prototype._class += \" layout_Modal\";\n\nexport interface Modal {\n show(): boolean;\n show(_: boolean): this;\n showFade(): boolean;\n showFade(_: boolean): this;\n enableClickFadeToClose(): boolean;\n enableClickFadeToClose(_: boolean): this;\n title(): string;\n title(_: string): this;\n title_exists(): boolean;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n titleFontColor(): string;\n titleFontColor(_: string): this;\n minWidth(): string;\n minWidth(_: string): this;\n minHeight(): string;\n minHeight(_: string): this;\n maxWidth(): string;\n maxWidth(_: string): this;\n maxHeight(): string;\n maxHeight(_: string): this;\n fixedWidth(): string;\n fixedWidth(_: string): this;\n fixedHeight(): string;\n fixedHeight(_: string): this;\n fixedTop(): string;\n fixedTop(_: string): this;\n fixedLeft(): string;\n fixedLeft(_: string): this;\n relativeTargetId(): string;\n relativeTargetId(_: string): this;\n widget(): Widget;\n widget(_: Widget): this;\n overflowX(): \"hidden\" | \"scroll\";\n overflowX(_: \"hidden\" | \"scroll\"): this;\n overflowY(): \"hidden\" | \"scroll\";\n overflowY(_: \"hidden\" | \"scroll\"): this;\n}\n\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\");\n\nModal.prototype.publish(\"show\", true, \"boolean\", \"show\");\nModal.prototype.publish(\"showFade\", true, \"boolean\", \"showFade\");\nModal.prototype.publish(\"enableClickFadeToClose\", true, \"boolean\", \"enableClickFadeToClose\");\n\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","import { IHighlight } from \"@hpcc-js/api\";\nimport { Button, Database, IconBar, ProgressBar, Spacer, SVGWidget, Text, TitleBar, ToggleButton, Utility, Widget } from \"@hpcc-js/common\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Border2 } from \"./Border2\";\nimport { Carousel } from \"./Carousel\";\nimport { Legend } from \"./Legend\";\nimport { Modal } from \"./Modal\";\n\nimport \"../src/ChartPanel.css\";\n\nexport class ChartPanel extends Border2 implements IHighlight {\n\n protected _legend = new Legend(this).enableOverflow(true);\n protected _progressBar = new ProgressBar();\n protected _autoScale = false;\n protected _resolutions = {\n tiny: { width: 100, height: 100 },\n small: { width: 300, height: 300 }\n };\n private _modal = new Modal();\n private _highlight: boolean;\n private _scale: number;\n private _orig_size: any;\n\n private _toggleInfo = new ToggleButton().faChar(\"fa-info-circle\").tooltip(\".Description\")\n .selected(false)\n .on(\"enabled\", () => {\n return this.description() !== \"\";\n })\n .on(\"click\", () => {\n if (this._toggleInfo.selected()) {\n this._modal\n .title(this.title())\n .widget(new Text().text(this.description()))\n .show(true)\n .render()\n ;\n\n const origCloseFunc = this._modal._close;\n this._modal._close = () => {\n this._toggleInfo\n .selected(false)\n .render()\n ;\n this._modal._close = origCloseFunc;\n };\n }\n })\n .on(\"mouseMove\", () => {\n /*\n this._modal.showPreview(true).render(n => {\n n.resize().render();\n });\n */\n })\n .on(\"mouseOut\", () => {\n /*\n if (this._modal.showPreview()) {\n this._modal.show(false).showPreview(false).render();\n }\n */\n });\n\n private _toggleData = new ToggleButton().faChar(\"fa-table\").tooltip(\"Data\")\n .on(\"click\", () => {\n this.dataVisible(this._toggleData.selected());\n this.render();\n });\n\n private _buttonDownload = new Button().faChar(\"fa-download\").tooltip(\"Download\")\n .on(\"click\", () => {\n this.downloadCSV();\n });\n\n private _buttonDownloadImage = new Button().faChar(\"fa-image\").tooltip(\"Download Image\")\n .on(\"click\", () => {\n this.downloadPNG();\n });\n\n private _toggleLegend = new ToggleButton().faChar(\"fa-list-ul\").tooltip(\"Legend\")\n .selected(false)\n .on(\"click\", () => {\n const selected = this._toggleLegend.selected();\n if (this.legendPosition() === \"bottom\") {\n this.showBottom(selected);\n } else if (this.legendPosition() === \"right\") {\n this.showRight(selected);\n }\n this.legendVisible(selected);\n this.render();\n });\n\n protected _spacer = new Spacer();\n\n _titleBar = new TitleBar().buttons([this._toggleData, this._buttonDownload, this._buttonDownloadImage, this._spacer, this._toggleLegend]);\n\n protected _carousel = new Carousel();\n protected _table = new Table();\n protected _widget: Widget;\n\n protected _hideLegendToggleList = [\"dgrid_Table\"];\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): this | Database.Field[] {\n if (!arguments.length) return super.fields();\n super.fields(_);\n this._legend.fields(_);\n this.refreshFields();\n return this;\n }\n refreshFields() {\n this._widget.fields(this._legend.filteredFields());\n this._table.fields(this._legend.filteredFields());\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 super.columns();\n super.columns(_, asDefault);\n this._legend.columns(_, asDefault);\n this.refreshColumns();\n return this;\n }\n refreshColumns() {\n this._widget.columns(this._legend.filteredColumns());\n this._table.columns(this._legend.filteredColumns());\n return this;\n }\n\n data(_?) {\n if (!arguments.length) return super.data();\n super.data(_);\n this._legend.data(_);\n this.refreshData();\n return this;\n }\n refreshData() {\n this._widget.data(this._legend.filteredData());\n this._table.data(this._legend.filteredData());\n return this;\n }\n\n highlight(): boolean;\n highlight(_: boolean): this;\n highlight(_?: boolean): boolean | this {\n if (!arguments.length) return this._highlight;\n this._highlight = _;\n return this;\n }\n\n startProgress() {\n this._progressBar.start();\n }\n\n finishProgress() {\n this._progressBar.finish();\n }\n\n buttons(): Widget[];\n buttons(_: Widget[]): this;\n buttons(_?: Widget[]): this | Widget[] {\n if (!arguments.length) return this._titleBar.buttons();\n this._titleBar.buttons(_);\n return this;\n }\n\n downloadCSV() {\n const namePrefix = this.downloadTitle() ? this.downloadTitle() : this.title() ? this.title() : \"data\";\n const nameSuffix = this.downloadTimestampSuffix() ? \"_\" + Utility.timestamp() : \"\";\n Utility.downloadString(\"CSV\", this._widget.export(\"CSV\"), namePrefix + nameSuffix);\n return this;\n }\n\n downloadPNG() {\n const widget = this.widget();\n if (widget instanceof SVGWidget) {\n if (!this.legendVisible()) {\n widget.downloadPNG(this.title());\n } else {\n widget.downloadPNG(this.title(), undefined, this._legend);\n }\n }\n return this;\n }\n\n highlightColumn(column?: string): this {\n if (column) {\n const cssTag = `series-${this.cssTag(column)}`;\n this._centerWA.element().selectAll(\".series\")\n .each(function () {\n const element = d3Select(this);\n const highlight = element.classed(cssTag);\n element\n .classed(\"highlight\", highlight)\n .classed(\"lowlight\", !highlight)\n ;\n })\n ;\n } else {\n this._centerWA.element().selectAll(\".series\")\n .classed(\"highlight\", false)\n .classed(\"lowlight\", false)\n ;\n }\n return this;\n }\n\n getResponsiveMode(): \"tiny\" | \"small\" | \"regular\" | \"none\" {\n if (!this.enableAutoscaling()) return \"none\";\n if (!this._autoScale) return \"regular\";\n if (this.size().width <= this._resolutions.tiny.width || this.size().height <= this._resolutions.tiny.height) {\n return \"tiny\";\n } else if (this.size().width <= this._resolutions.small.width || this.size().height <= this._resolutions.small.height) {\n return \"small\";\n }\n return \"regular\";\n }\n\n setOrigSize() {\n this._orig_size = JSON.parse(JSON.stringify(this.size()));\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._modal\n .target(this.target())\n .relativeTargetId(this.id())\n ;\n\n this.top(this._titleBar);\n this.center(this._carousel);\n\n this._legend\n .targetWidget(this._widget)\n .orientation(\"vertical\")\n .title(\"\")\n .visible(false)\n ;\n\n this._progressBar.enter(domNode, element);\n this.setOrigSize();\n }\n\n preUpdateTiny(element) {\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n }\n\n preUpdateSmall(element) {\n const scale_x = this._orig_size.width / this._resolutions.small.width;\n const scale_y = this._orig_size.height / this._resolutions.small.height;\n this._scale = Math.min(scale_x, scale_y);\n const x_is_smaller = this._scale === scale_x;\n this.size({\n width: x_is_smaller ? this._resolutions.small.width : this._orig_size.width * (1 / this._scale),\n height: !x_is_smaller ? this._resolutions.small.height : this._orig_size.height * (1 / this._scale)\n });\n element.select(\"div.title-icon\").style(\"position\", \"static\");\n element.selectAll(\"lhs\").style(\"display\", \"none\");\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n element.style(\"transform\", `scale(${this._scale})`);\n }\n\n preUpdateRegular(element) {\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n element.select(\"div.title-icon\").style(\"position\", \"static\");\n element.style(\"transform\", \"translate(0px,0px) scale(1)\");\n }\n\n private _prevdataVisible;\n private _prevlegendVisible;\n private _prevLegendPosition;\n private _prevChartDataFamily;\n private _prevChart;\n private _prevButtons;\n update(domNode, element) {\n super.update(domNode, element);\n }\n\n preUpdate(domNode, element) {\n\n super.preUpdate(domNode, element);\n\n if (this._prevLegendPosition !== this.legendPosition()) {\n if (this._legend.target() !== null) this._legend.target(null);\n if (this._prevLegendPosition !== undefined) {\n this.swap(this._prevLegendPosition, this.legendPosition());\n } else {\n this[this.legendPosition()](this._legend);\n }\n if (this.legendPosition() === \"right\") {\n this.rightOverflowX(\"hidden\");\n this.rightOverflowY(\"auto\");\n this.bottomOverflowX(\"visible\");\n this.bottomOverflowY(\"visible\");\n } else {\n this.rightOverflowX(\"visible\");\n this.rightOverflowY(\"visible\");\n this.bottomOverflowX(\"auto\");\n this.bottomOverflowY(\"hidden\");\n }\n this._prevLegendPosition = this.legendPosition();\n }\n\n if (this._prevdataVisible !== this.dataVisible()) {\n this._prevdataVisible = this.dataVisible();\n this._toggleData.selected(this._prevdataVisible);\n this._carousel.active(this._prevdataVisible ? 1 : 0);\n }\n\n if (this._prevlegendVisible !== this.legendVisible()) {\n this._prevlegendVisible = this.legendVisible();\n this._toggleLegend.selected(this._prevlegendVisible);\n this._legend.visible(this._prevlegendVisible);\n }\n\n this._legend.orientation(this.legendPosition() === \"bottom\" ? \"horizontal\" : \"vertical\");\n\n this.showLeft(!this.left());\n\n switch (this.getResponsiveMode()) {\n case \"tiny\":\n this.preUpdateTiny(element);\n break;\n case \"small\":\n this.preUpdateSmall(element);\n break;\n case \"regular\":\n this.preUpdateRegular(element);\n break;\n }\n\n const chart = this._widget.classID() === \"composite_MultiChart\" ? this._widget[\"chart\"]() : this._widget;\n this._legend.dataFamily(chart._dataFamily || \"any\");\n\n if (this._prevChartDataFamily !== this._legend.dataFamily()) {\n this._prevChartDataFamily = this._legend.dataFamily();\n switch (this._prevChartDataFamily) {\n case \"any\":\n this._toggleLegend.selected(false);\n this._legend.visible(false);\n break;\n }\n }\n element.style(\"box-shadow\", this.highlight() ? `inset 0px 0px 0px ${this.highlightSize()}px ${this.highlightColor()}` : \"none\");\n\n if (this._hideLegendToggleList.indexOf(chart.classID()) !== -1) {\n this._spacer.visible(false);\n this._toggleLegend.visible(false);\n } else {\n this._spacer.visible(true);\n this._toggleLegend.visible(true);\n }\n if (this._prevChart !== chart) {\n this._prevChart = chart;\n const widgetIconBar = chart ? chart[\"_titleBar\"] || chart[\"_iconBar\"] : undefined;\n if (widgetIconBar && widgetIconBar instanceof IconBar) {\n this._prevButtons = this._prevButtons || [...this.buttons()];\n const buttons: Widget[] = [\n ...widgetIconBar.buttons(),\n new Spacer(),\n ...this._prevButtons\n ];\n widgetIconBar.buttons([]).render();\n this.buttons(buttons);\n } else if (this._prevButtons) {\n this.buttons(this._prevButtons);\n }\n }\n\n const hiddenButtons = [];\n if (!this.dataButtonVisible()) hiddenButtons.push(this._toggleData);\n if (!this.downloadButtonVisible()) hiddenButtons.push(this._buttonDownload);\n if (!this.downloadImageButtonVisible()) hiddenButtons.push(this._buttonDownloadImage);\n if (!this.legendButtonVisible()) hiddenButtons.push(this._toggleLegend);\n this._buttonDownloadImage.enabled(this.widget() instanceof SVGWidget);\n this._titleBar\n .hiddenButtons(hiddenButtons)\n .visible(this.titleVisible())\n ;\n this.topOverlay(this.titleOverlay() || !this.titleVisible());\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n\n switch (this.getResponsiveMode()) {\n case \"tiny\":\n this.postUpdateTiny(element);\n break;\n case \"small\":\n this.postUpdateSmall(element);\n break;\n case \"regular\":\n this.postUpdateRegular(element);\n break;\n }\n }\n\n postUpdateTiny(element) {\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n element.selectAll(\"div.data-count\")\n .style(\"visibility\", \"visible\")\n .style(\"font-size\", (this.titleIconFontSize() / 3) + \"px\")\n .style(\"line-height\", (this.titleIconFontSize() / 3) + \"px\")\n .style(\"left\", this.titleIconFontSize() + \"px\")\n .text(this.data().length)\n ;\n element.style(\"transform\", \"translate(0px,0px) scale(1)\");\n const iconDiv = element.selectAll(\"div.title-icon\");\n const _node = iconDiv.node();\n const _container = element.node().parentElement;\n const containerRect = _container.getBoundingClientRect();\n if (_node) {\n const rect = iconDiv.node().getBoundingClientRect();\n const icon_top = containerRect.height / 2;\n iconDiv\n .style(\"position\", \"absolute\")\n .style(\"left\", `calc(50% - ${rect.width / 2}px)`)\n .style(\"top\", `${icon_top - (rect.height / 2)}px`)\n ;\n element.selectAll(\"div.data-count\")\n .style(\"position\", \"absolute\")\n .style(\"left\", `calc(50% + ${rect.width / 2}px)`)\n .style(\"top\", `${icon_top - (rect.height / 2)}px`)\n ;\n }\n }\n\n postUpdateSmall(element) {\n element.selectAll(\"lhs\").style(\"display\", \"none\"); // TODO: a bug in Border2?\n element.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n const rect = element.node().getBoundingClientRect();\n const parentRect = element.node().parentElement.getBoundingClientRect();\n element.style(\"transform\", `translate(${parentRect.x - rect.x}px, ${parentRect.y - rect.y}px) scale(${this._scale})`);\n }\n\n postUpdateRegular(element) {\n element.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n }\n\n exit(domNode, element) {\n this._progressBar.exit(domNode, element);\n\n this.right(null);\n this._legend.target(null);\n this.center(null);\n this._carousel.target(null);\n this.top(null);\n this._titleBar.target(null);\n\n this._modal.target(null);\n\n delete this._prevChart;\n delete this._prevButtons;\n delete this._prevChartDataFamily;\n delete this._prevPos;\n delete this._prevdataVisible;\n delete this._prevlegendVisible;\n\n super.exit(domNode, element);\n }\n\n // Event Handlers ---\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\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}\nChartPanel.prototype._class += \" layout_ChartPanel\";\n\nexport interface ChartPanel {\n title(): string;\n title(_: string): this;\n titleVisible(): boolean;\n titleVisible(_: boolean): this;\n titleOverlay(): boolean;\n titleOverlay(_: boolean): this;\n title_exists(): boolean;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n titleFontSize_exists(): boolean;\n titleIconFontSize(): number;\n titleIconFontSize(_: number): this;\n titleIconFontSize_exists(): boolean;\n dataVisible(): boolean;\n dataVisible(_: boolean): this;\n dataButtonVisible(): boolean;\n dataButtonVisible(_: boolean): this;\n downloadButtonVisible(): boolean;\n downloadButtonVisible(_: boolean): this;\n downloadImageButtonVisible(): boolean;\n downloadImageButtonVisible(_: boolean): this;\n downloadTitle(): string;\n downloadTitle(_: string): this;\n downloadTimestampSuffix(): boolean;\n downloadTimestampSuffix(_: boolean): this;\n legendVisible(): boolean;\n legendVisible(_: boolean): this;\n legendButtonVisible(): boolean;\n legendButtonVisible(_: boolean): this;\n legendPosition(): \"right\" | \"bottom\";\n legendPosition(_: \"right\" | \"bottom\"): this;\n description(): string;\n description(_: string): this;\n description_exists(): boolean;\n widget(): Widget;\n widget(_: Widget): this;\n widget_exists(): boolean;\n enableAutoscaling(): boolean;\n enableAutoscaling(_: boolean): this;\n enableAutoscaling_exists(): boolean;\n highlightSize(): number;\n highlightSize(_: number): this;\n highlightSize_exists(): boolean;\n highlightColor(): string;\n highlightColor(_: string): this;\n highlightColor_exists(): boolean;\n}\n\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\", undefined, { 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\");\n\nChartPanel.prototype.widget = function (_?) {\n if (!arguments.length) return this._widget;\n this._carousel.widgets([_, this._table]);\n this._widget = _;\n this._widget\n .fields(this._legend.filteredFields())\n .data(this._legend.filteredData())\n ;\n\n const context = this;\n const tmpAny = this._widget as any;\n tmpAny.click = function () {\n context.click.apply(context, arguments);\n };\n tmpAny.dblclick = function () {\n context.dblclick.apply(context, arguments);\n };\n tmpAny.vertex_click = function () {\n context.vertex_click.apply(context, arguments);\n };\n tmpAny.vertex_dblclick = function () {\n context.vertex_dblclick.apply(context, arguments);\n };\n tmpAny.edge_click = function () {\n context.edge_click.apply(context, arguments);\n };\n tmpAny.edge_dblclick = function () {\n context.edge_dblclick.apply(context, arguments);\n };\n return this;\n};\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/FlexGrid.css\";\n\nexport class FlexGrid extends HTMLWidget {\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const cachedSizes = [];\n this.updateFlexParent(element);\n const listItems = element.selectAll(\".FlexGrid-list-item\").data(this.widgets(), w => w.id());\n listItems.enter()\n .append(\"div\")\n .classed(\"FlexGrid-list-item\", true)\n .each(function (w) {\n w.target(this);\n })\n .merge(listItems)\n .style(\"min-height\", this.itemMinHeight() + \"px\")\n .style(\"min-width\", this.itemMinWidth() + \"px\")\n .style(\"flex-basis\", (n, i) => {\n const flexBasis = this.widgetsFlexBasis()[i];\n return typeof flexBasis !== \"undefined\" ? flexBasis : this.flexBasis();\n })\n .style(\"flex-grow\", (n, i) => {\n const flexGrow = this.widgetsFlexGrow()[i];\n return typeof flexGrow !== \"undefined\" ? flexGrow : this.flexGrow();\n })\n .style(\"border-width\", this.borderWidth() + \"px\")\n .style(\"border-color\", this.itemBorderColor())\n .each(function () {\n this.firstChild.style.display = \"none\";\n })\n .each(function () {\n const rect = this.getBoundingClientRect();\n cachedSizes.push([\n rect.width,\n rect.height\n ]);\n })\n .each(function (w, i) {\n this.firstChild.style.display = \"block\";\n w.resize({\n width: cachedSizes[i][0] - (2 * context.borderWidth()),\n height: cachedSizes[i][1] - (2 * context.borderWidth())\n });\n })\n ;\n listItems.exit().remove();\n }\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n updateFlexParent(element) {\n element\n .style(\"height\", \"100%\")\n .style(\"flex-direction\", this.orientation() === \"horizontal\" ? \"row\" : \"column\")\n .style(\"flex-wrap\", this.flexWrap())\n .style(\"align-items\", this.alignItems())\n .style(\"align-content\", this.alignContent())\n .style(\"overflow-x\", () => {\n if (this.forceXScroll() || (this.orientation() === \"horizontal\" && this.flexWrap() === \"nowrap\" && !this.disableScroll())) {\n return \"scroll\";\n }\n return \"hidden\";\n })\n .style(\"overflow-y\", () => {\n if (this.forceYScroll() || (this.orientation() === \"vertical\" && this.flexWrap() === \"nowrap\" && !this.disableScroll())) {\n return \"scroll\";\n }\n return \"hidden\";\n })\n ;\n }\n}\nFlexGrid.prototype._class += \" layout_FlexGrid\";\n\nexport interface FlexGrid {\n widgets(): any;\n widgets(_: any): this;\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n flexWrap(): \"nowrap\" | \"wrap\" | \"wrap-reverse\";\n flexWrap(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\"): this;\n itemMinHeight(): number;\n itemMinHeight(_: number): this;\n itemMinWidth(): number;\n itemMinWidth(_: number): this;\n alignItems(): \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\";\n alignItems(_: \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\"): this;\n alignContent(): \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\" | \"space-between\" | \"space-around\";\n alignContent(_: \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\" | \"space-between\" | \"space-around\"): this;\n itemBorderColor(): string;\n itemBorderColor(_: string): this;\n borderWidth(): number;\n borderWidth(_: number): this;\n flexGrow(): number;\n flexGrow(_: number): this;\n widgetsFlexGrow(): number[];\n widgetsFlexGrow(_: number[]): this;\n flexBasis(): string;\n flexBasis(_: string): this;\n widgetsFlexBasis(): string[];\n widgetsFlexBasis(_: string[]): this;\n disableScroll(): boolean;\n disableScroll(_: boolean): this;\n forceXScroll(): boolean;\n forceXScroll(_: boolean): this;\n forceYScroll(): boolean;\n forceYScroll(_: boolean): this;\n}\n\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\", [\"nowrap\", \"wrap\", \"wrap-reverse\"]);\nFlexGrid.prototype.publish(\"disableScroll\", false, \"boolean\", \"If false, scrollbar will show (when flexWrap is set to 'nowrap')\", null, { disable: (w: any) => 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\", [\"flex-start\", \"center\", \"flex-end\", \"stretch\"]);\nFlexGrid.prototype.publish(\"alignContent\", \"stretch\", \"set\", \"Controls normal alignment of item rows\", [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"space-between\", \"space-around\"]);\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","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.GridList = factory();\n }\n}(this, function() {\n\nvar GridList = function(items, options) {\n /**\n * A GridList manages the two-dimensional positions from a list of items,\n * within a virtual matrix.\n *\n * The GridList's main function is to convert the item positions from one\n * grid size to another, maintaining as much of their order as possible.\n *\n * The GridList's second function is to handle collisions when moving an item\n * over another.\n *\n * The positioning algorithm places items in columns. Starting from left to\n * right, going through each column top to bottom.\n *\n * The size of an item is expressed using the number of cols and rows it\n * takes up within the grid (w and h)\n *\n * The position of an item is express using the col and row position within\n * the grid (x and y)\n *\n * An item is an object of structure:\n * {\n * w: 3, h: 1,\n * x: 0, y: 1\n * }\n */\n\n this._options = options;\n for (var k in this.defaults) {\n if (!this._options.hasOwnProperty(k)) {\n this._options[k] = this.defaults[k];\n }\n }\n\n this.items = items;\n\n this._adjustSizeOfItems();\n\n this.generateGrid();\n};\n\nGridList.cloneItems = function(items, _items) {\n /**\n * Clone items with a deep level of one. Items are not referenced but their\n * properties are\n */\n var _item,\n i,\n k;\n if (_items === undefined) {\n _items = [];\n }\n for (i = 0; i < items.length; i++) {\n // XXX: this is good because we don't want to lose item reference, but\n // maybe we should clear their properties since some might be optional\n if (!_items[i]) {\n _items[i] = {};\n }\n for (k in items[i]) {\n _items[i][k] = items[i][k];\n }\n }\n return _items;\n};\n\nGridList.prototype = {\n\n defaults: {\n lanes: 5,\n direction: 'horizontal'\n },\n\n /**\n * Illustates grid as text-based table, using a number identifier for each\n * item. E.g.\n *\n * #| 0 1 2 3 4 5 6 7 8 9 10 11 12 13\n * --------------------------------------------\n * 0| 00 02 03 04 04 06 08 08 08 12 12 13 14 16\n * 1| 01 -- 03 05 05 07 09 10 11 11 -- 13 15 --\n *\n * Warn: Does not work if items don't have a width or height specified\n * besides their position in the grid.\n */\n toString: function() {\n var widthOfGrid = this.grid.length,\n output = '\\n #|',\n border = '\\n --',\n item,\n i,\n j;\n\n // Render the table header\n for (i = 0; i < widthOfGrid; i++) {\n output += ' ' + this._padNumber(i, ' ');\n border += '---';\n };\n output += border;\n\n // Render table contents row by row, as we go on the y axis\n for (i = 0; i < this._options.lanes; i++) {\n output += '\\n' + this._padNumber(i, ' ') + '|';\n for (j = 0; j < widthOfGrid; j++) {\n output += ' ';\n item = this.grid[j][i];\n output += item ? this._padNumber(this.items.indexOf(item), '0') : '--';\n }\n };\n output += '\\n';\n return output;\n },\n\n generateGrid: function() {\n /**\n * Build the grid structure from scratch, with the current item positions\n */\n var i;\n this._resetGrid();\n for (i = 0; i < this.items.length; i++) {\n this._markItemPositionToGrid(this.items[i]);\n }\n },\n\n resizeGrid: function(lanes) {\n var currentColumn = 0;\n\n this._options.lanes = lanes;\n this._adjustSizeOfItems();\n\n this._sortItemsByPosition();\n this._resetGrid();\n\n // The items will be sorted based on their index within the this.items array,\n // that is their \"1d position\"\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i],\n position = this._getItemPosition(item);\n\n this._updateItemPosition(\n item, this.findPositionForItem(item, {x: currentColumn, y: 0}));\n\n // New items should never be placed to the left of previous items\n currentColumn = Math.max(currentColumn, position.x);\n }\n\n this._pullItemsToLeft();\n },\n\n findPositionForItem: function(item, start, fixedRow) {\n /**\n * This method has two options for the position we want for the item:\n * - Starting from a certain row/column number and only looking for\n * positions to its right\n * - Accepting positions for a certain row number only (use-case: items\n * being shifted to the left/right as a result of collisions)\n *\n * @param {Object<x:Number, y:Number, w:Number, h:Number} item\n * @param {Object<x:Number, y:Number} start Position from which to start\n * the search.\n * @param {Number} [fixedRow] If provided, we're going to try to find a\n * position for the new item on it. If doesn't fit there, we're going\n * to put it on the first row.\n *\n * @returns {Number[2]} x and y.\n */\n\n var x, y, position;\n\n // Start searching for a position from the horizontal position of the\n // rightmost item from the grid\n for (x = start.x; x < this.grid.length; x++) {\n if (fixedRow !== undefined) {\n position = [x, fixedRow];\n\n if (this._itemFitsAtPosition(item, position)) {\n return position;\n }\n } else {\n for (y = start.y; y < this._options.lanes; y++) {\n position = [x, y];\n\n if (this._itemFitsAtPosition(item, position)) {\n return position;\n }\n }\n }\n }\n\n // If we've reached this point, we need to start a new column\n var newCol = this.grid.length,\n newRow = 0;\n\n if (fixedRow !== undefined &&\n this._itemFitsAtPosition(item, [newCol, fixedRow])) {\n newRow = fixedRow;\n }\n\n return [newCol, newRow];\n },\n\n moveItemToPosition: function(item, newPosition) {\n var position = this._getItemPosition({\n x: newPosition[0],\n y: newPosition[1],\n w: item.w,\n h: item.h\n });\n\n this._updateItemPosition(item, [position.x, position.y]);\n this._resolveCollisions(item);\n },\n\n resizeItem: function(item, size) {\n /**\n * Resize an item and resolve collisions.\n *\n * @param {Object} item A reference to an item that's part of the grid.\n * @param {Object} size\n * @param {Number} [size.w=item.w] The new width.\n * @param {Number} [size.h=item.h] The new height.\n */\n\n var width = size.w || item.w,\n height = size.h || item.h;\n\n this._updateItemSize(item, width, height);\n\n this._resolveCollisions(item);\n\n this._pullItemsToLeft();\n },\n\n getChangedItems: function(initialItems, idAttribute) {\n /**\n * Compare the current items against a previous snapshot and return only\n * the ones that changed their attributes in the meantime. This includes both\n * position (x, y) and size (w, h)\n *\n * Since both their position and size can change, the items need an\n * additional identifier attribute to match them with their previous state\n */\n var changedItems = [];\n\n for (var i = 0; i < initialItems.length; i++) {\n var item = this._getItemByAttribute(idAttribute,\n initialItems[i][idAttribute]);\n\n if (item.x !== initialItems[i].x ||\n item.y !== initialItems[i].y ||\n item.w !== initialItems[i].w ||\n item.h !== initialItems[i].h) {\n changedItems.push(item);\n }\n }\n\n return changedItems;\n },\n\n _sortItemsByPosition: function() {\n this.items.sort(function(item1, item2) {\n var position1 = this._getItemPosition(item1),\n position2 = this._getItemPosition(item2);\n\n // Try to preserve columns.\n if (position1.x != position2.x) {\n return position1.x - position2.x;\n }\n\n if (position1.y != position2.y) {\n return position1.y - position2.y;\n }\n\n // The items are placed on the same position.\n return 0;\n }.bind(this));\n },\n\n _adjustSizeOfItems: function() {\n /**\n * Some items can have 100% height or 100% width. Those dimmensions are\n * expressed as 0. We need to ensure a valid width and height for each of\n * those items as the number of items per lane.\n */\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n\n // This can happen only the first time items are checked.\n // We need the property to have a value for all the items so that the\n // `cloneItems` method will merge the properties properly. If we only set\n // it to the items that need it then the following can happen:\n //\n // cloneItems([{id: 1, autoSize: true}, {id: 2}],\n // [{id: 2}, {id: 1, autoSize: true}]);\n //\n // will result in\n //\n // [{id: 1, autoSize: true}, {id: 2, autoSize: true}]\n if (item.autoSize === undefined) {\n item.autoSize = item.w === 0 || item.h === 0;\n }\n\n if (item.autoSize) {\n if (this._options.direction === 'horizontal') {\n item.h = this._options.lanes;\n } else {\n item.w = this._options.lanes;\n }\n }\n }\n },\n\n _resetGrid: function() {\n this.grid = [];\n },\n\n _itemFitsAtPosition: function(item, newPosition) {\n /**\n * Check that an item wouldn't overlap with another one if placed at a\n * certain position within the grid\n */\n\n var position = this._getItemPosition(item),\n x, y, row;\n\n // No coordonate can be negative\n if (newPosition[0] < 0 || newPosition[1] < 0) {\n return false;\n }\n\n // Make sure the item isn't larger than the entire grid\n if (newPosition[1] + position.h > this._options.lanes) {\n return false;\n }\n\n // Make sure the position doesn't overlap with an already positioned\n // item.\n for (x = newPosition[0]; x < newPosition[0] + position.w; x++) {\n var col = this.grid[x];\n\n // Surely a column that hasn't even been created yet is available\n if (!col) {\n continue;\n }\n\n for (y = newPosition[1]; y < newPosition[1] + position.h; y++) {\n // Any space occupied by an item can continue to be occupied by the\n // same item.\n if (col[y] && col[y] !== item) {\n return false;\n }\n }\n }\n\n return true;\n },\n\n _updateItemPosition: function(item, position) {\n if (item.x !== null && item.y !== null) {\n this._deleteItemPositionFromGrid(item);\n }\n\n this._setItemPosition(item, position);\n\n this._markItemPositionToGrid(item);\n },\n\n _updateItemSize: function(item, width, height) {\n /**\n * @param {Object} item A reference to a grid item.\n * @param {Number} width The new width.\n * @param {Number} height The new height.\n */\n\n if (item.x !== null && item.y !== null) {\n this._deleteItemPositionFromGrid(item);\n }\n\n item.w = width;\n item.h = height;\n\n this._markItemPositionToGrid(item);\n },\n\n _markItemPositionToGrid: function(item) {\n /**\n * Mark the grid cells that are occupied by an item. This prevents items\n * from overlapping in the grid\n */\n\n var position = this._getItemPosition(item),\n x, y;\n\n // Ensure that the grid has enough columns to accomodate the current item.\n this._ensureColumns(position.x + position.w);\n\n for (x = position.x; x < position.x + position.w; x++) {\n for (y = position.y; y < position.y + position.h; y++) {\n this.grid[x][y] = item;\n }\n }\n },\n\n _deleteItemPositionFromGrid: function(item) {\n var position = this._getItemPosition(item),\n x, y;\n\n for (x = position.x; x < position.x + position.w; x++) {\n // It can happen to try to remove an item from a position not generated\n // in the grid, probably when loading a persisted grid of items. No need\n // to create a column to be able to remove something from it, though\n if (!this.grid[x]) {\n continue;\n }\n\n for (y = position.y; y < position.y + position.h; y++) {\n // Don't clear the cell if it's been occupied by a different widget in\n // the meantime (e.g. when an item has been moved over this one, and\n // thus by continuing to clear this item's previous position you would\n // cancel the first item's move, leaving it without any position even)\n if (this.grid[x][y] == item) {\n this.grid[x][y] = null;\n }\n }\n }\n },\n\n _ensureColumns: function(N) {\n /**\n * Ensure that the grid has at least N columns available.\n */\n var i;\n for (i = 0; i < N; i++) {\n if (!this.grid[i]) {\n this.grid.push(new GridCol(this._options.lanes));\n }\n }\n },\n\n _getItemsCollidingWithItem: function(item) {\n var collidingItems = [];\n for (var i = 0; i < this.items.length; i++) {\n if (item != this.items[i] &&\n this._itemsAreColliding(item, this.items[i])) {\n collidingItems.push(i);\n }\n }\n return collidingItems;\n },\n\n _itemsAreColliding: function(item1, item2) {\n var position1 = this._getItemPosition(item1),\n position2 = this._getItemPosition(item2);\n\n return !(position2.x >= position1.x + position1.w ||\n position2.x + position2.w <= position1.x ||\n position2.y >= position1.y + position1.h ||\n position2.y + position2.h <= position1.y);\n },\n\n _resolveCollisions: function(item) {\n if (!this._tryToResolveCollisionsLocally(item)) {\n this._pullItemsToLeft(item);\n }\n this._pullItemsToLeft();\n },\n\n _tryToResolveCollisionsLocally: function(item) {\n /**\n * Attempt to resolve the collisions after moving a an item over one or more\n * other items within the grid, by shifting the position of the colliding\n * items around the moving one. This might result in subsequent collisions,\n * in which case we will revert all position permutations. To be able to\n * revert to the initial item positions, we create a virtual grid in the\n * process\n */\n var collidingItems = this._getItemsCollidingWithItem(item);\n if (!collidingItems.length) {\n return true;\n }\n var _gridList = new GridList([], this._options),\n leftOfItem,\n rightOfItem,\n aboveOfItem,\n belowOfItem;\n\n GridList.cloneItems(this.items, _gridList.items);\n _gridList.generateGrid();\n\n for (var i = 0; i < collidingItems.length; i++) {\n var collidingItem = _gridList.items[collidingItems[i]],\n collidingPosition = this._getItemPosition(collidingItem);\n\n // We use a simple algorithm for moving items around when collisions occur:\n // In this prioritized order, we try to move a colliding item around the\n // moving one:\n // 1. to its left side\n // 2. above it\n // 3. under it\n // 4. to its right side\n var position = this._getItemPosition(item);\n\n leftOfItem = [position.x - collidingPosition.w, collidingPosition.y];\n rightOfItem = [position.x + position.w, collidingPosition.y];\n aboveOfItem = [collidingPosition.x, position.y - collidingPosition.h];\n belowOfItem = [collidingPosition.x, position.y + position.h];\n\n if (_gridList._itemFitsAtPosition(collidingItem, leftOfItem)) {\n _gridList._updateItemPosition(collidingItem, leftOfItem);\n } else if (_gridList._itemFitsAtPosition(collidingItem, aboveOfItem)) {\n _gridList._updateItemPosition(collidingItem, aboveOfItem);\n } else if (_gridList._itemFitsAtPosition(collidingItem, belowOfItem)) {\n _gridList._updateItemPosition(collidingItem, belowOfItem);\n } else if (_gridList._itemFitsAtPosition(collidingItem, rightOfItem)) {\n _gridList._updateItemPosition(collidingItem, rightOfItem);\n } else {\n // Collisions failed, we must use the pullItemsToLeft method to arrange\n // the other items around this item with fixed position. This is our\n // plan B for when local collision resolving fails.\n return false;\n }\n }\n // If we reached this point it means we managed to resolve the collisions\n // from one single iteration, just by moving the colliding items around. So\n // we accept this scenario and marge the brached-out grid instance into the\n // original one\n GridList.cloneItems(_gridList.items, this.items);\n this.generateGrid();\n return true;\n },\n\n _pullItemsToLeft: function(fixedItem) {\n /**\n * Build the grid from scratch, by using the current item positions and\n * pulling them as much to the left as possible, removing as space between\n * them as possible.\n *\n * If a \"fixed item\" is provided, its position will be kept intact and the\n * rest of the items will be layed around it.\n */\n\n\n // Start a fresh grid with the fixed item already placed inside\n this._sortItemsByPosition();\n this._resetGrid();\n\n // Start the grid with the fixed item as the first positioned item\n if (fixedItem) {\n var fixedPosition = this._getItemPosition(fixedItem);\n this._updateItemPosition(fixedItem, [fixedPosition.x, fixedPosition.y]);\n }\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i],\n position = this._getItemPosition(item);\n\n // The fixed item keeps its exact position\n if (fixedItem && item == fixedItem) {\n continue;\n }\n\n var x = this._findLeftMostPositionForItem(item),\n newPosition = this.findPositionForItem(\n item, {x: x, y: 0}, position.y);\n\n this._updateItemPosition(item, newPosition);\n }\n },\n\n _findLeftMostPositionForItem: function(item) {\n /**\n * When pulling items to the left, we need to find the leftmost position for\n * an item, with two considerations in mind:\n * - preserving its current row\n * - preserving the previous horizontal order between items\n */\n\n var tail = 0,\n position = this._getItemPosition(item);\n\n for (var i = 0; i < this.grid.length; i++) {\n for (var j = position.y; j < position.y + position.h; j++) {\n var otherItem = this.grid[i][j];\n\n if (!otherItem) {\n continue;\n }\n\n var otherPosition = this._getItemPosition(otherItem);\n\n if (this.items.indexOf(otherItem) < this.items.indexOf(item)) {\n tail = otherPosition.x + otherPosition.w;\n }\n }\n }\n\n return tail;\n },\n\n _getItemByAttribute: function(key, value) {\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i][key] === value) {\n return this.items[i];\n }\n }\n return null;\n },\n\n _padNumber: function(nr, prefix) {\n // Currently works for 2-digit numbers (<100)\n return nr >= 10 ? nr : prefix + nr;\n },\n\n _getItemPosition: function(item) {\n /**\n * If the direction is vertical we need to rotate the grid 90 deg to the\n * left. Thus, we simulate the fact that items are being pulled to the top.\n *\n * Since the items have widths and heights, if we apply the classic\n * counter-clockwise 90 deg rotation\n *\n * [0 -1]\n * [1 0]\n *\n * then the top left point of an item will become the bottom left point of\n * the rotated item. To adjust for this, we need to subtract from the y\n * position the height of the original item - the width of the rotated item.\n *\n * However, if we do this then we'll reverse some actions: resizing the\n * width of an item will stretch the item to the left instead of to the\n * right; resizing an item that doesn't fit into the grid will push the\n * items around it instead of going on a new row, etc.\n *\n * We found it better to do a vertical flip of the grid after rotating it.\n * This restores the direction of the actions and greatly simplifies the\n * transformations.\n */\n\n if (this._options.direction === 'horizontal') {\n return item;\n } else {\n return {\n x: item.y,\n y: item.x,\n w: item.h,\n h: item.w\n };\n }\n },\n\n _setItemPosition: function(item, position) {\n /**\n * See _getItemPosition.\n */\n\n if (this._options.direction === 'horizontal') {\n item.x = position[0];\n item.y = position[1];\n } else {\n // We're supposed to subtract the rotated item's height which is actually\n // the non-rotated item's width.\n item.x = position[1];\n item.y = position[0];\n }\n }\n};\n\nvar GridCol = function(lanes) {\n for (var i = 0; i < lanes; i++) {\n this.push(null);\n }\n};\n\n// Extend the Array prototype\nGridCol.prototype = [];\n\n// This module will have direct access to the GridList class\nreturn GridList;\n\n}));\n","import { d3Event, drag as d3Drag, HTMLWidget, Platform, select as d3Select, Utility } from \"@hpcc-js/common\";\nimport * as _GridList from \"grid-list\";\nimport { Cell } from \"./Cell\";\n\nimport \"../src/Grid.css\";\n\nconst GridList = (_GridList && _GridList.default) || _GridList;\n\nexport type ICellPosition = [number, number, number, number];\n\nexport class Grid extends HTMLWidget {\n divItems;\n\n gridList;\n items;\n itemsMap;\n origItems;\n cellWidth;\n cellHeight;\n dragItem;\n dragItemPos;\n\n _d3Drag;\n _d3DragResize;\n _selectionBag;\n _scrollBarWidth;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._selectionBag = new Utility.Selection(this);\n\n this.content([]);\n }\n\n getDimensions() {\n const size = { width: 0, height: 0 };\n this.content().forEach(function (cell) {\n if (size.width < cell.gridCol() + cell.gridColSpan()) {\n size.width = cell.gridCol() + cell.gridColSpan();\n }\n if (size.height < cell.gridRow() + cell.gridRowSpan()) {\n size.height = cell.gridRow() + cell.gridRowSpan();\n }\n }, this);\n return size;\n }\n\n clearContent(widget) {\n this.content(this.content().filter(function (contentWidget) {\n if (!widget) {\n contentWidget.target(null);\n return false;\n }\n let w: any = contentWidget;\n while (w) {\n if (widget === w) {\n contentWidget.target(null);\n return false;\n }\n w = w.widget ? w.widget() : null;\n }\n return true;\n }));\n }\n\n setContent(row, col, widget, title?, rowSpan?, colSpan?) {\n rowSpan = rowSpan || 1;\n colSpan = colSpan || 1;\n title = title || \"\";\n this.content(this.content().filter(function (contentWidget) {\n if (contentWidget.gridRow() === row && contentWidget.gridCol() === col) {\n contentWidget.target(null);\n return false;\n }\n return true;\n }));\n if (widget) {\n const cell = new Cell()\n .gridRow(row)\n .gridCol(col)\n .widget(widget)\n .title(title)\n .gridRowSpan(rowSpan)\n .gridColSpan(colSpan)\n ;\n this.content().push(cell);\n }\n return this;\n }\n\n sortedContent() {\n return this.content().sort(function (l, r) {\n if (l.gridRow() === r.gridRow()) {\n return l.gridCol() - r.gridCol();\n }\n return l.gridRow() - r.gridRow();\n });\n }\n\n getCell(row, col) {\n let retVal = null;\n this.content().some(function (cell) {\n if (row >= cell.gridRow() && row < cell.gridRow() + cell.gridRowSpan() &&\n col >= cell.gridCol() && col < cell.gridCol() + cell.gridColSpan()) {\n retVal = cell;\n return true;\n }\n return false;\n });\n return retVal;\n }\n\n getWidgetCell(id) {\n let retVal = null;\n this.content().some(function (cell) {\n if (cell.widget().id() === id) {\n retVal = cell;\n return true;\n }\n return false;\n });\n return retVal;\n }\n\n getContent(id) {\n let retVal = null;\n this.content().some(function (cell) {\n if (cell.widget().id() === id) {\n retVal = cell.widget();\n return true;\n }\n return false;\n });\n return retVal;\n }\n\n cellToGridItem(cell) {\n return {\n x: cell.gridCol(),\n y: cell.gridRow(),\n w: cell.gridColSpan(),\n h: cell.gridRowSpan(),\n id: cell.id(),\n cell\n };\n }\n\n gridItemToCell(item) {\n item.cell\n .gridCol(item.x)\n .gridRow(item.y)\n .gridColSpan(item.w)\n .gridRowSpan(item.h)\n ;\n }\n\n resetItemsPos() {\n this.origItems.forEach(function (origItem) {\n const item = this.itemsMap[origItem.id];\n item.x = origItem.x;\n item.y = origItem.y;\n }, this);\n }\n\n initGridList() {\n this.itemsMap = {};\n this.items = this.content().map(function (cell) {\n const retVal = this.cellToGridItem(cell);\n this.itemsMap[retVal.id] = retVal;\n return retVal;\n }, this);\n this.origItems = this.content().map(this.cellToGridItem);\n this.gridList = new GridList(this.items, {\n direction: this.snapping(),\n lanes: this.snapping() === \"horizontal\" ? this.snappingRows() : this.snappingColumns()\n });\n }\n\n killGridList() {\n this.gridList = null;\n delete this.items;\n delete this.itemsMap;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._scrollBarWidth = Platform.getScrollbarWidth();\n\n const context = this;\n this._d3Drag = d3Drag()\n .subject(function (_d) {\n const d = context.cellToGridItem(_d);\n return { x: d.x * context.cellWidth, y: d.y * context.cellHeight };\n })\n .on(\"start\", function (_d: any) {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.initGridList();\n const d = context.itemsMap[_d.id()];\n context.dragItem = element.append(\"div\")\n .attr(\"class\", \"dragging\")\n .style(\"transform\", function () { return \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\"; })\n .style(\"width\", function () { return d.w * context.cellWidth - context.gutter() + \"px\"; })\n .style(\"height\", function () { return d.h * context.cellHeight - context.gutter() + \"px\"; })\n ;\n context.selectionBagClick(_d);\n })\n .on(\"drag\", function (_d: any) {\n if (!context.designMode()) return;\n const event = d3Event();\n event.sourceEvent.stopPropagation();\n const d = context.itemsMap[_d.id()];\n if (event.x < 0) {\n event.x = 0;\n }\n if (event.x + d.w * context.cellWidth > context.snappingColumns() * context.cellWidth) {\n event.x = context.snappingColumns() * context.cellWidth - d.w * context.cellWidth;\n }\n if (event.y < 0) {\n event.y = 0;\n }\n if (event.y + d.h * context.cellWidth > context.snappingRows() * context.cellWidth) {\n event.y = context.snappingRows() * context.cellWidth - d.h * context.cellWidth;\n }\n const 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 if (d.x !== pos[0] || d.y !== pos[1]) {\n if (context.snapping() !== \"none\") {\n context.resetItemsPos();\n context.gridList.moveItemToPosition(d, pos);\n } else {\n d.x = pos[0];\n d.y = pos[1];\n }\n if (_d.gridCol() !== d.x || _d.gridRow() !== d.y) {\n context.items.forEach(context.gridItemToCell);\n context.updateGrid(false, 100);\n }\n }\n context.dragItem\n .style(\"transform\", function () { return \"translate(\" + event.x + \"px, \" + event.y + \"px)\"; })\n .style(\"width\", function () { return d.w * context.cellWidth + \"px\"; })\n .style(\"height\", function () { return d.h * context.cellHeight + \"px\"; })\n ;\n })\n .on(\"end\", function () {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.dragItem.remove();\n context.dragItem = null;\n context.killGridList();\n })\n ;\n\n this._d3DragResize = d3Drag()\n .subject(function (_d) {\n const d = context.cellToGridItem(_d);\n return { x: (d.x + d.w - 1) * context.cellWidth, y: (d.y + d.h - 1) * context.cellHeight };\n })\n .on(\"start\", function (_d: any) {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.initGridList();\n const d = context.itemsMap[_d.id()];\n context.dragItem = element.append(\"div\")\n .attr(\"class\", \"resizing\")\n .style(\"transform\", function () { return \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\"; })\n .style(\"width\", function () { return d.w * context.cellWidth - context.gutter() + \"px\"; })\n .style(\"height\", function () { return d.h * context.cellHeight - context.gutter() + \"px\"; })\n ;\n context.dragItemPos = { x: d.x, y: d.y };\n })\n .on(\"drag\", function (_d: any) {\n if (!context.designMode()) return;\n const event = d3Event();\n event.sourceEvent.stopPropagation();\n const d = context.itemsMap[_d.id()];\n const pos = [Math.max(0, Math.round(event.x / context.cellWidth)), Math.max(0, Math.round(event.y / context.cellHeight))];\n const size = {\n w: Math.max(1, pos[0] - d.x + 1),\n h: Math.max(1, pos[1] - d.y + 1)\n };\n if (d.w !== size.w || d.h !== size.h) {\n if (context.snapping() !== \"none\") {\n context.resetItemsPos();\n context.gridList.resizeItem(d, size);\n } else {\n d.w = size.w;\n d.h = size.h;\n }\n if (_d.gridColSpan() !== d.w || _d.gridRowSpan() !== d.h) {\n context.items.forEach(context.gridItemToCell);\n context.updateGrid(d.id, 100);\n }\n }\n context.dragItem\n .style(\"width\", function () { return (-d.x + 1) * context.cellWidth + event.x - context.gutter() + \"px\"; })\n .style(\"height\", function () { return (-d.y + 1) * context.cellHeight + event.y - context.gutter() + \"px\"; })\n ;\n })\n .on(\"end\", function () {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.dragItem.remove();\n context.dragItem = null;\n context.killGridList();\n })\n ;\n }\n\n updateGrid(resize, transitionDuration: number = 0, _noRender: boolean = false) {\n transitionDuration = transitionDuration || 0;\n const context = this;\n this.divItems\n .classed(\"draggable\", this.designMode())\n .transition().duration(transitionDuration)\n .style(\"left\", function (d) { return d.gridCol() * context.cellWidth + context.gutter() / 2 + \"px\"; })\n .style(\"top\", function (d) { return d.gridRow() * context.cellHeight + context.gutter() / 2 + \"px\"; })\n .style(\"width\", function (d) { return d.gridColSpan() * context.cellWidth - context.gutter() + \"px\"; })\n .style(\"height\", function (d) { return d.gridRowSpan() * context.cellHeight - context.gutter() + \"px\"; })\n .on(\"end\", function (d) {\n d\n .surfaceShadow_default(context.surfaceShadow())\n .surfacePadding_default(context.surfacePadding())\n .surfaceBorderWidth_default(context.surfaceBorderWidth())\n .surfaceBackgroundColor_default(context.surfaceBackgroundColor())\n ;\n\n if (resize === true || resize === d.id()) {\n d\n .resize()\n .lazyRender()\n ;\n }\n })\n ;\n }\n\n update(domNode, element2) {\n super.update(domNode, element2);\n\n this._placeholderElement.style(\"overflow-x\", this.fitTo() === \"width\" ? \"hidden\" : null);\n this._placeholderElement.style(\"overflow-y\", this.fitTo() === \"width\" ? \"scroll\" : null);\n const dimensions = this.getDimensions();\n const clientWidth = this.width() - (this.fitTo() === \"width\" ? this._scrollBarWidth : 0);\n this.cellWidth = clientWidth / dimensions.width;\n this.cellHeight = this.fitTo() === \"all\" ? this.height() / dimensions.height : this.cellWidth;\n if (this.designMode()) {\n const cellLaneRatio = Math.min(this.width() / this.snappingColumns(), this.height() / this.snappingRows());\n const laneWidth = Math.floor(cellLaneRatio);\n this.cellWidth = laneWidth;\n this.cellHeight = this.cellWidth;\n }\n\n // Grid ---\n const context = this;\n const divItems = element2.selectAll(\"#\" + this.id() + \" > .ddCell\").data(this.content(), function (d) { return d.id(); });\n this.divItems = divItems.enter().append(\"div\")\n .attr(\"class\", \"ddCell\")\n .each(function (d) {\n d.target(this);\n d.__grid_watch = d.monitor(function (key, newVal, oldVal) {\n if (context._renderCount && (key === \"snapping\" || key.indexOf(\"grid\") === 0) && newVal !== oldVal) {\n if (!context.gridList) {\n // API Call (only needed when not dragging) ---\n context.initGridList();\n if (context.snapping() !== \"none\") {\n context.gridList.resizeGrid(context.snapping() === \"horizontal\" ? context.snappingRows() : context.snappingColumns());\n }\n context.items.forEach(context.gridItemToCell);\n context.updateGrid(d.id(), 100);\n context.killGridList();\n }\n }\n });\n const element = d3Select(this);\n element.append(\"div\")\n .attr(\"class\", \"resizeHandle\")\n .call(context._d3DragResize)\n .append(\"div\")\n .attr(\"class\", \"resizeHandleDisplay\")\n ;\n }).merge(divItems)\n ;\n this.divItems.each(function (d) {\n const element = d3Select(this);\n if (context.designMode()) {\n element.call(context._d3Drag);\n } else {\n element\n .on(\"mousedown.drag\", null)\n .on(\"touchstart.drag\", null)\n ;\n }\n });\n this.divItems.select(\".resizeHandle\")\n .style(\"display\", this.designMode() ? null : \"none\")\n ;\n\n this.updateGrid(true);\n divItems.exit()\n .each(function (d) {\n d.target(null);\n if (d.__grid_watch) {\n d.__grid_watch.remove();\n }\n })\n .remove()\n ;\n\n // Snapping ---\n const lanesBackground = element2.selectAll(\"#\" + this.id() + \" > .laneBackground\").data(this.designMode() ? [\"\"] : []);\n lanesBackground.enter().insert(\"div\", \":first-child\")\n .attr(\"class\", \"laneBackground\")\n .style(\"left\", \"1px\")\n .style(\"top\", \"1px\")\n .on(\"click\", function () {\n context.selectionBagClear();\n })\n .merge(lanesBackground)\n .style(\"width\", (this.snappingColumns() * this.cellWidth) + \"px\")\n .style(\"height\", (this.snappingRows() * this.cellHeight) + \"px\")\n ;\n lanesBackground.exit()\n .each(function () {\n context.selectionBagClear();\n })\n .remove()\n ;\n\n const lanes = element2.selectAll(\"#\" + this.id() + \" > .lane\").data(this.designMode() ? [\"\"] : []);\n lanes.enter().append(\"div\")\n .attr(\"class\", \"lane\")\n .style(\"left\", \"1px\")\n .style(\"top\", \"1px\")\n ;\n lanes\n .style(\"display\", this.showLanes() ? null : \"none\")\n .style(\"width\", (this.snappingColumns() * this.cellWidth) + \"px\")\n .style(\"height\", (this.snappingRows() * this.cellHeight) + \"px\")\n .style(\"background-image\", \"linear-gradient(to right, grey 1px, transparent 1px), linear-gradient(to bottom, grey 1px, transparent 1px)\")\n .style(\"background-size\", this.cellWidth + \"px \" + this.cellHeight + \"px\")\n ;\n lanes.exit()\n .remove()\n ;\n }\n\n exit(domNode, element) {\n this.content().forEach(w => w.target(null));\n super.exit(domNode, element);\n }\n\n _createSelectionObject(d) {\n return {\n _id: d._id,\n element: () => {\n return d._element;\n },\n widget: d\n };\n }\n\n selection(_) {\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\n this._selectionBag.set(_.map(function (row) {\n return this._createSelectionObject(row);\n }, this));\n return this;\n }\n\n selectionBagClear() {\n if (!this._selectionBag.isEmpty()) {\n this._selectionBag.clear();\n this.postSelectionChange();\n }\n }\n\n selectionBagClick(d) {\n if (d !== null) {\n const selectionObj = this._createSelectionObject(d);\n if (d3Event().sourceEvent.ctrlKey) {\n if (this._selectionBag.isSelected(selectionObj)) {\n this._selectionBag.remove(selectionObj);\n this.postSelectionChange();\n } else {\n this._selectionBag.append(selectionObj);\n this.postSelectionChange();\n }\n } else {\n const selected = this._selectionBag.get();\n if (selected.length === 1 && selected[0]._id === selectionObj._id) {\n this.selectionBagClear();\n } else {\n this._selectionBag.set([selectionObj]);\n }\n this.postSelectionChange();\n }\n }\n }\n\n postSelectionChange() {\n }\n\n applyLayout(layoutArr: ICellPosition[]) {\n this.divItems.each((d, i) => {\n if (layoutArr[i]) {\n const [x, y, w, h] = layoutArr[i];\n d\n .gridCol(x)\n .gridRow(y)\n .gridColSpan(w)\n .gridRowSpan(h)\n ;\n }\n });\n this.updateGrid(true);\n }\n\n vizActivation(elem) {\n }\n}\nGrid.prototype._class += \" layout_Grid\";\n\nexport interface Grid {\n designMode(): boolean;\n designMode(_: boolean): this;\n showLanes(): boolean;\n showLanes(_: boolean): this;\n fitTo(): string;\n fitTo(_: string): this;\n\n snapping(): string;\n snapping(_: string): this;\n snappingColumns(): number;\n snappingColumns(_: number): this;\n snappingRows(): number;\n snappingRows(_: number): this;\n snappingColumns_default(): number;\n snappingColumns_default(_: number): this;\n snappingRows_default(): number;\n snappingRows_default(_: number): this;\n\n gutter(): number;\n gutter(_: number): this;\n\n surfaceShadow(): boolean;\n surfaceShadow(_: boolean): this;\n surfacePadding(): string;\n surfacePadding(_: string): this;\n surfaceBorderWidth(): number;\n surfaceBorderWidth(_: number): this;\n surfaceBackgroundColor(): string;\n surfaceBackgroundColor(_: string): this;\n\n content(): Cell[];\n content(_: Cell[]): this;\n}\n\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, { tags: [\"Basic\"], disable: w => !w.designMode() });\nGrid.prototype.publish(\"fitTo\", \"all\", \"set\", \"Sizing Strategy\", [\"all\", \"width\"], { tags: [\"Basic\"] });\nGrid.prototype.publish(\"snapping\", \"vertical\", \"set\", \"Snapping Strategy\", [\"vertical\", \"horizontal\", \"none\"]);\nGrid.prototype.publish(\"snappingColumns\", 12, \"number\", \"Snapping Columns\");\nGrid.prototype.publish(\"snappingRows\", 16, \"number\", \"Snapping Rows\");\n\nGrid.prototype.publish(\"gutter\", 6, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\n\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\"] });\n\nGrid.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Basic\"], render: false });\n","import { FlexGrid } from \"./FlexGrid\";\n\nexport class HorizontalList extends FlexGrid {\n constructor() {\n super();\n this.orientation_default(\"horizontal\");\n this.flexWrap_default(\"nowrap\");\n }\n}\nHorizontalList.prototype._class += \" layout_HorizontalList\";\n\nexport interface HorizontalList {\n orientation_default(_: \"horizontal\" | \"vertical\");\n flexWrap_default(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\");\n}\n","import { HTMLWidget, Text } from \"@hpcc-js/common\";\n\nimport \"../src/Layered.css\";\n\nexport type LayerPlacement = \"default\" | \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\n\nexport class Layered extends HTMLWidget {\n protected _contentContainer;\n _widgetPlacements;\n _widgetRatios;\n constructor() {\n super();\n\n this._tag = \"div\";\n this._widgetPlacements = [];\n this._widgetRatios = [];\n }\n\n addLayer(widget, placement: LayerPlacement = \"default\", widthRatio: number = 1, heightRatio: number = 1) {\n const widgets = this.widgets();\n widgets.push(widget ? widget : new Text().text(\"No widget defined for layer.\"));\n this.widgets(widgets);\n this._widgetPlacements.push(placement);\n this._widgetRatios.push([widthRatio, heightRatio]);\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._contentContainer = element.append(\"div\")\n .attr(\"class\", \"container\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n element.style(\"padding\", this.surfacePadding() + \"px\");\n\n const content = this._contentContainer.selectAll(\".content.id\" + this.id()).data(this.widgets(), function (d) { return d.id(); });\n content.enter().append(\"div\")\n .attr(\"class\", \"content id\" + this.id())\n .each(function (widget, idx) {\n widget.target(this);\n })\n .merge(content)\n .each(function (widget, idx) {\n const clientSize = {\n width: context.clientWidth(),\n height: context.clientHeight()\n };\n const widgetSize = context.widgetSize(idx, clientSize);\n const widgetPosition = context.widgetPosition(idx, clientSize, widgetSize);\n console.log(\"widgetPosition\", widgetPosition);\n this.style.top = widgetPosition.y + \"px\";\n this.style.left = widgetPosition.x + \"px\";\n widget\n .resize(widgetSize)\n .render()\n ;\n })\n ;\n content.exit()\n .each(function (widget, idx) {\n widget\n .target(null)\n ;\n })\n .remove()\n ;\n content.order();\n }\n\n widgetSize(idx, clientSize) {\n if (this._widgetPlacements[idx] === \"default\") {\n return {\n width: clientSize.width * this._widgetRatios[idx][0],\n height: clientSize.height * this._widgetRatios[idx][1]\n };\n } else {\n return {\n width: clientSize.width * this._widgetRatios[idx][0],\n height: clientSize.height * this._widgetRatios[idx][1]\n };\n }\n }\n widgetPosition(idx, clientSize, widgetSize) {\n switch (this._widgetPlacements[idx]) {\n default:\n return {\n x: 0,\n y: 0\n };\n case \"top\":\n return {\n x: (clientSize.width / 2) - (widgetSize.width / 2),\n y: 0\n };\n case \"bottom\":\n return {\n x: (clientSize.width / 2) - (widgetSize.width / 2),\n y: clientSize.height - widgetSize.height\n };\n case \"left\":\n return {\n x: 0,\n y: (clientSize.height / 2) - (widgetSize.height / 2)\n };\n case \"right\":\n return {\n x: clientSize.width - widgetSize.width,\n y: (clientSize.height / 2) - (widgetSize.height / 2)\n };\n case \"center\":\n return {\n x: (clientSize.width / 2) - (widgetSize.width / 2),\n y: (clientSize.height / 2) - (widgetSize.height / 2)\n };\n }\n }\n\n surfacePadding: { (): number; (_: string): Layered; };\n widgets: { (): any[]; (_: any[]): Layered; };\n}\nLayered.prototype._class += \" layout_Layered\";\n\nLayered.prototype.publish(\"surfacePadding\", 0, \"number\", \"Padding\");\nLayered.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nexport class Popup extends HTMLWidget {\n _surfaceButtons;\n _originalPosition;\n\n constructor() {\n super();\n this._tag = \"div\";\n this._surfaceButtons = [];\n }\n\n updateState(visible) {\n visible = visible || !this.popupState();\n this.popupState(visible).render();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.widget()\n .target(domNode)\n ;\n this._originalPosition = this.position();\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element\n .style(\"visibility\", this.popupState() ? null : \"hidden\")\n .style(\"opacity\", this.popupState() ? null : 0)\n .style(\"width\", this.shrinkWrap() ? this.widget().width() + \"px\" : this._size.width + \"px\")\n .style(\"height\", this.shrinkWrap() ? this.widget().height() + \"px\" : this._size.height + \"px\")\n ;\n if (this.widget().size().height === 0) {\n this.widget().resize(this.size());\n }\n }\n\n postUpdate(domNode, element) {\n let left;\n let top;\n switch (this.centerPopup()) {\n case \"container\":\n if (this._placeholderElement) {\n left = parseInt(this._placeholderElement.style(\"width\")) / 2 - this.widget().width() / 2;\n top = parseInt(this._placeholderElement.style(\"height\")) / 2 - this.widget().height() / 2;\n }\n this.position(\"absolute\");\n break;\n\n case \"window\":\n left = window.innerWidth / 2 - this.widget().width() / 2;\n top = window.innerHeight / 2 - this.widget().height() / 2;\n this.position(\"fixed\");\n break;\n\n default:\n left = 0;\n top = 0;\n this.position(this._originalPosition);\n break;\n }\n\n this.pos({ x: left, y: top });\n\n super.postUpdate(domNode, element);\n\n element\n .style(\"position\", this.position())\n .style(\"left\", this.left() + \"px\")\n .style(\"right\", this.right() + \"px\")\n .style(\"top\", this.top() + \"px\")\n .style(\"bottom\", this.bottom() + \"px\")\n ;\n }\n\n exit(domNode, element) {\n if (this.widget()) {\n this.widget().target(null);\n }\n super.exit(domNode, element);\n }\n\n click(obj) {\n console.log(\"Clicked: \" + obj.id);\n }\n\n popupState: { (): boolean; (_: boolean): Popup; };\n shrinkWrap: { (): boolean; (_: boolean): Popup; };\n centerPopup: { (): string; (_: string): Popup; };\n top: { (): number; (_: number): Popup; };\n bottom: { (): number; (_: number): Popup; };\n left: { (): number; (_: number): Popup; };\n right: { (): number; (_: number): Popup; };\n position: { (): string; (_: string): Popup; };\n\n widget: { (): any; (_: any): Popup; };\n}\nPopup.prototype._class += \" layout_Popup\";\n\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\", [\"none\", \"container\", \"window\"], {});\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\", [\"absolute\", \"relative\", \"fixed\", \"static\", \"initial\", \"inherit\"], { tags: [\"Private\"] });\n\nPopup.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\n","import { HTMLWidget, Text } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Surface } from \"./Surface\";\n\nimport \"../src/Tabbed.css\";\n\nexport class Tabbed extends HTMLWidget {\n _tabContainer;\n _contentContainer;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n clearTabs() {\n this.labels([]);\n this.widgets([]);\n return this;\n }\n\n addTab(widget, label, isActive?, callback?) {\n const widgetSize = widget.size();\n if (widgetSize.width === 0 && widgetSize.height === 0) {\n widget.size({ width: \"100%\", height: \"100%\" });\n }\n const labels = this.labels();\n const widgets = this.widgets();\n if (isActive) {\n this.activeTabIdx(this.widgets().length);\n }\n labels.push(label);\n const surface = new Surface().widget(widget ? widget : new Text().text(\"No widget defined for tab\"));\n widgets.push(surface);\n this.labels(labels);\n this.widgets(widgets);\n if (callback) {\n callback(surface);\n }\n return this;\n }\n\n widgetSize(widgetDiv) {\n const width = this.clientWidth();\n let height = this.clientHeight();\n\n const tcBox = this._tabContainer.node().getBoundingClientRect();\n if (typeof (tcBox.height) !== \"undefined\") {\n height -= tcBox.height;\n }\n return { width, height };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._tabContainer = element.append(\"div\");\n this._contentContainer = element.append(\"div\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n element.style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null);\n\n const tabs = this._tabContainer.selectAll(\".tab-button.id\" + this.id()).data(this.showTabs() ? this.labels() : [], function (d) { return d; });\n tabs.enter().append(\"span\")\n .attr(\"class\", \"tab-button id\" + this.id())\n .style(\"cursor\", \"pointer\")\n .on(\"click\", function (d, idx) {\n context.click(context.widgets()[idx].widget(), d, idx);\n context\n .activeTabIdx(idx)\n .render()\n ;\n }).merge(tabs)\n .classed(\"active\", function (d, idx) { return context.activeTabIdx() === idx; })\n .text(function (d) { return d; })\n ;\n tabs.exit().remove();\n\n const content = this._contentContainer.selectAll(\".tab-content.id\" + this.id()).data(this.widgets(), function (d) { return d.id(); });\n content.enter().append(\"div\")\n .attr(\"class\", \"tab-content id\" + this.id())\n .each(function (widget, idx) {\n widget.target(this);\n }).merge(content)\n .classed(\"active\", function (d, idx) { return context.activeTabIdx() === idx; })\n .style(\"display\", function (d, idx) { return context.activeTabIdx() === idx ? \"block\" : \"none\"; })\n .each(function (surface, idx) {\n surface.visible(context.activeTabIdx() === idx);\n if (context.activeTabIdx() === idx) {\n const wSize = context.widgetSize(d3Select(this));\n surface\n .surfaceBorderWidth(context.showTabs() ? null : 0)\n .surfacePadding(context.showTabs() ? null : 0)\n .resize(wSize)\n ;\n }\n })\n ;\n content.exit()\n .each(function (widget, idx) {\n widget\n .target(null)\n ;\n })\n .remove();\n\n switch (this.tabLocation()) {\n case \"bottom\":\n this._tabContainer\n .attr(\"class\", \"on_bottom\")\n .style(\"top\", (this._contentContainer.node().offsetHeight + this.surfacePadding()) + \"px\")\n .style(\"position\", \"absolute\")\n ;\n this._contentContainer\n .style(\"top\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null)\n .style(\"position\", \"absolute\")\n ;\n break;\n default:\n this._tabContainer\n .attr(\"class\", \"on_top\")\n .style(\"top\", null)\n .style(\"position\", \"relative\")\n ;\n this._contentContainer\n .style(\"top\", (this._tabContainer.node().offsetHeight + this.surfacePadding()) + \"px\")\n .style(\"position\", \"absolute\")\n ;\n break;\n }\n }\n\n click(widget, column, idx) {\n }\n\n showTabs: { (): boolean; (_: boolean): Tabbed; };\n surfacePadding: { (): number; (_: number): Tabbed; };\n surfacePadding_default: { (): number; (_: number): Tabbed; };\n surfacePadding_exists: () => boolean;\n activeTabIdx: { (): number; (_: number): Tabbed; };\n\n labels: { (): string[]; (_: string[]): Tabbed; };\n tabLocation: { (): string; (_: string): Tabbed; };\n widgets: { (): any[]; (_: any[]): Tabbed; };\n}\nTabbed.prototype._class += \" layout_Tabbed\";\n\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, {});\n\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","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Toolbar.css\";\n\nfunction Toolbar() {\n HTMLWidget.call(this);\n\n this._tag = \"div\";\n}\nToolbar.prototype = Object.create(HTMLWidget.prototype);\nToolbar.prototype.constructor = Toolbar;\nToolbar.prototype._class += \" layout_Toolbar\";\n\nToolbar.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\n\nToolbar.prototype.publish(\"fontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"fontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"fontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"fontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"backgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\n\nToolbar.prototype.publish(\"responsive\", true, \"boolean\", \"Adapts to pixel width\", null, { tags: [\"Basic\"] });\n\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\nToolbar.prototype.enter = function (domNode, element) {\n HTMLWidget.prototype.enter.apply(this, arguments);\n};\n\nToolbar.prototype.update = function (domNode, element) {\n HTMLWidget.prototype.update.apply(this, arguments);\n const context = this;\n\n element\n .attr(\"title\", context.title())\n .style(\"background-color\", this.backgroundColor())\n ;\n\n const title = element.selectAll(\"div.toolbar-title\")\n .data(this.title() ? [this.title()] : []);\n title.enter().append(\"div\")\n .classed(\"toolbar-title\", true)\n .append(\"span\")\n ;\n title.selectAll(\"div.toolbar-title > span\")\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n .style(\"color\", this.fontColor_exists() ? this.fontColor() : null)\n .style(\"font-family\", this.fontFamily_exists() ? this.fontFamily() : null)\n .style(\"font-weight\", this.fontBold_exists() ? (this.fontBold() ? \"bold\" : \"normal\") : null)\n .style(\"background-color\", this.backgroundColor_exists() ? this.backgroundColor() : null)\n .text(context.title())\n ;\n title.exit().remove();\n\n const childWidgets = element.selectAll(\"div.toolbar-child\")\n .data(this.widgets() !== null ? this.widgets() : [], function (d) { return d.id(); });\n\n childWidgets.enter().insert(\"div\", \"div.toolbar-title\")\n .each(function (d, i) {\n const widgetClass = context.widgetClasses()[i] ? context.widgetClasses()[i] + \" toolbar-child\" : \"toolbar-child\";\n d3Select(this).classed(widgetClass, true);\n d.target(this);\n });\n childWidgets.exit().each(function (d) {\n d.target(null);\n }).remove();\n childWidgets.order();\n};\n\nToolbar.prototype.render = function (callback) {\n const context = this;\n HTMLWidget.prototype.render.call(this, function (w) {\n const toolbarBBox = context.element().node().getBoundingClientRect();\n let minX = toolbarBBox.left + toolbarBBox.width;\n context.element().selectAll(\"div.toolbar-child\")\n .each(function (d, i) {\n const childBBox = this.getBoundingClientRect();\n if (minX > childBBox.left)\n minX = childBBox.left;\n })\n ;\n context.element().select(\".toolbar-title\")\n .style(\"width\", (minX - toolbarBBox.left - 4) + \"px\")\n ;\n if (callback) {\n callback(w);\n }\n });\n};\n\nToolbar.prototype.exit = function (domNode, element) {\n HTMLWidget.prototype.exit.apply(this, arguments);\n this.widgets().forEach(function (w) {\n w.target(null);\n });\n};\n\nexport {\n Toolbar\n};\n","import { FlexGrid } from \"./FlexGrid\";\n\nexport class VerticalList extends FlexGrid {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n this.flexWrap_default(\"nowrap\");\n }\n}\nVerticalList.prototype._class += \" layout_VerticalList\";\n\nexport interface VerticalList {\n orientation_default(_: \"horizontal\" | \"vertical\");\n flexWrap_default(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\");\n}\n"],"names":["d3Select","d3SelectAll","drag","d3Drag","pi","tau","circle","d3_identity","d","d3_reverse","arr","mirror","i","l","length","d3_textWrapping","text","width","each","select","words","split","reverse","word","line","lineHeight","attr","dy","parseFloat","tspan","append","pop","push","join","node","getComputedTextLength","d3_mergeLabels","gen","labels","domain","range","customLabels","genLength","d3_linearLegend","scale","cells","labelFormat","data","increment","map","d3_quantLegend","labelDelimiter","invert","invertExtent","d3_ordinalLegend","d3_cellOver","cellDispatcher","obj","call","d3_cellOut","d3_cellClick","shape","shapes","shapeHeight","shapeWidth","shapeRadius","path","svg","enter","classPrefix","labelWidth","selectAll","ascending","type","ticks","cellFilter","filterCells","label","filter","dataValues","labelValues","indexOf","orient","cell","cellTrans","textTrans","labelAlign","style","dispatcher","on","title","titleWidth","titleText","cellsSvg","yOffset","nodes","getBBox","height","xOffset","x","color","scaleLinear","shapePadding","useClass","locale","helper","d3_defaultLocale","specifier","d3_defaultFormatSpecifier","labelOffset","d3_defaultDelimiter","labelWrap","legendDispatcher","dispatch","legend","d3_calcType","format","legendG","d3_filterCells","cellEnter","d3_addEvents","exit","transition","remove","merge","d3_drawShapes","d3_addText","textSize","shapeSize","feature","textAlign","cellSize","Math","max","sum","slice","y","d3_placement","d3_title","_","arguments","formatLocale","formatSpecifier","toLowerCase","textWrap","value","apply","d3LegendColor","d3Format","d3ScaleOrdinal","this","_GridList.default"],"mappings":"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"}
1
+ {"version":3,"file":"index.es6.js","sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/AbsoluteSurface.ts","../src/Accordion.ts","../src/Surface.ts","../src/Cell.ts","../src/Border.ts","../src/Border2.ts","../src/Carousel.ts","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/symbol/circle.js","../../../node_modules/d3-shape/src/symbol/cross.js","../../../node_modules/d3-shape/src/symbol/diamond.js","../../../node_modules/d3-shape/src/symbol/star.js","../../../node_modules/d3-shape/src/symbol/square.js","../../../node_modules/d3-shape/src/symbol/triangle.js","../../../node_modules/d3-shape/src/symbol/wye.js","../../../node_modules/d3-shape/src/symbol.js","../../../node_modules/d3-svg-legend/src/legend.js","../../../node_modules/d3-svg-legend/src/color.js","../src/Legend.ts","../src/Modal.ts","../src/ChartPanel.ts","../src/FlexGrid.ts","../../../node_modules/grid-list/src/gridList.js","../src/Grid.ts","../src/HorizontalList.ts","../src/Layered.ts","../src/Popup.ts","../src/Tabbed.ts","../src/Toolbar.ts","../src/VerticalList.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/layout\";\r\nexport const PKG_VERSION = \"2.46.0\";\r\nexport const BUILD_VERSION = \"2.101.0\";\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/AbsoluteSurface.css\";\n\nexport class AbsoluteSurface extends HTMLWidget {\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n let xPos = 0;\n let yPos = 0;\n let width = this.clientWidth();\n let height = this.clientHeight();\n switch (this.units()) {\n case \"pixels\":\n xPos = this.widgetX();\n yPos = this.widgetY();\n width = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth());\n height = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight());\n break;\n case \"percent\":\n xPos = this.widgetX() * width / 100;\n yPos = this.widgetY() * height / 100;\n width = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth()) * width / 100;\n height = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight()) * height / 100;\n break;\n }\n element.style(\"opacity\", this.opacity());\n\n const widgets = element.selectAll(\"#\" + this._id + \" > .placeholder\").data(this.widget() ? [this.widget()] : [], function (d) { return d._id; });\n widgets.enter().append(\"div\")\n .attr(\"class\", \"placeholder\")\n .each(function (d) {\n d.target(this);\n })\n .merge(widgets)\n .style(\"left\", xPos + \"px\")\n .style(\"top\", yPos + \"px\")\n .style(\"width\", width + \"px\")\n .style(\"bottom\", height + \"px\")\n .each(function (d) {\n d\n .resize({ width, height })\n ;\n })\n ;\n widgets.exit().each(function (d) {\n d.target(null);\n }).remove();\n }\n\n exit(domNode, element) {\n if (this.widget()) {\n this.widget().target(null);\n }\n super.exit(domNode, element);\n }\n\n units: { (): string; (_: string): AbsoluteSurface; };\n widgetX: { (): number; (_: number): AbsoluteSurface; };\n widgetY: { (): number; (_: number): AbsoluteSurface; };\n widgetWidth: { (): string; (_: string): AbsoluteSurface; };\n widgetHeight: { (): string; (_: string): AbsoluteSurface; };\n widget: { (): any; (_: any): AbsoluteSurface; };\n opacity: { (): number; (_: number): AbsoluteSurface; };\n}\nAbsoluteSurface.prototype._class += \" layout_AbsoluteSurface\";\n\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","import { FAChar, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Accordion.css\";\n\nexport class Accordion extends HTMLWidget {\n protected _isClosed: boolean;\n titleSpan;\n iconDiv;\n ul;\n icon;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._isClosed = false;\n }\n\n pushListItem(widget, prepend: boolean = false, protect: boolean = false) {\n const contentArr = this.content();\n\n widget._protected = protect;\n\n if (prepend) {\n contentArr.unshift(widget);\n } else {\n contentArr.push(widget);\n }\n this.content(contentArr);\n return this;\n }\n\n clearListItems() {\n const arr = [];\n for (const i in this.content()) {\n if (this.content()[i]._protected) {\n arr.push(this.content()[i]);\n }\n }\n this.content(arr);\n return this;\n }\n\n collapseClick(element) {\n if (element.classed(\"closed\")) {\n this._isClosed = false;\n element.classed(\"open\", true);\n element.classed(\"closed\", false);\n } else {\n this._isClosed = true;\n element.classed(\"open\", false);\n element.classed(\"closed\", true);\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._isClosed = this.defaultCollapsed();\n element.classed(this._isClosed ? \"closed\" : \"open\", true);\n\n this.titleSpan = element.append(\"span\").classed(\"collapsible-title\", true);\n this.iconDiv = element.append(\"div\").classed(\"collapsible-icon\", true);\n this.ul = element.append(\"ul\");\n\n this.icon = new FAChar()\n .size({ height: 24, width: 24 })\n .target(this.iconDiv.node());\n\n this.iconDiv.on(\"click\", function () {\n context.collapseClick(element);\n context.render();\n });\n this.titleSpan.on(\"click\", function () {\n context.collapseClick(element);\n context.render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const this_id = \"\";\n this.titleSpan.text(context.title().length > 0 ? context.title() + this_id : \"Accordion [\" + context._id + \"]\" + this_id);\n const rows = this.ul.selectAll(\"#\" + context._id + \" > ul > li\").data(this.content(), function (d) {\n return d._id;\n });\n rows.enter()\n .append(function (widget) {\n const li = document.createElement(\"li\");\n if (widget._target === null) {\n const wSize = widget.size();\n if (wSize.width === 0 || wSize.height === 0) {\n const cSize = context.size();\n widget.size({\n width: cSize.width,\n height: cSize.width\n });\n }\n widget.target(li);\n } else {\n return widget._target;\n }\n return li;\n })\n ;\n rows.exit().remove();\n\n this.icon\n .text_colorFill(this.titleFontColor())\n .char(this._isClosed ? this.closedIcon() : this.openIcon()).render()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n content: { (): any[]; (_: any[]): Accordion; };\n title: { (): string; (_: string): Accordion; };\n openIcon: { (): string; (_: string): Accordion; };\n closedIcon: { (): string; (_: string): Accordion; };\n titleFontColor: { (): string; (_: string): Accordion; };\n titleBackgroundColor: { (): any; (_: any): Accordion; };\n defaultCollapsed: { (): boolean; (_: boolean): Accordion; };\n}\nAccordion.prototype._class += \" layout_Accordion\";\n\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\", \"\\uf147\", \"string\", \"Icon to display when list is open\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"closedIcon\", \"\\uf196\", \"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\"] });\n\nAccordion.prototype.publish(\"defaultCollapsed\", false, \"boolean\", \"Collapsed by default if true\", null, { tags: [\"Private\"] });\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Surface.css\";\n\nexport class Surface extends HTMLWidget {\n _surfaceButtons;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._surfaceButtons = [];\n }\n\n widgetSize(titleDiv, widgetDiv) {\n let width = this.clientWidth();\n let height = this.clientHeight();\n if (this.title()) {\n height -= this.calcHeight(titleDiv);\n }\n height -= this.calcFrameHeight(widgetDiv);\n width -= this.calcFrameWidth(widgetDiv);\n return { width, height };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element2) {\n super.update(domNode, element2);\n const context = this;\n\n element2\n .classed(\"shadow2\", this.surfaceShadow())\n .style(\"border-width\", this.surfaceBorderWidth_exists() ? this.surfaceBorderWidth() + \"px\" : null)\n .style(\"border-color\", this.surfaceBorderColor())\n .style(\"border-radius\", this.surfaceBorderRadius_exists() ? this.surfaceBorderRadius() + \"px\" : null)\n .style(\"background-color\", this.surfaceBackgroundColor())\n ;\n\n const titles = element2.selectAll(\".surfaceTitle\").data(this.title() ? [this.title()] : []);\n titles.enter().insert(\"h3\", \"div\")\n .attr(\"class\", \"surfaceTitle\")\n .merge(titles)\n .text(function (d) { return d; })\n .style(\"text-align\", this.surfaceTitleAlignment())\n .style(\"color\", this.surfaceTitleFontColor())\n .style(\"font-size\", this.surfaceTitleFontSize_exists() ? this.surfaceTitleFontSize() + \"px\" : null)\n .style(\"font-family\", this.surfaceTitleFontFamily())\n .style(\"font-weight\", this.surfaceTitleFontBold() ? \"bold\" : \"normal\")\n .style(\"background-color\", this.surfaceTitleBackgroundColor())\n .style(\"padding\", this.surfaceTitlePadding_exists() ? this.surfaceTitlePadding() + \"px\" : null)\n .style(\"title\", this.altText_exists() ? this.altText() : null)\n ;\n titles.exit().remove();\n\n const surfaceTitle = element2.select(\".surfaceTitle\");\n\n const surfaceButtons = surfaceTitle.append(\"div\").attr(\"class\", \"html-button-container\").selectAll(\".surface-button\").data(this.buttonAnnotations());\n surfaceButtons.enter().append(\"button\").classed(\"surface-button\", true)\n .each(function (button, idx) {\n const el = context._surfaceButtons[idx] = d3Select(this)\n .attr(\"class\", \"surface-button\" + (button.class ? \" \" + button.class : \"\"))\n .attr(\"id\", button.id)\n .style(\"padding\", button.padding)\n .style(\"width\", button.width)\n .style(\"height\", button.height)\n .style(\"cursor\", \"pointer\");\n if (button.font === \"FontAwesome\") {\n el\n .style(\"background\", \"transparent\")\n .style(\"border\", \"none\")\n .on(\"click\", function (d) { context.click(d); })\n .append(\"i\")\n .attr(\"class\", \"fa\")\n .text(function () { return button.label; });\n } else {\n el\n .text(function () { return button.label; })\n .on(\"click\", function (d) { context.click(d); });\n }\n })\n ;\n surfaceButtons.exit()\n .each(function (_d, idx) {\n const element = d3Select(this);\n delete context._surfaceButtons[idx];\n element.remove();\n })\n ;\n const widgets = element2.selectAll(\"#\" + this._id + \" > .surfaceWidget\").data(this.widget() ? [this.widget()] : [], function (d) { return d._id; });\n\n widgets.enter().append(\"div\")\n .attr(\"class\", \"surfaceWidget\")\n .each(function (d) {\n d3Select(context.element().node().parentElement).classed(\"content-icon content-icon-\" + (d.classID().split(\"_\")[1]), true);\n d.target(this);\n })\n .merge(widgets)\n .style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null)\n .each(function (d) {\n const widgetSize = context.widgetSize(element2.select(\"h3\"), d3Select(this));\n if (widgetSize.width < 0) widgetSize.width = 0;\n if (widgetSize.height < 0) widgetSize.height = 0;\n d\n .resize({ width: widgetSize.width, height: widgetSize.height })\n ;\n })\n ;\n widgets.exit().each(function (d) {\n d.target(null);\n }).remove();\n }\n\n exit(domNode, element) {\n if (this.widget()) {\n this.widget().target(null);\n }\n super.exit(domNode, element);\n }\n\n title: { (): string; (_: string): Surface; };\n altText: { (): string; (_: string): Surface; };\n altText_exists: () => boolean;\n surfaceTitlePadding: { (): number; (_: number): Surface; };\n surfaceTitlePadding_exists: () => boolean;\n surfaceTitleFontSize: { (): number; (_: number): Surface; };\n surfaceTitleFontSize_exists: () => boolean;\n surfaceTitleFontColor: { (): string; (_: string): Surface; };\n surfaceTitleFontFamily: { (): string; (_: string): Surface; };\n surfaceTitleFontBold: { (): boolean; (_: boolean): Surface; };\n surfaceTitleBackgroundColor: { (): string; (_: string): Surface; };\n surfaceTitleAlignment: { (): string; (_: string): Surface; };\n\n surfaceShadow: { (): boolean; (_: boolean): Surface; };\n surfacePadding: { (): string; (_: string): Surface; };\n surfacePadding_exists: () => boolean;\n surfaceBackgroundColor: { (): string; (_: string): Surface; };\n surfaceBorderWidth: { (): number; (_: number): Surface; };\n surfaceBorderWidth_exists: () => boolean;\n surfaceBorderColor: { (): string; (_: string): Surface; };\n surfaceBorderRadius: { (): number; (_: number): Surface; };\n surfaceBorderRadius_exists: () => boolean;\n\n buttonAnnotations: { (): any[]; (_: any[]): Surface; };\n\n widget: { (): Widget; (_: Widget): Surface; };\n\n // Events ---\n click(obj) {\n console.log(\"Clicked: \" + obj.id);\n }\n}\nSurface.prototype._class += \" layout_Surface\";\n\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, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleBackgroundColor\", null, \"html-color\", \"Title Background Color\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\nSurface.prototype.publish(\"surfaceTitleAlignment\", \"center\", \"set\", \"Title Alignment\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], disable: (w: any) => !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\"] });\n\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Private\"] });\n\nSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"] });\n","import { Widget } from \"@hpcc-js/common\";\nimport { select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport { Surface } from \"./Surface\";\n\nimport \"../src/Cell.css\";\n\nexport class Cell extends Surface {\n _indicateTheseIds;\n\n constructor() {\n super();\n this._indicateTheseIds = [];\n }\n\n indicateTheseIds(): any[];\n indicateTheseIds(_: any[]): Cell;\n indicateTheseIds(_?: any[]): any[] | Cell {\n if (!arguments.length) return this._indicateTheseIds;\n this._indicateTheseIds = _;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n element\n .classed(\"layout_Surface\", true)\n .on(\"mouseenter\", function () { context.onMouseEnter(); })\n .on(\"mouseleave\", function () { context.onMouseLeave(); })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n\n onMouseEnter() {\n const arr = this.indicateTheseIds();\n const opacity = this.indicatorOpacity();\n const indicatorBorderColor = this.indicatorBorderColor();\n const indicatorGlowColor = this.indicatorGlowColor();\n for (let i = 0; i < arr.length; i++) {\n const otherElement = d3Select(\"#\" + arr[i]);\n const otherWidget: Widget = otherElement.datum() as Widget;\n if (otherElement && otherWidget) {\n otherElement.append(\"div\")\n .attr(\"class\", \"update-indicator\")\n .style(\"width\", otherWidget.width() + \"px\")\n .style(\"height\", otherWidget.height() + \"px\")\n .style(\"opacity\", opacity)\n .style(\"border-color\", indicatorBorderColor)\n .style(\"-webkit-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\n .style(\"-moz-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\n .style(\"box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\n ;\n }\n }\n }\n\n onMouseLeave() {\n const arr = this.indicateTheseIds();\n for (let i = 0; i < arr.length; i++) {\n d3SelectAll(\"#\" + arr[i] + \" > div.update-indicator\").remove();\n }\n }\n\n title: { (): string; (_: string): Cell; };\n widget: { (): Widget; (_: Widget): Cell; };\n\n gridRow: { (): number; (_: number): Cell; };\n gridCol: { (): number; (_: number): Cell; };\n gridRowSpan: { (): number; (_: number): Cell; };\n gridColSpan: { (): number; (_: number): Cell; };\n\n indicatorGlowColor: { (): string; (_: string): Cell; };\n indicatorBorderColor: { (): string; (_: string): Cell; };\n indicatorOpacity: { (): number; (_: number): Cell; };\n\n}\nCell.prototype._class += \" layout_Cell\";\n\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\"] });\n\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\", 0.8, \"number\", \"Opacity of update-indicator\", null, { tags: [\"Basic\"] });\n","import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { Cell } from \"./Cell\";\n\nimport \"../src/Border.css\";\n\nexport class Border extends HTMLWidget {\n _colCount: number;\n _rowCount: number;\n _colSize: number;\n _rowSize: number;\n _shrinkWrapBoxes;\n _watch;\n _offsetX;\n _offsetY;\n _dragCell;\n _dragCellSize;\n _dragCellStartSize;\n _handleTop;\n _handleLeft;\n _dragPrevX;\n _dragPrevY;\n _cellSizes;\n contentDiv;\n _scrollBarWidth;\n _borderHandles;\n _sectionTypeArr;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n\n this._colCount = 0;\n this._rowCount = 0;\n this._colSize = 0;\n this._rowSize = 0;\n\n this._shrinkWrapBoxes = {};\n\n this.content([]);\n this.sectionTypes([]);\n }\n\n watchWidget(widget) {\n if (this._watch === undefined) {\n this._watch = {};\n }\n if (this._watch[widget.id()]) {\n this._watch[widget.id()].remove();\n delete this._watch[widget.id()];\n }\n if (widget) {\n const context = this;\n this._watch[widget.id()] = widget.monitor(function (paramId, newVal, oldVal) {\n if (oldVal !== newVal) {\n context.lazyPostUpdate();\n }\n });\n }\n }\n\n lazyPostUpdate = Utility.debounce(function () {\n this.postUpdate();\n }, 100);\n\n applyLayoutType() {\n const layoutObj = this.borderLayoutObject();\n this.content().forEach(function (cell, i) {\n cell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n cell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n cell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n cell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n cell._dragHandles = this.cellSpecificDragHandles(this.sectionTypes()[i]);\n }, this);\n }\n cellSpecificDragHandles(sectionType) {\n switch (sectionType) {\n case \"top\": return [\"s\"];\n case \"right\": return [\"w\"];\n case \"bottom\": return [\"n\"];\n case \"left\": return [\"e\"];\n case \"center\": return [];\n }\n }\n\n borderLayoutObject(layoutType?) {\n const retObj = {};\n const context = this;\n let topSize;\n let topPerc;\n let bottomSize;\n let bottomPerc;\n let leftSize;\n let leftPerc;\n let rightSize;\n let rightPerc;\n\n const bcRect = this.target().getBoundingClientRect();\n const gridRect: any = {};\n gridRect.top = bcRect.top;\n gridRect.left = bcRect.left;\n gridRect.bottom = bcRect.bottom;\n gridRect.right = bcRect.right;\n if (this.target() instanceof SVGElement) {\n gridRect.width = parseFloat(this.target().getAttribute(\"width\"));\n gridRect.height = parseFloat(this.target().getAttribute(\"height\"));\n } else {\n gridRect.width = bcRect.width;\n gridRect.height = bcRect.height;\n }\n if (this.sectionTypes().indexOf(\"top\") !== -1) {\n topSize = this.topSize();\n topPerc = this.topPercentage();\n if (typeof (this._shrinkWrapBoxes[\"top\"]) !== \"undefined\") {\n topSize = this._shrinkWrapBoxes[\"top\"].height + this.gutter();\n topPerc = 0;\n }\n }\n if (this.sectionTypes().indexOf(\"bottom\") !== -1) {\n bottomSize = this.bottomSize();\n bottomPerc = this.bottomPercentage();\n if (typeof (this._shrinkWrapBoxes[\"bottom\"]) !== \"undefined\") {\n bottomSize = this._shrinkWrapBoxes[\"bottom\"].height + this.gutter();\n bottomPerc = 0;\n }\n }\n if (this.sectionTypes().indexOf(\"left\") !== -1) {\n leftSize = this.leftSize();\n leftPerc = this.leftPercentage();\n if (typeof (this._shrinkWrapBoxes[\"left\"]) !== \"undefined\") {\n leftSize = this._shrinkWrapBoxes[\"left\"].width + this.gutter();\n leftPerc = 0;\n }\n }\n if (this.sectionTypes().indexOf(\"right\") !== -1) {\n rightSize = this.rightSize();\n rightPerc = this.rightPercentage();\n if (typeof (this._shrinkWrapBoxes[\"right\"]) !== \"undefined\") {\n rightSize = this._shrinkWrapBoxes[\"right\"].width + this.gutter();\n rightPerc = 0;\n }\n }\n\n const t = _sectionPlacementObject({\n width: { \"px\": 0, \"%\": 100 },\n height: { \"px\": topSize, \"%\": topPerc },\n top: { \"px\": 0, \"%\": 0 },\n left: { \"px\": 0, \"%\": 0 }\n });\n const b = _sectionPlacementObject({\n width: { \"px\": 0, \"%\": 100 },\n height: { \"px\": bottomSize, \"%\": bottomPerc },\n top: { \"px\": 0, \"%\": 100 },\n left: { \"px\": 0, \"%\": 0 }\n });\n b.top -= b.height;\n const l = _sectionPlacementObject({\n width: { \"px\": leftSize, \"%\": leftPerc },\n height: { \"px\": -t.height - b.height, \"%\": 100 },\n top: { \"px\": t.height, \"%\": 0 },\n left: { \"px\": 0, \"%\": 0 }\n });\n const r = _sectionPlacementObject({\n width: { \"px\": rightSize, \"%\": rightPerc },\n height: { \"px\": -t.height - b.height, \"%\": 100 },\n top: { \"px\": t.height, \"%\": 0 },\n left: { \"px\": 0, \"%\": 100 }\n });\n r.left -= r.width;\n const c = _sectionPlacementObject({\n width: { \"px\": -r.width - l.width, \"%\": 100 },\n height: { \"px\": -t.height - b.height, \"%\": 100 },\n top: { \"px\": t.height, \"%\": 0 },\n left: { \"px\": l.width, \"%\": 0 }\n });\n retObj[\"top\"] = t;\n retObj[\"bottom\"] = b;\n retObj[\"right\"] = r;\n retObj[\"left\"] = l;\n retObj[\"center\"] = c;\n return retObj;\n\n function _sectionPlacementObject(obj) {\n obj.width[\"px\"] = typeof (obj.width[\"px\"]) !== \"undefined\" ? obj.width[\"px\"] : 0;\n obj.width[\"%\"] = typeof (obj.width[\"%\"]) !== \"undefined\" ? obj.width[\"%\"] : 0;\n obj.height[\"px\"] = typeof (obj.height[\"px\"]) !== \"undefined\" ? obj.height[\"px\"] : 0;\n obj.height[\"%\"] = typeof (obj.height[\"%\"]) !== \"undefined\" ? obj.height[\"%\"] : 0;\n const ret = {\n width: obj.width[\"px\"] + (obj.width[\"%\"] / 100 * context.width()),\n height: obj.height[\"px\"] + (obj.height[\"%\"] / 100 * context.height()),\n top: obj.top[\"px\"] + (obj.top[\"%\"] / 100 * context.height()) + context.gutter() / 2,\n left: obj.left[\"px\"] + (obj.left[\"%\"] / 100 * context.width()) + context.gutter() / 2\n };\n return ret;\n }\n }\n\n clearContent(sectionType) {\n if (!sectionType) {\n this.content().forEach(function (contentWidget) {\n contentWidget.target(null);\n return false;\n });\n d3Select(\"#\" + this.id() + \" > div.borderHandle\")\n .classed(\"borderHandleDisabled\", true)\n ;\n delete this._watch;\n this.content([]);\n this.sectionTypes([]);\n } else {\n const idx = this.sectionTypes().indexOf(sectionType);\n if (idx >= 0) {\n if (this._watch && this.content()[idx]) {\n delete this._watch[this.content()[idx].id()];\n }\n this.content()[idx].target(null);\n d3Select(\"#\" + this.id() + \" > div.borderHandle_\" + sectionType)\n .classed(\"borderHandleDisabled\", true)\n ;\n this.content().splice(idx, 1);\n this.sectionTypes().splice(idx, 1);\n }\n }\n }\n\n hasContent(sectionType, widget, title) {\n return this.sectionTypes().indexOf(sectionType) >= 0;\n }\n\n setContent(sectionType, widget, title?) {\n this.clearContent(sectionType);\n title = typeof (title) !== \"undefined\" ? title : \"\";\n if (widget) {\n const cell = new Cell()\n .surfaceBorderWidth(0)\n .widget(widget)\n .title(title)\n ;\n this.watchWidget(widget);\n this.content().push(cell);\n this.sectionTypes().push(sectionType);\n }\n return this;\n }\n\n getCell(id) {\n const idx = this.sectionTypes().indexOf(id);\n if (idx >= 0) {\n return this.content()[idx];\n }\n return null;\n }\n\n getContent(id) {\n const idx = this.sectionTypes().indexOf(id);\n if (idx >= 0) {\n return this.content()[idx].widget();\n }\n return null;\n }\n\n setLayoutOffsets() {\n this._offsetX = this._element.node().getBoundingClientRect().left + (this.gutter() / 2);\n this._offsetY = this._element.node().getBoundingClientRect().top + (this.gutter() / 2);\n }\n\n dragStart(handle) {\n const event = d3Event();\n event.sourceEvent.stopPropagation();\n const context = this;\n\n this._dragCell = handle;\n this._dragCellStartSize = this[handle + \"Size\"]();\n\n if (this[handle + \"ShrinkWrap\"]()) {\n this[handle + \"Percentage\"](0);\n this[handle + \"ShrinkWrap\"](false);\n }\n\n const handleElm = d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + handle);\n context._handleTop = parseFloat(handleElm.style(\"top\").split(\"px\")[0]);\n context._handleLeft = parseFloat(handleElm.style(\"left\").split(\"px\")[0]);\n\n this._dragPrevX = event.sourceEvent.clientX;\n this._dragPrevY = event.sourceEvent.clientY;\n }\n dragTick(handle) {\n const context = this;\n\n const event = d3Event();\n const xDelta = this._dragPrevX - event.sourceEvent.clientX;\n const yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\n switch (handle) {\n case \"top\":\n case \"bottom\":\n _moveHandles(handle, yDelta);\n break;\n case \"right\":\n case \"left\":\n _moveHandles(handle, xDelta);\n break;\n }\n\n function _moveHandles(handle2, delta) {\n if (delta === 0) return;\n const handles = d3SelectAll(\"#\" + context.id() + \" > div.borderHandle\");\n const grabbedHandle = d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + handle2);\n\n if (grabbedHandle.classed(\"borderHandle_top\")) {\n grabbedHandle.style(\"top\", (context._handleTop - delta) + \"px\");\n context._cellSizes.topHeight = context._handleTop - delta;\n context._cellSizes.leftHeight = context._cellSizes.height;\n context._cellSizes.leftHeight -= context._cellSizes.topHeight;\n context._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n context._cellSizes.rightHeight = context._cellSizes.leftHeight;\n } else if (grabbedHandle.classed(\"borderHandle_right\")) {\n grabbedHandle.style(\"left\", (context._handleLeft - delta) + \"px\");\n context._cellSizes.rightWidth = context._cellSizes.width - context._handleLeft + delta;\n } else if (grabbedHandle.classed(\"borderHandle_bottom\")) {\n grabbedHandle.style(\"top\", (context._handleTop - delta) + \"px\");\n context._cellSizes.bottomHeight = context._cellSizes.height - context._handleTop + delta;\n context._cellSizes.leftHeight = context._cellSizes.height;\n context._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n context._cellSizes.leftHeight -= context._cellSizes.topHeight;\n context._cellSizes.rightHeight = context._cellSizes.leftHeight;\n } else if (grabbedHandle.classed(\"borderHandle_left\")) {\n grabbedHandle.style(\"left\", (context._handleLeft - delta) + \"px\");\n context._cellSizes.leftWidth = context._handleLeft - delta;\n }\n\n handles.each(function () {\n const handle3 = d3Select(this);\n if (handle3.classed(\"borderHandle_top\")) {\n handle3.style(\"width\", context._cellSizes.width + \"px\");\n handle3.style(\"top\", (context._cellSizes.topHeight - 3) + \"px\");\n } else if (handle3.classed(\"borderHandle_right\")) {\n handle3.style(\"left\", (context._cellSizes.width - context._cellSizes.rightWidth) + \"px\");\n handle3.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n handle3.style(\"height\", context._cellSizes.rightHeight + \"px\");\n } else if (handle3.classed(\"borderHandle_bottom\")) {\n handle3.style(\"width\", context._cellSizes.width + \"px\");\n handle3.style(\"top\", (context._cellSizes.height - context._cellSizes.bottomHeight - 3) + \"px\");\n } else if (handle3.classed(\"borderHandle_left\")) {\n handle3.style(\"left\", context._cellSizes.leftWidth + \"px\");\n handle3.style(\"height\", context._cellSizes.leftHeight + \"px\");\n handle3.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n }\n });\n }\n }\n dragEnd(handle) {\n if (handle) {\n const event = d3Event();\n const xDelta = this._dragPrevX - event.sourceEvent.clientX;\n const yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\n switch (handle) {\n case \"top\":\n if (yDelta !== 0) {\n this.topPercentage(0);\n this.topSize(this.topSize() === 0 ? this.getContent(\"top\").getBBox().height - yDelta : this.topSize() - yDelta);\n }\n break;\n case \"right\":\n if (xDelta !== 0) {\n this.rightPercentage(0);\n this.rightSize(this.rightSize() === 0 ? this.getContent(\"right\").getBBox().width + xDelta : this.rightSize() + xDelta);\n }\n break;\n case \"bottom\":\n if (yDelta !== 0) {\n this.bottomPercentage(0);\n this.bottomSize(this.bottomSize() === 0 ? this.getContent(\"bottom\").getBBox().height + yDelta : this.bottomSize() + yDelta);\n }\n break;\n case \"left\":\n if (xDelta !== 0) {\n this.leftPercentage(0);\n this.leftSize(this.leftSize() === 0 ? this.getContent(\"left\").getBBox().width - xDelta : this.leftSize() - xDelta);\n }\n break;\n }\n\n this._dragPrevX = event.sourceEvent.clientX;\n this._dragPrevY = event.sourceEvent.clientY;\n }\n this.render();\n }\n\n size(_?) {\n const retVal = HTMLWidget.prototype.size.apply(this, arguments);\n if (arguments.length && this.contentDiv) {\n this.contentDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n element.style(\"position\", \"relative\");\n this.contentDiv = element.append(\"div\").classed(\"border-content\", true);\n this._scrollBarWidth = Platform.getScrollbarWidth();\n this._borderHandles = [\"top\", \"left\", \"right\", \"bottom\"];\n\n const handles = element.selectAll(\"div.borderHandle\").data(this._borderHandles);\n handles.enter().append(\"div\")\n .classed(\"borderHandle\", true)\n .each(function (handle) {\n const h = d3Select(this);\n h.classed(\"borderHandle_\" + handle, true)\n .classed(\"borderHandleDisabled\", context.getContent(handle) === null)\n ;\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._sectionTypeArr = this.sectionTypes();\n const context = this;\n\n element.classed(\"design-mode\", this.designMode());\n\n this.setLayoutOffsets();\n\n const rows = this.contentDiv.selectAll(\".cell_\" + this._id).data(this.content(), function (d) { return d._id; });\n const rowsUpdate = rows.enter().append(\"div\")\n .classed(\"cell_\" + this._id, true)\n .style(\"position\", \"absolute\")\n .each(function (d, i) {\n d3Select(this).classed(\"border-cell border-cell-\" + context._sectionTypeArr[i], true);\n d.target(this);\n d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + context._sectionTypeArr[i])\n .classed(\"borderHandleDisabled\", false);\n }).merge(rows);\n rowsUpdate\n .each(function (d, idx) {\n const sectionType = context.sectionTypes()[idx];\n if (typeof (context[sectionType + \"ShrinkWrap\"]) !== \"undefined\" && context[sectionType + \"ShrinkWrap\"]()) {\n d.render();\n context._shrinkWrapBoxes[sectionType] = d.widget().getBBox(true);\n } else {\n delete context._shrinkWrapBoxes[sectionType];\n }\n });\n\n const drag = d3Drag()\n .on(\"start\", function (d, i) { context.dragStart.call(context, d, i); })\n .on(\"drag\", function (d, i) { context.dragTick.call(context, d, i); })\n .on(\"end\", function (d, i) { context.dragEnd.call(context, d, i); })\n ;\n if (this.designMode()) {\n element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").call(drag);\n } else {\n element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").on(\".drag\", null);\n }\n\n const layoutObj = this.borderLayoutObject();\n this.content().forEach(function (cell, i) {\n cell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n cell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n cell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n cell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n cell._dragHandles = [];\n }, this);\n\n rowsUpdate\n .style(\"left\", function (d) { return d._fixedLeft + \"px\"; })\n .style(\"top\", function (d) { return d._fixedTop + \"px\"; })\n .style(\"width\", function (d) { return d._fixedWidth - context.gutter() + \"px\"; })\n .style(\"height\", function (d) { return d._fixedHeight - context.gutter() + \"px\"; })\n .each(function (d) {\n d._placeholderElement\n .attr(\"draggable\", context.designMode())\n .selectAll(\".dragHandle\")\n .attr(\"draggable\", context.designMode())\n ;\n d\n .surfacePadding(context.surfacePadding())\n .resize()\n ;\n });\n rows.exit().each(function (d) {\n d.target(null);\n }).remove();\n\n this.getCellSizes();\n\n element\n .selectAll(\"#\" + this.id() + \" > div.borderHandle\")\n .each(function () {\n const handle = d3Select(this);\n if (handle.classed(\"borderHandle_top\")) {\n handle.style(\"width\", context._cellSizes.width + \"px\");\n handle.style(\"top\", (context._cellSizes.topHeight - 3) + \"px\");\n } else if (handle.classed(\"borderHandle_right\")) {\n handle.style(\"left\", (context._cellSizes.width - context._cellSizes.rightWidth) + \"px\");\n handle.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n handle.style(\"height\", context._cellSizes.rightHeight + \"px\");\n } else if (handle.classed(\"borderHandle_bottom\")) {\n handle.style(\"width\", context._cellSizes.width + \"px\");\n handle.style(\"top\", (context._cellSizes.height - context._cellSizes.bottomHeight - 3) + \"px\");\n } else if (handle.classed(\"borderHandle_left\")) {\n handle.style(\"left\", context._cellSizes.leftWidth + \"px\");\n handle.style(\"height\", context._cellSizes.leftHeight + \"px\");\n handle.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\n }\n\n })\n ;\n }\n\n getCellSizes() {\n const context = this;\n context._cellSizes = {};\n const contentRect = this.element().node().getBoundingClientRect();\n context._cellSizes.width = contentRect.width;\n context._cellSizes.height = contentRect.height;\n this.element()\n .selectAll(\"#\" + this.id() + \" > div > div.border-cell\")\n .each(function () {\n const cell = d3Select(this);\n if (typeof cell.node === \"function\") {\n const rect = cell.node().getBoundingClientRect();\n if (cell.classed(\"border-cell-top\")) {\n context._cellSizes.topHeight = rect.height;\n } else if (cell.classed(\"border-cell-left\")) {\n context._cellSizes.leftWidth = rect.width;\n context._cellSizes.leftHeight = rect.height;\n } else if (cell.classed(\"border-cell-right\")) {\n context._cellSizes.rightWidth = rect.width;\n context._cellSizes.rightHeight = rect.height;\n } else if (cell.classed(\"border-cell-bottom\")) {\n context._cellSizes.bottomHeight = rect.height;\n }\n }\n });\n const sizes = [\"height\", \"width\", \"topHeight\", \"bottomHeight\", \"leftHeight\", \"rightHeight\", \"leftWidth\", \"rightWidth\"];\n sizes.forEach(function (size) {\n context._cellSizes[size] = context._cellSizes[size] === undefined ? 0 : context._cellSizes[size];\n });\n }\n\n postUpdate(domNode, element) {\n const context = this;\n this.content().forEach(function (n) {\n if (n._element.node() !== null && n.widget()) {\n const prevBox = n.widget().getBBox(false, true);\n const currBox = n.widget().getBBox(true, true);\n if (prevBox.width !== currBox.width || prevBox.height !== currBox.height) {\n context.lazyRender();\n }\n }\n });\n }\n\n exit(domNode, element) {\n this.content().forEach(w => w.target(null));\n super.exit(domNode, element);\n }\n\n designMode: { (): boolean; (_: boolean): Border; };\n\n content: { (): any[]; (_: any[]): Border; };\n\n gutter: { (): number; (_: number): Border; };\n\n topShrinkWrap: { (): boolean; (_: boolean): Border; };\n leftShrinkWrap: { (): boolean; (_: boolean): Border; };\n rightShrinkWrap: { (): boolean; (_: boolean): Border; };\n bottomShrinkWrap: { (): boolean; (_: boolean): Border; };\n\n topSize: { (): number; (_: number): Border; };\n leftSize: { (): number; (_: number): Border; };\n rightSize: { (): number; (_: number): Border; };\n bottomSize: { (): number; (_: number): Border; };\n\n topPercentage: { (): number; (_: number): Border; };\n leftPercentage: { (): number; (_: number): Border; };\n rightPercentage: { (): number; (_: number): Border; };\n bottomPercentage: { (): number; (_: number): Border; };\n\n surfacePadding: { (): number; (_: number): Border; };\n\n sectionTypes: { (): any[]; (_: any[]): Border; };\n}\nBorder.prototype._class += \" layout_Border\";\n\nBorder.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\n\nBorder.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Intermediate\"] });\n\nBorder.prototype.publish(\"gutter\", 0, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\n\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\"] });\n\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\"] });\n\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\"] });\n\nBorder.prototype.publish(\"surfacePadding\", 0, \"number\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\n\nBorder.prototype.publish(\"sectionTypes\", [], \"array\", \"Section Types sharing an index with 'content' - Used to determine position/size.\", null, { tags: [\"Private\"] });\n","import { BBox, HTMLWidget, Platform, Widget } from \"@hpcc-js/common\";\n\nimport \"../src/Border2.css\";\n\nexport type OverflowT = \"hidden\" | \"scroll\" | \"visible\" | \"auto\";\nexport type ChartPanelSectionT = \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\nexport class WidgetDiv {\n private _div;\n private _overlay: boolean = false;\n private _overflowX: OverflowT = \"visible\";\n private _overflowY: OverflowT = \"visible\";\n private _widget: Widget;\n\n constructor(div) {\n this._div = div;\n }\n\n overlay(): boolean;\n overlay(_: boolean): this;\n overlay(_?: boolean): boolean | this {\n if (!arguments.length) return this._overlay;\n this._overlay = _;\n return this;\n }\n\n overflowX(): OverflowT;\n overflowX(_: OverflowT): this;\n overflowX(_?: OverflowT): OverflowT | this {\n if (!arguments.length) return this._overflowX;\n this._overflowX = _;\n this._div.style(\"overflow-x\", _);\n return this;\n }\n overflowY(): OverflowT;\n overflowY(_: OverflowT): this;\n overflowY(_?: OverflowT): OverflowT | this {\n if (!arguments.length) return this._overflowY;\n this._overflowY = _;\n this._div.style(\"overflow-y\", _);\n return this;\n }\n\n element() {\n return this._div;\n }\n\n node(): SVGElement | HTMLElement {\n return this._div.node();\n }\n\n widget(): Widget;\n widget(_: Widget): this;\n widget(_?: Widget): Widget | this {\n if (!arguments.length) return this._widget;\n if (this._widget !== _) {\n if (this._widget) {\n this._widget.target(null);\n }\n this._widget = _;\n if (this._widget) {\n this._widget.target(this._div.node());\n }\n }\n return this;\n }\n\n resize(size: { width: number, height: number }) {\n if (this._widget) {\n this._div\n .style(\"width\", `${size.width}px`)\n .style(\"height\", `${size.height}px`)\n ;\n this._widget.resize(size);\n }\n return this;\n }\n\n async render(getBBox?, availableHeight?: number, availableWidth?: number): Promise<BBox | undefined> {\n let overflowX = this.overflowX();\n if(!this.overlay() && overflowX === \"visible\") {\n overflowX = null;\n }\n let overflowY = this.overflowY();\n if(!this.overlay() && overflowY === \"visible\") {\n overflowY = null;\n }\n this._div\n .style(\"height\", this.overlay() ? \"0px\" : null)\n .style(\"overflow-x\", overflowX)\n .style(\"overflow-y\", overflowY)\n ;\n if (this._widget) {\n return this._widget.renderPromise().then(w => {\n if (getBBox && this._widget.visible()) {\n const retVal = this._widget.getBBox();\n retVal.width += 8;\n if (availableHeight !== undefined && retVal.height > availableHeight) {\n retVal.width += Platform.getScrollbarWidth();\n }\n if (availableWidth !== undefined && retVal.width > availableWidth) {\n retVal.height += Platform.getScrollbarWidth();\n }\n if (this.overlay()) {\n retVal.height = 0;\n } else {\n retVal.height += 4;\n }\n return retVal;\n }\n return getBBox ? { x: 0, y: 0, width: 0, height: 0 } : undefined;\n });\n } else {\n return Promise.resolve(getBBox ? { x: 0, y: 0, width: 0, height: 0 } : undefined);\n }\n }\n}\n\nexport class Border2 extends HTMLWidget {\n\n protected _bodyElement;\n\n protected _topWA: WidgetDiv;\n protected _leftWA: WidgetDiv;\n protected _centerWA: WidgetDiv;\n protected _rightWA: WidgetDiv;\n protected _bottomWA: WidgetDiv;\n protected _topPrevOverflow: OverflowT;\n protected _leftPrevOverflow: OverflowT;\n protected _rightPrevOverflow: OverflowT;\n protected _bottomPrevOverflow: OverflowT;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n \n const topElement = element.append(\"header\");\n\n this._bodyElement = element.append(\"div\").attr(\"class\", \"body\");\n const centerElement = this._bodyElement.append(\"div\").attr(\"class\", \"center\");\n const leftElement = this._bodyElement.append(\"div\").attr(\"class\", \"lhs\");\n const rightElement = this._bodyElement.append(\"div\").attr(\"class\", \"rhs\");\n\n const bottomElement = element.append(\"div\").attr(\"class\", \"footer\");\n\n this._topWA = new WidgetDiv(topElement);\n this._centerWA = new WidgetDiv(centerElement);\n this._leftWA = new WidgetDiv(leftElement);\n this._rightWA = new WidgetDiv(rightElement);\n this._bottomWA = new WidgetDiv(bottomElement);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._topWA.element().style(\"display\", this.showTop() ? null : \"none\");\n this._rightWA.element().style(\"display\", this.showRight() ? null : \"none\");\n this._bottomWA.element().style(\"display\", this.showBottom() ? null : \"none\");\n this._leftWA.element().style(\"display\", this.showLeft() ? null : \"none\");\n if(this.topOverflowX() !== this._topWA.overflowX()) {\n this._topWA.overflowX(this.topOverflowX());\n }\n if(this.rightOverflowX() !== this._rightWA.overflowX()) {\n this._rightWA.overflowX(this.rightOverflowX());\n }\n if(this.bottomOverflowX() !== this._bottomWA.overflowX()) {\n this._bottomWA.overflowX(this.bottomOverflowX());\n }\n if(this.leftOverflowX() !== this._leftWA.overflowX()) {\n this._leftWA.overflowX(this.leftOverflowX());\n }\n if(this.topOverflowY() !== this._topWA.overflowY()) {\n this._topWA.overflowY(this.topOverflowY());\n }\n if(this.rightOverflowY() !== this._rightWA.overflowY()) {\n this._rightWA.overflowY(this.rightOverflowY());\n }\n if(this.bottomOverflowY() !== this._bottomWA.overflowY()) {\n this._bottomWA.overflowY(this.bottomOverflowY());\n }\n if(this.leftOverflowY() !== this._leftWA.overflowY()) {\n this._leftWA.overflowY(this.leftOverflowY());\n }\n this.element()\n .style(\"width\", `${this.width()}px`)\n .style(\"height\", `${this.height()}px`)\n ;\n }\n\n private targetNull(w?: Widget) {\n if (w) {\n w.target(null);\n }\n }\n\n exit(domNode, element) {\n this.targetNull(this.center());\n this.targetNull(this.bottom());\n this.targetNull(this.right());\n this.targetNull(this.left());\n this.targetNull(this.top());\n super.exit(domNode, element);\n }\n\n swap(sectionA: ChartPanelSectionT, sectionB: ChartPanelSectionT): this {\n const a = this[sectionA]();\n const b = this[sectionB]();\n this.targetNull(a);\n this.targetNull(b);\n this[`_${sectionA}WA`].widget(null);\n this[`_${sectionB}WA`].widget(null);\n this[sectionA](b);\n this[sectionB](a);\n return this;\n }\n\n render(callback?: (w: Widget) => void): this {\n const retVal = super.render(w => {\n if (this._topWA) {\n this._topWA\n .widget(this.top())\n .overlay(this.topOverlay())\n .render(true).then(async topBBox => {\n const bottomBBox: BBox = await this._bottomWA.widget(this.bottom()).render(true, undefined, this.width()) as BBox;\n const availableHeight = this.height() - (topBBox.height + bottomBBox.height);\n const leftBBox: BBox = await this._leftWA.widget(this.left()).render(true, availableHeight) as BBox;\n const rightBBox: BBox = await this._rightWA.widget(this.right()).render(true, availableHeight) as BBox;\n \n if (this.bottomHeight_exists()) {\n bottomBBox.height = this.bottomHeight();\n }\n const bodyWidth = this.width() - (leftBBox.width + rightBBox.width);\n const bodyHeight = this.height() - (topBBox.height + bottomBBox.height);\n \n const centerOverflowX = this.centerOverflowX();\n const centerOverflowY = this.centerOverflowY();\n\n const scrollCenterX = [\"auto\", \"scroll\"].indexOf(centerOverflowX) !== -1;\n const scrollCenterY = [\"auto\", \"scroll\"].indexOf(centerOverflowY) !== -1;\n if(scrollCenterX || scrollCenterY) {\n this._centerWA\n .overflowX(this.centerOverflowX())\n .overflowY(this.centerOverflowY())\n .widget(this.center())\n .resize({\n width: bodyWidth,\n height: bodyHeight\n })\n .render()\n ;\n }\n this._bodyElement.style(\"height\", `${bodyHeight}px`);\n const promises = [\n this._topWA\n .overflowX(this.topOverflowX())\n .overflowY(this.topOverflowY())\n .resize({\n width: this.width(),\n height: topBBox.height\n })\n .render(),\n this._leftWA\n .overflowX(this.leftOverflowX())\n .overflowY(this.leftOverflowY())\n .resize({\n width: leftBBox.width,\n height: bodyHeight\n })\n .render(),\n this._rightWA\n .overflowX(this.rightOverflowX())\n .overflowY(this.rightOverflowY())\n .resize({\n width: rightBBox.width,\n height: bodyHeight\n })\n .render(),\n this._centerWA\n .overflowX(this.centerOverflowX())\n .overflowY(this.centerOverflowY())\n .widget(this.center())\n .resize({\n width: bodyWidth,\n height: bodyHeight\n })\n .render(),\n this._bottomWA\n .overflowX(this.bottomOverflowX())\n .overflowY(this.bottomOverflowY())\n .resize({\n width: this.width(),\n height: bottomBBox.height\n })\n .render()\n ];\n Promise.all(promises).then(promises => {\n if (callback) {\n callback(this);\n }\n });\n })\n ;\n } else {\n if (callback) {\n callback(this);\n }\n }\n });\n return retVal;\n }\n}\nBorder2.prototype._class += \" layout_Border2\";\n\nexport interface Border2 {\n top(): Widget;\n top(_: Widget): this;\n topOverlay(): boolean;\n topOverlay(_: boolean): this;\n left(): Widget;\n left(_: Widget): this;\n center(): Widget;\n center(_: Widget): this;\n right(): Widget;\n right(_: Widget): this;\n bottom(): Widget;\n bottom(_: Widget): this;\n bottomHeight(): number;\n bottomHeight(_: number): this;\n bottomHeight_exists(): boolean;\n topOverflowX(): OverflowT;\n topOverflowX(_: OverflowT): this;\n rightOverflowX(): OverflowT;\n rightOverflowX(_: OverflowT): this;\n bottomOverflowX(): OverflowT;\n bottomOverflowX(_: OverflowT): this;\n leftOverflowX(): OverflowT;\n leftOverflowX(_: OverflowT): this;\n centerOverflowX(): OverflowT;\n centerOverflowX(_: OverflowT): this;\n topOverflowY(): OverflowT;\n topOverflowY(_: OverflowT): this;\n rightOverflowY(): OverflowT;\n rightOverflowY(_: OverflowT): this;\n bottomOverflowY(): OverflowT;\n bottomOverflowY(_: OverflowT): this;\n leftOverflowY(): OverflowT;\n leftOverflowY(_: OverflowT): this;\n centerOverflowY(): OverflowT;\n centerOverflowY(_: OverflowT): this;\n showTop(): boolean;\n showTop(_: boolean): this;\n showRight(): boolean;\n showRight(_: boolean): this;\n showBottom(): boolean;\n showBottom(_: boolean): this;\n showLeft(): boolean;\n showLeft(_: boolean): this;\n topOverflowX_default(_: OverflowT);\n rightOverflowX_default(_: OverflowT);\n bottomOverflowX_default(_: OverflowT);\n leftOverflowX_default(_: OverflowT);\n centerOverflowX_default(_: OverflowT);\n topOverflowY_default(_: OverflowT);\n rightOverflowY_default(_: OverflowT);\n bottomOverflowY_default(_: OverflowT);\n leftOverflowY_default(_: OverflowT);\n centerOverflowY_default(_: OverflowT);\n}\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\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"rightOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the right widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"bottomOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the bottom widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"leftOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the left widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"centerOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the center widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"topOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the top widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"rightOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the right widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"bottomOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the bottom widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"leftOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the left widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"centerOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the center widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\nBorder2.prototype.publish(\"top\", null, \"widget\", \"Top Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"topOverlay\", false, \"boolean\", \"Overlay Top Widget\");\nBorder2.prototype.publish(\"left\", null, \"widget\", \"Left Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"center\", null, \"widget\", \"Center Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"right\", null, \"widget\", \"Right Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"bottom\", null, \"widget\", \"Bottom Widget\", undefined, { render: false });\nBorder2.prototype.publish(\"bottomHeight\", null, \"number\", \"Bottom Fixed Height\", undefined, { optional: true });\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\n\nimport \"../src/Carousel.css\";\n\nexport class Carousel extends HTMLWidget {\n\n protected _prevActive: number = 0;\n protected _root;\n\n activeWidget(): Widget {\n return this.widgets()[this.active()];\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._root = element.append(\"div\")\n .attr(\"id\", `${this.id()}_root`)\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const active = this.active();\n const width = this.width();\n this._root\n .style(\"width\", `${width}px`)\n .style(\"height\", `${this.height()}px`)\n ;\n const widgetElements = this._root.selectAll(`#${this.id()}_root > .carouselItem`).data(this.widgets(), d => d.id());\n const update = widgetElements.enter().append(\"div\")\n .attr(\"class\", \"carouselItem\")\n .each(function (w) {\n w.target(this);\n })\n .merge(widgetElements)\n .style(\"left\", (d, i) => `${(i - this._prevActive) * width}px`)\n .style(\"width\", `${width}px`)\n ;\n if (this._prevActive !== active) {\n update\n .style(\"display\", (d, i) => i === this._prevActive || i === active ? null : \"none\") // Must be called before render callback (not inside transition)\n .transition().duration(this.transitionDuration())\n .style(\"left\", (d, i) => `${(i - active) * width}px`)\n .on(\"end\", function (d, i) {\n d3Select(this).style(\"display\", () => i === active ? null : \"none\");\n })\n ;\n this._prevActive = active;\n }\n widgetElements.exit()\n .each(function (w) {\n w.target(null);\n })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n this.widgets().forEach(w => w.target(null));\n super.exit(domNode, element);\n }\n\n render(callback): this {\n return super.render(w => {\n if (!this.visible() || this.isDOMHidden()) {\n if (callback) {\n callback(w);\n }\n } else {\n const aw = this.activeWidget();\n if (aw) {\n aw\n .resize(this.size())\n .render(w2 => {\n if (callback) {\n callback(w);\n }\n })\n ;\n }\n }\n });\n }\n}\nCarousel.prototype._class += \" layout_Carousel\";\n\nexport interface Carousel {\n widgets(): Widget[];\n widgets(_: Widget[]): this;\n active(): number;\n active(_: number): this;\n transitionDuration(): Widget[];\n transitionDuration(_: Widget[]): this;\n}\n\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","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","import { select } from 'd3-selection'\nimport { format, formatPrefix } from 'd3-format'\n\nconst d3_identity = (d) => d\n\nconst d3_reverse = (arr) => {\n const mirror = [];\n for (let i = 0, l = arr.length; i < l; i++) {\n mirror[i] = arr[l-i-1];\n }\n return mirror;\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst d3_textWrapping = (text, width) => {\n text.each(function() {\n var text = select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.2, //ems\n y = text.attr(\"y\"),\n dy = parseFloat(text.attr(\"dy\")) || 0,\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", dy + \"em\");\n\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + dy + \"em\").text(word);\n }\n }\n });\n}\n\n\nconst d3_mergeLabels = (gen=[], labels, domain, range) => {\n\n if (typeof labels === \"object\"){\n if(labels.length === 0) return gen;\n\n let i = labels.length;\n for (; i < gen.length; i++) {\n labels.push(gen[i]);\n }\n return labels;\n } else if (typeof labels === \"function\") {\n const customLabels = []\n const genLength = gen.length\n for (let i=0; i < genLength; i++){\n customLabels.push(labels({\n i,\n genLength,\n generatedLabels : gen,\n domain,\n range }))\n }\n return customLabels\n }\n\n return gen;\n }\n\nconst d3_linearLegend = (scale, cells, labelFormat) => {\n let data = [];\n\n if (cells.length > 1){\n data = cells;\n\n } else {\n const domain = scale.domain(),\n increment = (domain[domain.length - 1] - domain[0])/(cells - 1)\n let i = 0;\n\n for (; i < cells; i++){\n data.push(domain[0] + i*increment);\n }\n }\n\n const labels = data.map(labelFormat);\n return {data: data,\n labels: labels,\n feature: d => scale(d)};\n}\n\nconst d3_quantLegend = (scale, labelFormat, labelDelimiter) => {\n const labels = scale.range().map( d => {\n const invert = scale.invertExtent(d);\n return labelFormat(invert[0]) + \" \" + labelDelimiter + \" \" + labelFormat(invert[1]);\n });\n\n return {data: scale.range(),\n labels: labels,\n feature: d3_identity\n };\n}\n\nconst d3_ordinalLegend= scale => ({data: scale.domain(),\n labels: scale.domain(),\n feature: d => scale(d) }\n)\n\nconst d3_cellOver = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellover\", obj, d);\n}\n\nconst d3_cellOut = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellout\", obj, d);\n}\n\nconst d3_cellClick = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellclick\", obj, d);\n}\n\n\nexport default {\n\n d3_drawShapes: (shape, shapes, shapeHeight, shapeWidth, shapeRadius, path) => {\n if (shape === \"rect\"){\n shapes.attr(\"height\", shapeHeight)\n .attr(\"width\", shapeWidth);\n\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius)\n\n } else if (shape === \"line\") {\n shapes.attr(\"x1\", 0).attr(\"x2\", shapeWidth).attr(\"y1\", 0).attr(\"y2\", 0);\n\n } else if (shape === \"path\") {\n shapes.attr(\"d\", path);\n }\n },\n\n d3_addText: function (svg, enter, labels, classPrefix, labelWidth){\n enter.append(\"text\").attr(\"class\", classPrefix + \"label\");\n const text = svg.selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .data(labels)\n .text(d3_identity);\n\n if (labelWidth){\n svg.selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .call(d3_textWrapping, labelWidth)\n }\n\n return text\n },\n\n d3_calcType: function (scale, ascending, cells, labels, labelFormat, labelDelimiter){\n const type = scale.invertExtent ?\n d3_quantLegend(scale, labelFormat, labelDelimiter) : scale.ticks ?\n d3_linearLegend(scale, cells, labelFormat) : d3_ordinalLegend(scale);\n\n //for d3.scaleSequential that doesn't have a range function\n const range = scale.range && scale.range() || scale.domain()\n type.labels = d3_mergeLabels(type.labels, labels, scale.domain(), range);\n\n if (ascending) {\n type.labels = d3_reverse(type.labels);\n type.data = d3_reverse(type.data);\n }\n\n return type;\n },\n\n d3_filterCells: (type, cellFilter) => {\n let filterCells = type.data.map((d, i) => ({ data: d, label: type.labels[i] }))\n .filter(cellFilter)\n const dataValues = filterCells.map(d => d.data)\n const labelValues = filterCells.map(d => d.label)\n type.data = type.data.filter(d => dataValues.indexOf(d) !== -1)\n type.labels = type.labels.filter(d => labelValues.indexOf(d) !== -1)\n return type\n },\n\n d3_placement: (orient, cell, cellTrans, text, textTrans, labelAlign) => {\n cell.attr(\"transform\", cellTrans);\n text.attr(\"transform\", textTrans);\n if (orient === \"horizontal\"){\n text.style(\"text-anchor\", labelAlign);\n }\n },\n\n d3_addEvents: function(cells, dispatcher){\n cells.on(\"mouseover.legend\", function (d) { d3_cellOver(dispatcher, d, this); })\n .on(\"mouseout.legend\", function (d) { d3_cellOut(dispatcher, d, this); })\n .on(\"click.legend\", function (d) { d3_cellClick(dispatcher, d, this); });\n },\n\n d3_title: (svg, title, classPrefix, titleWidth) => {\n if (title !== \"\"){\n\n const titleText = svg.selectAll('text.' + classPrefix + 'legendTitle');\n\n titleText.data([title])\n .enter()\n .append('text')\n .attr('class', classPrefix + 'legendTitle');\n\n svg.selectAll('text.' + classPrefix + 'legendTitle')\n .text(title)\n\n if (titleWidth){\n svg.selectAll('text.' + classPrefix + 'legendTitle')\n .call(d3_textWrapping, titleWidth)\n }\n\n const cellsSvg = svg.select('.' + classPrefix + 'legendCells')\n const yOffset = svg.select('.' + classPrefix + 'legendTitle').nodes()\n .map(d => d.getBBox().height)[0],\n\n xOffset = -cellsSvg.nodes().map(function(d) { return d.getBBox().x})[0];\n cellsSvg.attr('transform', 'translate(' + xOffset + ',' + (yOffset) + ')');\n\n }\n },\n\n d3_defaultLocale: {\n format,\n formatPrefix\n },\n\n d3_defaultFormatSpecifier: '.01f',\n\n d3_defaultDelimiter: 'to'\n}\n","import helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\n\nimport { sum } from \"d3-array\"\n\nexport default function color() {\n let scale = scaleLinear(),\n shape = \"rect\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 2,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\n useClass = false,\n title = \"\",\n locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelOffset = 10,\n labelAlign = \"middle\",\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n path,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\")\n\n function legend(svg) {\n const type = helper.d3_calcType(\n scale,\n ascending,\n cells,\n labels,\n locale.format(specifier),\n labelDelimiter\n ),\n legendG = svg.selectAll(\"g\").data([scale])\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\n\n const cellEnter = cell\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n let shapes = svg\n .selectAll(\n \"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\"\n )\n .data(type.data)\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher)\n\n cell\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n\n shapes = shapes.merge(shapes)\n\n helper.d3_drawShapes(\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n path\n )\n const text = helper.d3_addText(\n svg,\n cellEnter,\n type.labels,\n classPrefix,\n labelWrap\n )\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell)\n\n // sets placement\n const textSize = text.nodes().map(d => d.getBBox()),\n shapeSize = shapes.nodes().map(d => d.getBBox())\n //sets scale\n //everything is fill except for line which is stroke,\n if (!useClass) {\n if (shape == \"line\") {\n shapes.style(\"stroke\", type.feature)\n } else {\n shapes.style(\"fill\", type.feature)\n }\n } else {\n shapes.attr(\"class\", d => `${classPrefix}swatch ${type.feature(d)}`)\n }\n\n let cellTrans,\n textTrans,\n textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? 0.5 : 1\n\n //positions cells and text\n if (orient === \"vertical\") {\n const cellSize = textSize.map((d, i) =>\n Math.max(d.height, shapeSize[i].height)\n )\n\n cellTrans = (d, i) => {\n const height = sum(cellSize.slice(0, i))\n return `translate(0, ${height + i * shapePadding})`\n }\n\n textTrans = (d, i) =>\n `translate( ${shapeSize[i].width +\n shapeSize[i].x +\n labelOffset}, ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\n } else if (orient === \"horizontal\") {\n cellTrans = (d, i) =>\n `translate(${i * (shapeSize[i].width + shapePadding)},0)`\n textTrans = (d, i) => `translate(${shapeSize[i].width * textAlign +\n shapeSize[i].x},\n ${shapeSize[i].height + shapeSize[i].y + labelOffset + 8})`\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign)\n helper.d3_title(svg, title, classPrefix, titleWidth)\n\n cell.transition().style(\"opacity\", 1)\n }\n\n legend.scale = function(_) {\n if (!arguments.length) return scale\n scale = _\n return legend\n }\n\n legend.cells = function(_) {\n if (!arguments.length) return cells\n if (_.length > 1 || _ >= 2) {\n cells = _\n }\n return legend\n }\n\n legend.cellFilter = function(_) {\n if (!arguments.length) return cellFilter\n cellFilter = _\n return legend\n }\n\n legend.shape = function(_, d) {\n if (!arguments.length) return shape\n if (\n _ == \"rect\" ||\n _ == \"circle\" ||\n _ == \"line\" ||\n (_ == \"path\" && typeof d === \"string\")\n ) {\n shape = _\n path = d\n }\n return legend\n }\n\n legend.shapeWidth = function(_) {\n if (!arguments.length) return shapeWidth\n shapeWidth = +_\n return legend\n }\n\n legend.shapeHeight = function(_) {\n if (!arguments.length) return shapeHeight\n shapeHeight = +_\n return legend\n }\n\n legend.shapeRadius = function(_) {\n if (!arguments.length) return shapeRadius\n shapeRadius = +_\n return legend\n }\n\n legend.shapePadding = function(_) {\n if (!arguments.length) return shapePadding\n shapePadding = +_\n return legend\n }\n\n legend.labels = function(_) {\n if (!arguments.length) return labels\n labels = _\n return legend\n }\n\n legend.labelAlign = function(_) {\n if (!arguments.length) return labelAlign\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _\n }\n return legend\n }\n\n legend.locale = function(_) {\n if (!arguments.length) return locale\n locale = formatLocale(_)\n return legend\n }\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return legend.locale().format(specifier)\n specifier = formatSpecifier(_)\n return legend\n }\n\n legend.labelOffset = function(_) {\n if (!arguments.length) return labelOffset\n labelOffset = +_\n return legend\n }\n\n legend.labelDelimiter = function(_) {\n if (!arguments.length) return labelDelimiter\n labelDelimiter = _\n return legend\n }\n\n legend.labelWrap = function(_) {\n if (!arguments.length) return labelWrap\n labelWrap = _\n return legend\n }\n\n legend.useClass = function(_) {\n if (!arguments.length) return useClass\n if (_ === true || _ === false) {\n useClass = _\n }\n return legend\n }\n\n legend.orient = function(_) {\n if (!arguments.length) return orient\n _ = _.toLowerCase()\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _\n }\n return legend\n }\n\n legend.ascending = function(_) {\n if (!arguments.length) return ascending\n ascending = !!_\n return legend\n }\n\n legend.classPrefix = function(_) {\n if (!arguments.length) return classPrefix\n classPrefix = _\n return legend\n }\n\n legend.title = function(_) {\n if (!arguments.length) return title\n title = _\n return legend\n }\n\n legend.titleWidth = function(_) {\n if (!arguments.length) return titleWidth\n titleWidth = _\n return legend\n }\n\n legend.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n return legend\n }\n\n legend.on = function() {\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value\n }\n\n return legend\n}\n","import { instanceOfIHighlight } from \"@hpcc-js/api\";\nimport { Database, Palette, SVGWidget, Widget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleOrdinal as d3ScaleOrdinal } from \"d3-scale\";\nimport {\n symbol as d3Symbol,\n symbolCircle as d3SymbolCircle,\n symbolCross as d3SymbolCross,\n symbolDiamond as d3SymbolDiamond,\n symbolSquare as d3SymbolSquare,\n symbolStar as d3SymbolStar,\n symbolTriangle as d3SymbolTriangle,\n symbolWye as d3SymbolWye\n} from \"d3-shape\";\nimport { legendColor as d3LegendColor } from \"d3-svg-legend\";\nimport { ChartPanel } from \"./ChartPanel\";\n\nexport class Legend extends SVGWidget {\n _owner: ChartPanel;\n _targetWidget: Widget;\n _targetWidgetMonitor;\n _legendOrdinal;\n _disabled: string[] = [];\n\n private _symbolTypeMap = {\n \"circle\": d3SymbolCircle,\n \"cross\": d3SymbolCross,\n \"diamond\": d3SymbolDiamond,\n \"square\": d3SymbolSquare,\n \"star\": d3SymbolStar,\n \"triangle\": d3SymbolTriangle,\n \"wye\": d3SymbolWye\n };\n\n constructor(owner: ChartPanel) {\n super();\n this._owner = owner;\n this._drawStartPos = \"origin\";\n\n const context = this;\n this._legendOrdinal = d3LegendColor()\n .shape(\"path\", d3Symbol().type(d3SymbolCircle).size(150)())\n .shapePadding(10)\n .shapeRadius(10)\n .on(\"cellclick\", function (d) {\n context.onClick(d, this);\n })\n .on(\"cellover\", (d) => {\n context.onOver(d, this);\n })\n .on(\"cellout\", (d) => {\n context.onOut(d, this);\n })\n ;\n }\n\n isDisabled(d: string | Database.Field): boolean {\n if (typeof d === \"undefined\") {\n return false;\n } else if (typeof d === \"string\") {\n return d.indexOf(\"__\") === 0 || this._disabled.indexOf(d) >= 0;\n } else if (d instanceof Database.Field) {\n return d.id().indexOf(\"__\") === 0 || this._disabled.indexOf(d.id()) >= 0;\n }\n return this._disabled.indexOf(d) >= 0;\n }\n\n filteredFields(): Database.Field[] {\n switch (this.dataFamily()) {\n case \"2D\":\n return this.fields();\n case \"ND\":\n return this.fields().filter(d => !this.isDisabled(d));\n }\n return this.fields();\n }\n\n filteredColumns(): string[] {\n switch (this.dataFamily()) {\n case \"2D\":\n return this.columns();\n case \"ND\":\n return this.columns().filter(d => !this.isDisabled(d));\n }\n return this.columns();\n }\n\n filteredData(): any[][] {\n switch (this.dataFamily()) {\n case \"2D\":\n return this.data().filter(row => !this.isDisabled(row[0]));\n case \"ND\":\n const disabledCols: { [key: number]: boolean } = {};\n let anyDisabled: boolean = false;\n this.columns().forEach((col, idx) => {\n const disabled = this.isDisabled(col);\n disabledCols[idx] = disabled;\n if (disabled) {\n anyDisabled = true;\n }\n });\n return !anyDisabled ? this.data() : this.data().map(row => {\n return row.filter((cell, idx) => !disabledCols[idx]);\n });\n }\n return this.data();\n }\n\n isRainbow() {\n const widget = this.getWidget();\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\n }\n\n targetWidget(): Widget;\n targetWidget(_: Widget): this;\n targetWidget(_?: Widget): Widget | this {\n if (!arguments.length) return this._targetWidget;\n this._targetWidget = _;\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n if (this._targetWidget) {\n const context = this;\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\n switch (key) {\n case \"chart\":\n case \"columns\":\n case \"data\":\n case \"paletteID\":\n context.lazyRender();\n break;\n }\n });\n }\n return this;\n }\n\n getWidget() {\n if (this._targetWidget) {\n switch (this._targetWidget.classID()) {\n case \"composite_MultiChart\":\n return (this._targetWidget as any).chart();\n }\n }\n return this._targetWidget;\n }\n\n getPalette(): Palette.OrdinalPaletteFunc | Palette.RainbowPaletteFunc {\n const widget = this.getWidget();\n if (widget && widget._palette) {\n switch (widget._palette.type()) {\n case \"ordinal\":\n return Palette.ordinal(widget._palette.id());\n case \"rainbow\":\n return Palette.rainbow(widget._palette.id());\n }\n }\n return Palette.ordinal(\"default\");\n }\n\n getPaletteType() {\n return this.getPalette().type();\n }\n\n fillColorFunc() {\n const widget = this.getWidget();\n if (widget && widget.fillColor) {\n // Legend will render before the widget, so its possible the widgets palette will not have switched yet...\n if (widget._palette && widget.paletteID && widget._palette.name !== widget.paletteID()) {\n widget._palette = widget._palette.switch(widget.paletteID());\n }\n return (row, col, sel) => {\n return widget.fillColor(row, col, sel);\n };\n }\n const palette = Palette.ordinal(widget && widget.paletteID ? widget.paletteID() || \"default\" : \"default\");\n return (row, col, sel) => {\n return palette(col);\n };\n }\n\n fillColor(row, col, sel) {\n return this.fillColorFunc()(row, col, sel);\n }\n\n protected _g;\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\")\n .attr(\"class\", \"legendOrdinal\")\n ;\n }\n\n calcMetaData() {\n let dataArr = [];\n let total = 0;\n let maxLabelWidth = 0;\n const colLength = this.columns().length;\n \n if (this._targetWidget) {\n const columns = this.columns();\n switch (this.getPaletteType()) {\n case \"ordinal\":\n const fillColor = this.fillColorFunc();\n let val = 0;\n switch (this.dataFamily()) {\n case \"2D\":\n dataArr = this.data().map(function (n, i) {\n val = this.data()[i].slice(1, colLength).reduce((acc, n) => acc + n, 0);\n const disabled = this.isDisabled(n[0]);\n if(!disabled)total += val;\n const label = n[0] + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n const textSize = this.textSize(label);\n if(maxLabelWidth < textSize.width)maxLabelWidth = textSize.width;\n return [fillColor(n, n[0], false), n[0], label];\n }, this);\n break;\n case \"ND\":\n const widgetColumns = this.columns().filter(col => col.indexOf(\"__\") !== 0);\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n, i) {\n val = this.data().reduce((acc, n) => acc + n[i + 1], 0);\n const disabled = this.isDisabled(columns[i+1]);\n const label = n + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n if(!disabled)total += val;\n const textSize = this.textSize(label);\n if(maxLabelWidth < textSize.width)maxLabelWidth = textSize.width;\n return [fillColor(undefined, n, false), n, label];\n }, this);\n break;\n default:\n const widgetColumns2 = this.columns();\n dataArr = widgetColumns2.map(function (n) {\n return [fillColor(undefined, n, false), n];\n }, this);\n break;\n }\n break;\n case \"rainbow\":\n const palette = this.getPalette() as Palette.RainbowPaletteFunc;\n const format = d3Format(this.rainbowFormat());\n const widget = this.getWidget();\n const steps = this.rainbowBins();\n const weightMin: number = widget._dataMinWeight;\n const weightMax: number = widget._dataMaxWeight;\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n dataArr.push([palette(weightMin, weightMin, weightMax), format(weightMin)]);\n for (let x = 1; x < steps - 1; ++x) {\n let mid = stepWeightDiff * x;\n if (Math.floor(mid) > parseInt(dataArr[0][1])) {\n mid = Math.floor(mid);\n }\n dataArr.push([palette(mid, weightMin, weightMax), format(mid)]);\n }\n dataArr.push([palette(weightMax, weightMin, weightMax), format(weightMax)]);\n break;\n }\n }\n return {\n dataArr,\n total,\n maxLabelWidth\n };\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n \n const { dataArr, maxLabelWidth, total } = this.calcMetaData();\n\n const radius = this.shapeRadius();\n const size = this.radiusToSymbolSize(radius);\n\n const strokeWidth = 1;\n\n let shapePadding = this.itemPadding();// + strokeWidth;\n if(this.orientation() === \"horizontal\") {\n shapePadding += maxLabelWidth - (radius * 2);\n }\n\n const ordinal = d3ScaleOrdinal()\n .domain(dataArr.map(row => row[1]))\n .range(dataArr.map(row => row[0]));\n this._legendOrdinal\n .shape(\"path\", d3Symbol().type(this._symbolTypeMap[this.symbolType()]).size(size)())\n .orient(this.orientation())\n .title(this.title())\n .labelWrap(this.labelMaxWidth())\n .labelAlign(this.labelAlign())\n .shapePadding(shapePadding)\n .scale(ordinal)\n .labels(d => dataArr[d.i][2])\n ;\n \n this._g.call(this._legendOrdinal);\n\n this.updateDisabled(element, dataArr);\n\n const legendCellsBbox = this._g.select(\".legendCells\").node().getBBox();\n let offsetX = Math.abs(legendCellsBbox.x);\n let offsetY = Math.abs(legendCellsBbox.y) + strokeWidth;\n \n if(this.orientation() === \"horizontal\") {\n if(this.labelAlign() === \"start\") {\n offsetX += strokeWidth;\n } else if(this.labelAlign() === \"end\") {\n offsetX -= strokeWidth;\n }\n if(this.width() > legendCellsBbox.width) {\n const extraWidth = this.width() - legendCellsBbox.width;\n offsetX += (extraWidth/2);\n }\n } else if (this.orientation() === \"vertical\") {\n offsetX += strokeWidth;\n if(this._containerSize.height > legendCellsBbox.height) {\n const extraHeight = this.height() - legendCellsBbox.height;\n offsetY += (extraHeight/2);\n }\n }\n\n this._g.attr(\"transform\", `translate(${offsetX}, ${offsetY})`);\n this.pos({\n x: 0,\n y: 0\n });\n this._legendOrdinal\n .labelOffset(this.itemPadding())\n ;\n const legendTotal = this._g.selectAll(\".legendTotal\").data(dataArr.length && this.showLegendTotal() ? [total] : []);\n const totalText = `Total: ${total}`;\n const totalOffsetX = -offsetX;\n const totalOffsetY = legendCellsBbox.height + this.itemPadding() + strokeWidth;\n this.enableOverflowScroll(false);\n this.enableOverflow(true);\n legendTotal\n .enter()\n .append(\"text\")\n .classed(\"legendTotal\", true)\n .merge(legendTotal)\n .attr(\"transform\", `translate(${totalOffsetX}, ${totalOffsetY})`)\n .text(totalText)\n ;\n legendTotal.exit().remove();\n }\n\n updateDisabled(element, dataArr) {\n element\n .style(\"cursor\", \"pointer\")\n .selectAll(\"path.swatch\").filter((d, i) => i < dataArr.length)\n .style(\"stroke\", (d, i) => dataArr[i][0])\n .style(\"fill\", (d, i) =>\n this._disabled.indexOf(d) < 0 ? dataArr[i][0] : \"white\"\n )\n ;\n }\n\n postUpdate(domNode, element) {\n let w;\n if (this._boundingBox) {\n w = this._boundingBox.width;\n this._boundingBox.width = this._size.width;\n }\n super.postUpdate(domNode, element);\n if (w !== undefined) {\n this._boundingBox.width = w;\n }\n this._parentRelativeDiv.style(\"overflow\", \"hidden\");\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n radiusToSymbolSize(radius) {\n const circleSize = Math.pow(radius, 2) * Math.PI;\n switch(this.symbolType()){\n case \"star\":\n return circleSize * 0.45;\n case \"triangle\":\n return circleSize * 0.65;\n case \"cross\":\n case \"diamond\":\n case \"wye\":\n return circleSize * 0.75;\n case \"circle\":\n return circleSize;\n case \"square\":\n return circleSize * 1.3;\n }\n }\n\n onClick(d, domNode) {\n switch (this.getPaletteType()) {\n case \"ordinal\":\n switch (this.dataFamily()) {\n case \"2D\":\n case \"ND\":\n const disabledIdx = this._disabled.indexOf(d);\n if (disabledIdx < 0) {\n this._disabled.push(d);\n } else {\n this._disabled.splice(disabledIdx, 1);\n }\n this._owner.refreshColumns();\n this._owner.refreshData();\n this._owner.render();\n break;\n }\n break;\n }\n }\n\n onOver(d, domNode) {\n if (instanceOfIHighlight(this._owner)) {\n switch (this.getPaletteType()) {\n case \"ordinal\":\n switch (this.dataFamily()) {\n case \"2D\":\n case \"ND\":\n if (this._disabled.indexOf(d) < 0) {\n this._owner.highlightColumn(d);\n }\n break;\n }\n break;\n }\n }\n }\n\n onOut(d, domNode) {\n if (instanceOfIHighlight(this._owner)) {\n switch (this.getPaletteType()) {\n case \"ordinal\":\n switch (this.dataFamily()) {\n case \"2D\":\n case \"ND\":\n this._owner.highlightColumn();\n break;\n }\n break;\n }\n }\n }\n\n onDblClick(rowData, rowIdx) {\n console.log(\"Legend onDblClick method\");\n console.log(\"rowData: \" + rowData);\n console.log(\"rowIdx: \" + rowIdx);\n }\n\n onMouseOver(rowData, rowIdx) {\n console.log(\"Legend onMouseOver method\");\n console.log(\"rowData: \" + rowData);\n console.log(\"rowIdx: \" + rowIdx);\n }\n private _containerSize;\n resize(_size?: { width: number, height: number }) {\n let retVal;\n if(this.fitToContent()) {\n this._containerSize = _size;\n const bbox = this.getBBox();\n if(_size.width > bbox.width){\n bbox.width = _size.width;\n }\n if(_size.height > bbox.height){\n bbox.height = _size.height;\n }\n retVal = super.resize.apply(this, [{...bbox}]);\n } else {\n retVal = super.resize.apply(this, arguments);\n }\n return retVal;\n }\n\n}\nLegend.prototype._class += \" layout_Legend\";\n\nexport interface Legend {\n title(): string;\n title(_: string): this;\n symbolType(): \"circle\" | \"cross\" | \"diamond\" | \"square\" | \"star\" | \"triangle\" | \"wye\";\n symbolType(_: \"circle\" | \"cross\" | \"diamond\" | \"square\" | \"star\" | \"triangle\" | \"wye\"): this;\n labelMaxWidth(): number;\n labelMaxWidth(_: number): this;\n orientation(): \"vertical\" | \"horizontal\";\n orientation(_: \"vertical\" | \"horizontal\"): this;\n orientation_exists: () => boolean;\n dataFamily(): \"1D\" | \"2D\" | \"ND\" | \"map\" | \"graph\" | \"any\";\n dataFamily(_: \"1D\" | \"2D\" | \"ND\" | \"map\" | \"graph\" | \"any\"): this;\n dataFamily_exists: () => boolean;\n rainbowFormat(): string;\n rainbowFormat(_: string): this;\n rainbowFormat_exists: () => boolean;\n rainbowBins(): number;\n rainbowBins(_: number): this;\n rainbowBins_exists: () => boolean;\n showSeriesTotal(): boolean;\n showSeriesTotal(_: boolean): this;\n showLegendTotal(): boolean;\n showLegendTotal(_: boolean): this;\n itemPadding(): number;\n itemPadding(_: number): this;\n shapeRadius(): number;\n shapeRadius(_: number): this;\n fitToContent(): boolean;\n fitToContent(_: boolean): this;\n labelAlign(): \"start\" | \"middle\" | \"end\";\n labelAlign(_: \"start\" | \"middle\" | \"end\"): this;\n}\nLegend.prototype.publish(\"title\", \"\", \"string\", \"Title\");\nLegend.prototype.publish(\"symbolType\", \"circle\", \"set\", \"Shape of each legend item\", [\"circle\", \"cross\", \"diamond\", \"square\", \"star\", \"triangle\", \"wye\"]);\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\", [\"1D\", \"2D\", \"ND\", \"map\", \"graph\", \"any\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\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)\", [\"start\", \"middle\", \"end\"], { optional: true, disable: (w: any) => w.orientation() === \"vertical\" });\n","import { HTMLWidget, ISize, Widget } from \"@hpcc-js/common\";\n\nimport \"../src/Modal.css\";\n\nexport class Modal extends HTMLWidget {\n\n protected _widget: Widget;\n\n protected _relativeTarget: HTMLElement;\n\n protected _fade;\n protected _modal;\n protected _modalHeader;\n protected _modalBody;\n protected _modalHeaderAnnotations;\n protected _modalHeaderCloseButton;\n _close: () => void;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n closeModal() {\n this.visible(false);\n }\n\n getRelativeTarget() {\n let relativeTarget;\n if (this.relativeTargetId()) {\n relativeTarget = document.getElementById(this.relativeTargetId());\n if (relativeTarget) {\n return relativeTarget;\n }\n }\n if (!relativeTarget) {\n relativeTarget = this.locateAncestor(\"layout_Grid\");\n if (relativeTarget && relativeTarget.element) {\n return relativeTarget.element().node();\n }\n }\n return document.body;\n }\n\n setModalSize(): ISize {\n if (this.fixedHeight() !== null && this.fixedWidth() !== null) {\n this._modal\n .style(\"height\", this.fixedHeight())\n .style(\"width\", this.fixedWidth())\n .style(\"min-height\", null)\n .style(\"min-width\", null)\n .style(\"max-height\", null)\n .style(\"max-width\", null)\n ;\n } else if (this.minHeight() || this.minWidth()) {\n this._modal\n .style(\"min-height\", this.minHeight())\n .style(\"min-width\", this.minWidth())\n .style(\"max-height\", this.maxHeight())\n .style(\"max-width\", this.maxWidth())\n ;\n }\n const modalRect = this._modal.node().getBoundingClientRect();\n const headerRect = this._modalHeader.node().getBoundingClientRect();\n this._modalBody\n .style(\"height\", (modalRect.height - headerRect.height) + \"px\")\n .style(\"width\", modalRect.width);\n\n return modalRect;\n }\n\n setFadePosition(rect) {\n this._fade\n .style(\"top\", rect.top + \"px\")\n .style(\"left\", rect.left + \"px\")\n .style(\"width\", rect.width + \"px\")\n .style(\"height\", rect.height + \"px\")\n ;\n }\n\n setModalPosition(rect) {\n const modalRect = this.setModalSize();\n if (this.fixedTop() !== null && this.fixedLeft() !== null) {\n this._modal\n .style(\"top\", `calc(${this.fixedTop()} + ${rect.top}px)`)\n .style(\"left\", `calc(${this.fixedLeft()} + ${rect.left}px)`)\n ;\n } else if (this.fixedHeight() !== null && this.fixedWidth() !== null) {\n this._modal\n .style(\"top\", (rect.top + (rect.height / 2) - (modalRect.height / 2)) + \"px\")\n .style(\"left\", (rect.left + (rect.width / 2) - (modalRect.width / 2)) + \"px\")\n ;\n } else if (this.minHeight() || this.minWidth()) {\n const contentRect = this._modal.node().getBoundingClientRect();\n this._modal\n .style(\"top\", (rect.top + (rect.height / 2) - (contentRect.height / 2)) + \"px\")\n .style(\"left\", (rect.left + (rect.width / 2) - (contentRect.width / 2)) + \"px\")\n ;\n }\n }\n\n resize(size?: any): this {\n super.resize();\n if (this._modal) this.setModalSize();\n return this;\n }\n\n resizeBodySync(width: number, height: number): this {\n const header = this._modalHeader.node();\n const headerRect = header.getBoundingClientRect();\n\n this._modal\n .style(\"width\", width + \"px\")\n .style(\"height\", (height + headerRect.height) + \"px\")\n .style(\"min-width\", width + \"px\")\n .style(\"min-height\", (height + headerRect.height) + \"px\")\n ;\n this._modalHeader\n .style(\"width\", width + \"px\")\n ;\n this._modalBody\n .style(\"width\", width + \"px\")\n .style(\"height\", height + \"px\")\n ;\n return this\n .minWidth(width + \"px\")\n .minHeight((height + headerRect.height) + \"px\")\n .resize({\n height: height + headerRect.height,\n width\n })\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._fade = element.append(\"div\")\n .classed(\"layout_Modal-fade\", true)\n .classed(\"layout_Modal-fadeClickable\", this.enableClickFadeToClose())\n .classed(\"layout_Modal-fade-hidden\", !this.showFade())\n ;\n const header_h = this.titleFontSize() * 2;\n this._modal = element.append(\"div\")\n .classed(\"layout_Modal-content\", true)\n ;\n this._modalHeader = this._modal.append(\"div\")\n .classed(\"layout_Modal-header\", true)\n .style(\"color\", this.titleFontColor())\n .style(\"font-size\", this.titleFontSize() + \"px\")\n .style(\"height\", header_h + \"px\")\n ;\n this._modalBody = this._modal.append(\"div\")\n .classed(\"layout_Modal-body\", true)\n .style(\"height\", `calc( 100% - ${header_h}px )`)\n .style(\"overflow-x\", this.overflowX())\n .style(\"overflow-y\", this.overflowY())\n ;\n this._modalHeader.append(\"div\")\n .classed(\"layout_Modal-title\", true)\n .style(\"line-height\", this.titleFontSize() + \"px\")\n .style(\"top\", (this.titleFontSize() / 2) + \"px\")\n .style(\"left\", (this.titleFontSize() / 2) + \"px\")\n .text(this.formattedTitle())\n ;\n\n this._modalHeaderAnnotations = this._modalHeader.append(\"div\")\n .classed(\"layout_Modal-annotations\", true)\n ;\n this._modalHeaderCloseButton = this._modalHeaderAnnotations.append(\"div\")\n .classed(\"layout_Modal-closeButton\", true)\n .html(\"<i class=\\\"fa fa-close\\\"></i>\")\n ;\n\n this._modalHeaderAnnotations\n .style(\"line-height\", this.titleFontSize() + \"px\")\n .style(\"right\", (this.titleFontSize() / 2) + \"px\")\n .style(\"top\", (this.titleFontSize() / 2) + \"px\")\n ;\n this._modalHeaderCloseButton.on(\"click\", () => {\n this.closeModal();\n });\n this._fade.on(\"click\", n => {\n if (this.enableClickFadeToClose()) {\n this.closeModal();\n }\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element.style(\"display\", this.show() ? null : \"none\");\n this._fade.classed(\"layout_Modal-fade-hidden\", !this.showFade());\n this._relativeTarget = this.getRelativeTarget();\n\n this.setModalSize();\n const rect = this._relativeTarget.getBoundingClientRect();\n this.setFadePosition(rect);\n this.setModalPosition(rect);\n\n if (this.show()) {\n if (!this._widget.target()) {\n this._widget.target(this._modalBody.node());\n }\n this._widget.resize().render();\n } else {\n this._widget\n .target(null)\n .render()\n ;\n }\n }\n\n exit(domNode, element) {\n if (this._widget) {\n this._widget.target(null);\n }\n super.exit(domNode, element);\n }\n\n formattedTitle() {\n const title = this.title_exists() ? this.title().trim() : \"\";\n if (title.length > 0 && title.slice(0, 1) === \"(\" && title.slice(-1) === \")\") {\n return title.slice(1, -1);\n }\n return this.title();\n }\n}\nModal.prototype._class += \" layout_Modal\";\n\nexport interface Modal {\n show(): boolean;\n show(_: boolean): this;\n showFade(): boolean;\n showFade(_: boolean): this;\n enableClickFadeToClose(): boolean;\n enableClickFadeToClose(_: boolean): this;\n title(): string;\n title(_: string): this;\n title_exists(): boolean;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n titleFontColor(): string;\n titleFontColor(_: string): this;\n minWidth(): string;\n minWidth(_: string): this;\n minHeight(): string;\n minHeight(_: string): this;\n maxWidth(): string;\n maxWidth(_: string): this;\n maxHeight(): string;\n maxHeight(_: string): this;\n fixedWidth(): string;\n fixedWidth(_: string): this;\n fixedHeight(): string;\n fixedHeight(_: string): this;\n fixedTop(): string;\n fixedTop(_: string): this;\n fixedLeft(): string;\n fixedLeft(_: string): this;\n relativeTargetId(): string;\n relativeTargetId(_: string): this;\n widget(): Widget;\n widget(_: Widget): this;\n overflowX(): \"hidden\" | \"scroll\";\n overflowX(_: \"hidden\" | \"scroll\"): this;\n overflowY(): \"hidden\" | \"scroll\";\n overflowY(_: \"hidden\" | \"scroll\"): this;\n}\n\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\");\n\nModal.prototype.publish(\"show\", true, \"boolean\", \"show\");\nModal.prototype.publish(\"showFade\", true, \"boolean\", \"showFade\");\nModal.prototype.publish(\"enableClickFadeToClose\", true, \"boolean\", \"enableClickFadeToClose\");\n\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","import { IHighlight } from \"@hpcc-js/api\";\nimport { Button, Database, IconBar, ProgressBar, Spacer, SVGWidget, Text, TitleBar, ToggleButton, Utility, Widget } from \"@hpcc-js/common\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Border2 } from \"./Border2\";\nimport { Carousel } from \"./Carousel\";\nimport { Legend } from \"./Legend\";\nimport { Modal } from \"./Modal\";\n\nimport \"../src/ChartPanel.css\";\n\nexport class ChartPanel extends Border2 implements IHighlight {\n\n protected _legend = new Legend(this).enableOverflow(true);\n protected _progressBar = new ProgressBar();\n protected _autoScale = false;\n protected _resolutions = {\n tiny: { width: 100, height: 100 },\n small: { width: 300, height: 300 }\n };\n private _modal = new Modal();\n private _highlight: boolean;\n private _scale: number;\n private _orig_size: any;\n\n private _toggleInfo = new ToggleButton().faChar(\"fa-info-circle\").tooltip(\".Description\")\n .selected(false)\n .on(\"enabled\", () => {\n return this.description() !== \"\";\n })\n .on(\"click\", () => {\n if (this._toggleInfo.selected()) {\n this._modal\n .title(this.title())\n .widget(new Text().text(this.description()))\n .show(true)\n .render()\n ;\n\n const origCloseFunc = this._modal._close;\n this._modal._close = () => {\n this._toggleInfo\n .selected(false)\n .render()\n ;\n this._modal._close = origCloseFunc;\n };\n }\n })\n .on(\"mouseMove\", () => {\n /*\n this._modal.showPreview(true).render(n => {\n n.resize().render();\n });\n */\n })\n .on(\"mouseOut\", () => {\n /*\n if (this._modal.showPreview()) {\n this._modal.show(false).showPreview(false).render();\n }\n */\n });\n\n private _toggleData = new ToggleButton().faChar(\"fa-table\").tooltip(\"Data\")\n .on(\"click\", () => {\n this.dataVisible(this._toggleData.selected());\n this.render();\n });\n\n private _buttonDownload = new Button().faChar(\"fa-download\").tooltip(\"Download\")\n .on(\"click\", () => {\n this.downloadCSV();\n });\n\n private _buttonDownloadImage = new Button().faChar(\"fa-image\").tooltip(\"Download Image\")\n .on(\"click\", () => {\n this.downloadPNG();\n });\n\n private _toggleLegend = new ToggleButton().faChar(\"fa-list-ul\").tooltip(\"Legend\")\n .selected(false)\n .on(\"click\", () => {\n const selected = this._toggleLegend.selected();\n if (this.legendPosition() === \"bottom\") {\n this.showBottom(selected);\n } else if (this.legendPosition() === \"right\") {\n this.showRight(selected);\n }\n this.legendVisible(selected);\n this.render();\n });\n\n protected _spacer = new Spacer();\n\n _titleBar = new TitleBar().buttons([this._toggleData, this._buttonDownload, this._buttonDownloadImage, this._spacer, this._toggleLegend]);\n\n protected _carousel = new Carousel();\n protected _table = new Table();\n protected _widget: Widget;\n\n protected _hideLegendToggleList = [\"dgrid_Table\"];\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): this | Database.Field[] {\n if (!arguments.length) return super.fields();\n super.fields(_);\n this._legend.fields(_);\n this.refreshFields();\n return this;\n }\n refreshFields() {\n this._widget.fields(this._legend.filteredFields());\n this._table.fields(this._legend.filteredFields());\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 super.columns();\n super.columns(_, asDefault);\n this._legend.columns(_, asDefault);\n this.refreshColumns();\n return this;\n }\n refreshColumns() {\n this._widget.columns(this._legend.filteredColumns());\n this._table.columns(this._legend.filteredColumns());\n return this;\n }\n\n data(_?) {\n if (!arguments.length) return super.data();\n super.data(_);\n this._legend.data(_);\n this.refreshData();\n return this;\n }\n refreshData() {\n this._widget.data(this._legend.filteredData());\n this._table.data(this._legend.filteredData());\n return this;\n }\n\n highlight(): boolean;\n highlight(_: boolean): this;\n highlight(_?: boolean): boolean | this {\n if (!arguments.length) return this._highlight;\n this._highlight = _;\n return this;\n }\n\n startProgress() {\n this._progressBar.start();\n }\n\n finishProgress() {\n this._progressBar.finish();\n }\n\n buttons(): Widget[];\n buttons(_: Widget[]): this;\n buttons(_?: Widget[]): this | Widget[] {\n if (!arguments.length) return this._titleBar.buttons();\n this._titleBar.buttons(_);\n return this;\n }\n\n downloadCSV() {\n const namePrefix = this.downloadTitle() ? this.downloadTitle() : this.title() ? this.title() : \"data\";\n const nameSuffix = this.downloadTimestampSuffix() ? \"_\" + Utility.timestamp() : \"\";\n Utility.downloadString(\"CSV\", this._widget.export(\"CSV\"), namePrefix + nameSuffix);\n return this;\n }\n\n downloadPNG() {\n const widget = this.widget();\n if (widget instanceof SVGWidget) {\n if (!this.legendVisible()) {\n widget.downloadPNG(this.title());\n } else {\n widget.downloadPNG(this.title(), undefined, this._legend);\n }\n }\n return this;\n }\n\n highlightColumn(column?: string): this {\n if (column) {\n const cssTag = `series-${this.cssTag(column)}`;\n this._centerWA.element().selectAll(\".series\")\n .each(function () {\n const element = d3Select(this);\n const highlight = element.classed(cssTag);\n element\n .classed(\"highlight\", highlight)\n .classed(\"lowlight\", !highlight)\n ;\n })\n ;\n } else {\n this._centerWA.element().selectAll(\".series\")\n .classed(\"highlight\", false)\n .classed(\"lowlight\", false)\n ;\n }\n return this;\n }\n\n getResponsiveMode(): \"tiny\" | \"small\" | \"regular\" | \"none\" {\n if (!this.enableAutoscaling()) return \"none\";\n if (!this._autoScale) return \"regular\";\n if (this.size().width <= this._resolutions.tiny.width || this.size().height <= this._resolutions.tiny.height) {\n return \"tiny\";\n } else if (this.size().width <= this._resolutions.small.width || this.size().height <= this._resolutions.small.height) {\n return \"small\";\n }\n return \"regular\";\n }\n\n setOrigSize() {\n this._orig_size = JSON.parse(JSON.stringify(this.size()));\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._modal\n .target(this.target())\n .relativeTargetId(this.id())\n ;\n\n this.top(this._titleBar);\n this.center(this._carousel);\n\n this._legend\n .targetWidget(this._widget)\n .orientation(\"vertical\")\n .title(\"\")\n .visible(false)\n ;\n\n this._progressBar.enter(domNode, element);\n this.setOrigSize();\n }\n\n preUpdateTiny(element) {\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n }\n\n preUpdateSmall(element) {\n const scale_x = this._orig_size.width / this._resolutions.small.width;\n const scale_y = this._orig_size.height / this._resolutions.small.height;\n this._scale = Math.min(scale_x, scale_y);\n const x_is_smaller = this._scale === scale_x;\n this.size({\n width: x_is_smaller ? this._resolutions.small.width : this._orig_size.width * (1 / this._scale),\n height: !x_is_smaller ? this._resolutions.small.height : this._orig_size.height * (1 / this._scale)\n });\n element.select(\"div.title-icon\").style(\"position\", \"static\");\n element.selectAll(\"lhs\").style(\"display\", \"none\");\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n element.style(\"transform\", `scale(${this._scale})`);\n }\n\n preUpdateRegular(element) {\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n element.select(\"div.title-icon\").style(\"position\", \"static\");\n element.style(\"transform\", \"translate(0px,0px) scale(1)\");\n }\n\n private _prevdataVisible;\n private _prevlegendVisible;\n private _prevLegendPosition;\n private _prevChartDataFamily;\n private _prevChart;\n private _prevButtons;\n update(domNode, element) {\n super.update(domNode, element);\n }\n\n preUpdate(domNode, element) {\n\n super.preUpdate(domNode, element);\n\n if (this._prevLegendPosition !== this.legendPosition()) {\n if (this._legend.target() !== null) this._legend.target(null);\n if (this._prevLegendPosition !== undefined) {\n this.swap(this._prevLegendPosition, this.legendPosition());\n } else {\n this[this.legendPosition()](this._legend);\n }\n if (this.legendPosition() === \"right\") {\n this.rightOverflowX(\"hidden\");\n this.rightOverflowY(\"auto\");\n this.bottomOverflowX(\"visible\");\n this.bottomOverflowY(\"visible\");\n } else {\n this.rightOverflowX(\"visible\");\n this.rightOverflowY(\"visible\");\n this.bottomOverflowX(\"auto\");\n this.bottomOverflowY(\"hidden\");\n }\n this._prevLegendPosition = this.legendPosition();\n }\n\n if (this._prevdataVisible !== this.dataVisible()) {\n this._prevdataVisible = this.dataVisible();\n this._toggleData.selected(this._prevdataVisible);\n this._carousel.active(this._prevdataVisible ? 1 : 0);\n }\n\n if (this._prevlegendVisible !== this.legendVisible()) {\n this._prevlegendVisible = this.legendVisible();\n this._toggleLegend.selected(this._prevlegendVisible);\n this._legend.visible(this._prevlegendVisible);\n }\n\n this._legend.orientation(this.legendPosition() === \"bottom\" ? \"horizontal\" : \"vertical\");\n\n this.showLeft(!this.left());\n\n switch (this.getResponsiveMode()) {\n case \"tiny\":\n this.preUpdateTiny(element);\n break;\n case \"small\":\n this.preUpdateSmall(element);\n break;\n case \"regular\":\n this.preUpdateRegular(element);\n break;\n }\n\n const chart = this._widget.classID() === \"composite_MultiChart\" ? this._widget[\"chart\"]() : this._widget;\n this._legend.dataFamily(chart._dataFamily || \"any\");\n\n if (this._prevChartDataFamily !== this._legend.dataFamily()) {\n this._prevChartDataFamily = this._legend.dataFamily();\n switch (this._prevChartDataFamily) {\n case \"any\":\n this._toggleLegend.selected(false);\n this._legend.visible(false);\n break;\n }\n }\n element.style(\"box-shadow\", this.highlight() ? `inset 0px 0px 0px ${this.highlightSize()}px ${this.highlightColor()}` : \"none\");\n\n if (this._hideLegendToggleList.indexOf(chart.classID()) !== -1) {\n this._spacer.visible(false);\n this._toggleLegend.visible(false);\n } else {\n this._spacer.visible(true);\n this._toggleLegend.visible(true);\n }\n if (this._prevChart !== chart) {\n this._prevChart = chart;\n const widgetIconBar = chart ? chart[\"_titleBar\"] || chart[\"_iconBar\"] : undefined;\n if (widgetIconBar && widgetIconBar instanceof IconBar) {\n this._prevButtons = this._prevButtons || [...this.buttons()];\n const buttons: Widget[] = [\n ...widgetIconBar.buttons(),\n new Spacer(),\n ...this._prevButtons\n ];\n widgetIconBar.buttons([]).render();\n this.buttons(buttons);\n } else if (this._prevButtons) {\n this.buttons(this._prevButtons);\n }\n }\n\n const hiddenButtons = [];\n if (!this.dataButtonVisible()) hiddenButtons.push(this._toggleData);\n if (!this.downloadButtonVisible()) hiddenButtons.push(this._buttonDownload);\n if (!this.downloadImageButtonVisible()) hiddenButtons.push(this._buttonDownloadImage);\n if (!this.legendButtonVisible()) hiddenButtons.push(this._toggleLegend);\n this._buttonDownloadImage.enabled(this.widget() instanceof SVGWidget);\n this._titleBar\n .hiddenButtons(hiddenButtons)\n .visible(this.titleVisible())\n ;\n this.topOverlay(this.titleOverlay() || !this.titleVisible());\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n\n switch (this.getResponsiveMode()) {\n case \"tiny\":\n this.postUpdateTiny(element);\n break;\n case \"small\":\n this.postUpdateSmall(element);\n break;\n case \"regular\":\n this.postUpdateRegular(element);\n break;\n }\n }\n\n postUpdateTiny(element) {\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n element.selectAll(\"div.data-count\")\n .style(\"visibility\", \"visible\")\n .style(\"font-size\", (this.titleIconFontSize() / 3) + \"px\")\n .style(\"line-height\", (this.titleIconFontSize() / 3) + \"px\")\n .style(\"left\", this.titleIconFontSize() + \"px\")\n .text(this.data().length)\n ;\n element.style(\"transform\", \"translate(0px,0px) scale(1)\");\n const iconDiv = element.selectAll(\"div.title-icon\");\n const _node = iconDiv.node();\n const _container = element.node().parentElement;\n const containerRect = _container.getBoundingClientRect();\n if (_node) {\n const rect = iconDiv.node().getBoundingClientRect();\n const icon_top = containerRect.height / 2;\n iconDiv\n .style(\"position\", \"absolute\")\n .style(\"left\", `calc(50% - ${rect.width / 2}px)`)\n .style(\"top\", `${icon_top - (rect.height / 2)}px`)\n ;\n element.selectAll(\"div.data-count\")\n .style(\"position\", \"absolute\")\n .style(\"left\", `calc(50% + ${rect.width / 2}px)`)\n .style(\"top\", `${icon_top - (rect.height / 2)}px`)\n ;\n }\n }\n\n postUpdateSmall(element) {\n element.selectAll(\"lhs\").style(\"display\", \"none\"); // TODO: a bug in Border2?\n element.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n const rect = element.node().getBoundingClientRect();\n const parentRect = element.node().parentElement.getBoundingClientRect();\n element.style(\"transform\", `translate(${parentRect.x - rect.x}px, ${parentRect.y - rect.y}px) scale(${this._scale})`);\n }\n\n postUpdateRegular(element) {\n element.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n }\n\n exit(domNode, element) {\n this._progressBar.exit(domNode, element);\n\n this.right(null);\n this._legend.target(null);\n this.center(null);\n this._carousel.target(null);\n this.top(null);\n this._titleBar.target(null);\n\n this._modal.target(null);\n\n delete this._prevChart;\n delete this._prevButtons;\n delete this._prevChartDataFamily;\n delete this._prevPos;\n delete this._prevdataVisible;\n delete this._prevlegendVisible;\n\n super.exit(domNode, element);\n }\n\n // Event Handlers ---\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\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}\nChartPanel.prototype._class += \" layout_ChartPanel\";\n\nexport interface ChartPanel {\n title(): string;\n title(_: string): this;\n titleVisible(): boolean;\n titleVisible(_: boolean): this;\n titleOverlay(): boolean;\n titleOverlay(_: boolean): this;\n title_exists(): boolean;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n titleFontSize_exists(): boolean;\n titleIconFontSize(): number;\n titleIconFontSize(_: number): this;\n titleIconFontSize_exists(): boolean;\n dataVisible(): boolean;\n dataVisible(_: boolean): this;\n dataButtonVisible(): boolean;\n dataButtonVisible(_: boolean): this;\n downloadButtonVisible(): boolean;\n downloadButtonVisible(_: boolean): this;\n downloadImageButtonVisible(): boolean;\n downloadImageButtonVisible(_: boolean): this;\n downloadTitle(): string;\n downloadTitle(_: string): this;\n downloadTimestampSuffix(): boolean;\n downloadTimestampSuffix(_: boolean): this;\n legendVisible(): boolean;\n legendVisible(_: boolean): this;\n legendButtonVisible(): boolean;\n legendButtonVisible(_: boolean): this;\n legendPosition(): \"right\" | \"bottom\";\n legendPosition(_: \"right\" | \"bottom\"): this;\n description(): string;\n description(_: string): this;\n description_exists(): boolean;\n widget(): Widget;\n widget(_: Widget): this;\n widget_exists(): boolean;\n enableAutoscaling(): boolean;\n enableAutoscaling(_: boolean): this;\n enableAutoscaling_exists(): boolean;\n highlightSize(): number;\n highlightSize(_: number): this;\n highlightSize_exists(): boolean;\n highlightColor(): string;\n highlightColor(_: string): this;\n highlightColor_exists(): boolean;\n}\n\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\", undefined, { 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\");\n\nChartPanel.prototype.widget = function (_?) {\n if (!arguments.length) return this._widget;\n this._carousel.widgets([_, this._table]);\n this._widget = _;\n this._widget\n .fields(this._legend.filteredFields())\n .data(this._legend.filteredData())\n ;\n\n const context = this;\n const tmpAny = this._widget as any;\n tmpAny.click = function () {\n context.click.apply(context, arguments);\n };\n tmpAny.dblclick = function () {\n context.dblclick.apply(context, arguments);\n };\n tmpAny.vertex_click = function () {\n context.vertex_click.apply(context, arguments);\n };\n tmpAny.vertex_dblclick = function () {\n context.vertex_dblclick.apply(context, arguments);\n };\n tmpAny.edge_click = function () {\n context.edge_click.apply(context, arguments);\n };\n tmpAny.edge_dblclick = function () {\n context.edge_dblclick.apply(context, arguments);\n };\n return this;\n};\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/FlexGrid.css\";\n\nexport class FlexGrid extends HTMLWidget {\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const cachedSizes = [];\n this.updateFlexParent(element);\n const listItems = element.selectAll(\".FlexGrid-list-item\").data(this.widgets(), w => w.id());\n listItems.enter()\n .append(\"div\")\n .classed(\"FlexGrid-list-item\", true)\n .each(function (w) {\n w.target(this);\n })\n .merge(listItems)\n .style(\"min-height\", this.itemMinHeight() + \"px\")\n .style(\"min-width\", this.itemMinWidth() + \"px\")\n .style(\"flex-basis\", (n, i) => {\n const flexBasis = this.widgetsFlexBasis()[i];\n return typeof flexBasis !== \"undefined\" ? flexBasis : this.flexBasis();\n })\n .style(\"flex-grow\", (n, i) => {\n const flexGrow = this.widgetsFlexGrow()[i];\n return typeof flexGrow !== \"undefined\" ? flexGrow : this.flexGrow();\n })\n .style(\"border-width\", this.borderWidth() + \"px\")\n .style(\"border-color\", this.itemBorderColor())\n .each(function () {\n this.firstChild.style.display = \"none\";\n })\n .each(function () {\n const rect = this.getBoundingClientRect();\n cachedSizes.push([\n rect.width,\n rect.height\n ]);\n })\n .each(function (w, i) {\n this.firstChild.style.display = \"block\";\n w.resize({\n width: cachedSizes[i][0] - (2 * context.borderWidth()),\n height: cachedSizes[i][1] - (2 * context.borderWidth())\n });\n })\n ;\n listItems.exit().remove();\n }\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n updateFlexParent(element) {\n element\n .style(\"height\", \"100%\")\n .style(\"flex-direction\", this.orientation() === \"horizontal\" ? \"row\" : \"column\")\n .style(\"flex-wrap\", this.flexWrap())\n .style(\"align-items\", this.alignItems())\n .style(\"align-content\", this.alignContent())\n .style(\"overflow-x\", () => {\n if (this.forceXScroll() || (this.orientation() === \"horizontal\" && this.flexWrap() === \"nowrap\" && !this.disableScroll())) {\n return \"scroll\";\n }\n return \"hidden\";\n })\n .style(\"overflow-y\", () => {\n if (this.forceYScroll() || (this.orientation() === \"vertical\" && this.flexWrap() === \"nowrap\" && !this.disableScroll())) {\n return \"scroll\";\n }\n return \"hidden\";\n })\n ;\n }\n}\nFlexGrid.prototype._class += \" layout_FlexGrid\";\n\nexport interface FlexGrid {\n widgets(): any;\n widgets(_: any): this;\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n flexWrap(): \"nowrap\" | \"wrap\" | \"wrap-reverse\";\n flexWrap(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\"): this;\n itemMinHeight(): number;\n itemMinHeight(_: number): this;\n itemMinWidth(): number;\n itemMinWidth(_: number): this;\n alignItems(): \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\";\n alignItems(_: \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\"): this;\n alignContent(): \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\" | \"space-between\" | \"space-around\";\n alignContent(_: \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\" | \"space-between\" | \"space-around\"): this;\n itemBorderColor(): string;\n itemBorderColor(_: string): this;\n borderWidth(): number;\n borderWidth(_: number): this;\n flexGrow(): number;\n flexGrow(_: number): this;\n widgetsFlexGrow(): number[];\n widgetsFlexGrow(_: number[]): this;\n flexBasis(): string;\n flexBasis(_: string): this;\n widgetsFlexBasis(): string[];\n widgetsFlexBasis(_: string[]): this;\n disableScroll(): boolean;\n disableScroll(_: boolean): this;\n forceXScroll(): boolean;\n forceXScroll(_: boolean): this;\n forceYScroll(): boolean;\n forceYScroll(_: boolean): this;\n}\n\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\", [\"nowrap\", \"wrap\", \"wrap-reverse\"]);\nFlexGrid.prototype.publish(\"disableScroll\", false, \"boolean\", \"If false, scrollbar will show (when flexWrap is set to 'nowrap')\", null, { disable: (w: any) => 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\", [\"flex-start\", \"center\", \"flex-end\", \"stretch\"]);\nFlexGrid.prototype.publish(\"alignContent\", \"stretch\", \"set\", \"Controls normal alignment of item rows\", [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"space-between\", \"space-around\"]);\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","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.GridList = factory();\n }\n}(this, function() {\n\nvar GridList = function(items, options) {\n /**\n * A GridList manages the two-dimensional positions from a list of items,\n * within a virtual matrix.\n *\n * The GridList's main function is to convert the item positions from one\n * grid size to another, maintaining as much of their order as possible.\n *\n * The GridList's second function is to handle collisions when moving an item\n * over another.\n *\n * The positioning algorithm places items in columns. Starting from left to\n * right, going through each column top to bottom.\n *\n * The size of an item is expressed using the number of cols and rows it\n * takes up within the grid (w and h)\n *\n * The position of an item is express using the col and row position within\n * the grid (x and y)\n *\n * An item is an object of structure:\n * {\n * w: 3, h: 1,\n * x: 0, y: 1\n * }\n */\n\n this._options = options;\n for (var k in this.defaults) {\n if (!this._options.hasOwnProperty(k)) {\n this._options[k] = this.defaults[k];\n }\n }\n\n this.items = items;\n\n this._adjustSizeOfItems();\n\n this.generateGrid();\n};\n\nGridList.cloneItems = function(items, _items) {\n /**\n * Clone items with a deep level of one. Items are not referenced but their\n * properties are\n */\n var _item,\n i,\n k;\n if (_items === undefined) {\n _items = [];\n }\n for (i = 0; i < items.length; i++) {\n // XXX: this is good because we don't want to lose item reference, but\n // maybe we should clear their properties since some might be optional\n if (!_items[i]) {\n _items[i] = {};\n }\n for (k in items[i]) {\n _items[i][k] = items[i][k];\n }\n }\n return _items;\n};\n\nGridList.prototype = {\n\n defaults: {\n lanes: 5,\n direction: 'horizontal'\n },\n\n /**\n * Illustates grid as text-based table, using a number identifier for each\n * item. E.g.\n *\n * #| 0 1 2 3 4 5 6 7 8 9 10 11 12 13\n * --------------------------------------------\n * 0| 00 02 03 04 04 06 08 08 08 12 12 13 14 16\n * 1| 01 -- 03 05 05 07 09 10 11 11 -- 13 15 --\n *\n * Warn: Does not work if items don't have a width or height specified\n * besides their position in the grid.\n */\n toString: function() {\n var widthOfGrid = this.grid.length,\n output = '\\n #|',\n border = '\\n --',\n item,\n i,\n j;\n\n // Render the table header\n for (i = 0; i < widthOfGrid; i++) {\n output += ' ' + this._padNumber(i, ' ');\n border += '---';\n };\n output += border;\n\n // Render table contents row by row, as we go on the y axis\n for (i = 0; i < this._options.lanes; i++) {\n output += '\\n' + this._padNumber(i, ' ') + '|';\n for (j = 0; j < widthOfGrid; j++) {\n output += ' ';\n item = this.grid[j][i];\n output += item ? this._padNumber(this.items.indexOf(item), '0') : '--';\n }\n };\n output += '\\n';\n return output;\n },\n\n generateGrid: function() {\n /**\n * Build the grid structure from scratch, with the current item positions\n */\n var i;\n this._resetGrid();\n for (i = 0; i < this.items.length; i++) {\n this._markItemPositionToGrid(this.items[i]);\n }\n },\n\n resizeGrid: function(lanes) {\n var currentColumn = 0;\n\n this._options.lanes = lanes;\n this._adjustSizeOfItems();\n\n this._sortItemsByPosition();\n this._resetGrid();\n\n // The items will be sorted based on their index within the this.items array,\n // that is their \"1d position\"\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i],\n position = this._getItemPosition(item);\n\n this._updateItemPosition(\n item, this.findPositionForItem(item, {x: currentColumn, y: 0}));\n\n // New items should never be placed to the left of previous items\n currentColumn = Math.max(currentColumn, position.x);\n }\n\n this._pullItemsToLeft();\n },\n\n findPositionForItem: function(item, start, fixedRow) {\n /**\n * This method has two options for the position we want for the item:\n * - Starting from a certain row/column number and only looking for\n * positions to its right\n * - Accepting positions for a certain row number only (use-case: items\n * being shifted to the left/right as a result of collisions)\n *\n * @param {Object<x:Number, y:Number, w:Number, h:Number} item\n * @param {Object<x:Number, y:Number} start Position from which to start\n * the search.\n * @param {Number} [fixedRow] If provided, we're going to try to find a\n * position for the new item on it. If doesn't fit there, we're going\n * to put it on the first row.\n *\n * @returns {Number[2]} x and y.\n */\n\n var x, y, position;\n\n // Start searching for a position from the horizontal position of the\n // rightmost item from the grid\n for (x = start.x; x < this.grid.length; x++) {\n if (fixedRow !== undefined) {\n position = [x, fixedRow];\n\n if (this._itemFitsAtPosition(item, position)) {\n return position;\n }\n } else {\n for (y = start.y; y < this._options.lanes; y++) {\n position = [x, y];\n\n if (this._itemFitsAtPosition(item, position)) {\n return position;\n }\n }\n }\n }\n\n // If we've reached this point, we need to start a new column\n var newCol = this.grid.length,\n newRow = 0;\n\n if (fixedRow !== undefined &&\n this._itemFitsAtPosition(item, [newCol, fixedRow])) {\n newRow = fixedRow;\n }\n\n return [newCol, newRow];\n },\n\n moveItemToPosition: function(item, newPosition) {\n var position = this._getItemPosition({\n x: newPosition[0],\n y: newPosition[1],\n w: item.w,\n h: item.h\n });\n\n this._updateItemPosition(item, [position.x, position.y]);\n this._resolveCollisions(item);\n },\n\n resizeItem: function(item, size) {\n /**\n * Resize an item and resolve collisions.\n *\n * @param {Object} item A reference to an item that's part of the grid.\n * @param {Object} size\n * @param {Number} [size.w=item.w] The new width.\n * @param {Number} [size.h=item.h] The new height.\n */\n\n var width = size.w || item.w,\n height = size.h || item.h;\n\n this._updateItemSize(item, width, height);\n\n this._resolveCollisions(item);\n\n this._pullItemsToLeft();\n },\n\n getChangedItems: function(initialItems, idAttribute) {\n /**\n * Compare the current items against a previous snapshot and return only\n * the ones that changed their attributes in the meantime. This includes both\n * position (x, y) and size (w, h)\n *\n * Since both their position and size can change, the items need an\n * additional identifier attribute to match them with their previous state\n */\n var changedItems = [];\n\n for (var i = 0; i < initialItems.length; i++) {\n var item = this._getItemByAttribute(idAttribute,\n initialItems[i][idAttribute]);\n\n if (item.x !== initialItems[i].x ||\n item.y !== initialItems[i].y ||\n item.w !== initialItems[i].w ||\n item.h !== initialItems[i].h) {\n changedItems.push(item);\n }\n }\n\n return changedItems;\n },\n\n _sortItemsByPosition: function() {\n this.items.sort(function(item1, item2) {\n var position1 = this._getItemPosition(item1),\n position2 = this._getItemPosition(item2);\n\n // Try to preserve columns.\n if (position1.x != position2.x) {\n return position1.x - position2.x;\n }\n\n if (position1.y != position2.y) {\n return position1.y - position2.y;\n }\n\n // The items are placed on the same position.\n return 0;\n }.bind(this));\n },\n\n _adjustSizeOfItems: function() {\n /**\n * Some items can have 100% height or 100% width. Those dimmensions are\n * expressed as 0. We need to ensure a valid width and height for each of\n * those items as the number of items per lane.\n */\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n\n // This can happen only the first time items are checked.\n // We need the property to have a value for all the items so that the\n // `cloneItems` method will merge the properties properly. If we only set\n // it to the items that need it then the following can happen:\n //\n // cloneItems([{id: 1, autoSize: true}, {id: 2}],\n // [{id: 2}, {id: 1, autoSize: true}]);\n //\n // will result in\n //\n // [{id: 1, autoSize: true}, {id: 2, autoSize: true}]\n if (item.autoSize === undefined) {\n item.autoSize = item.w === 0 || item.h === 0;\n }\n\n if (item.autoSize) {\n if (this._options.direction === 'horizontal') {\n item.h = this._options.lanes;\n } else {\n item.w = this._options.lanes;\n }\n }\n }\n },\n\n _resetGrid: function() {\n this.grid = [];\n },\n\n _itemFitsAtPosition: function(item, newPosition) {\n /**\n * Check that an item wouldn't overlap with another one if placed at a\n * certain position within the grid\n */\n\n var position = this._getItemPosition(item),\n x, y, row;\n\n // No coordonate can be negative\n if (newPosition[0] < 0 || newPosition[1] < 0) {\n return false;\n }\n\n // Make sure the item isn't larger than the entire grid\n if (newPosition[1] + position.h > this._options.lanes) {\n return false;\n }\n\n // Make sure the position doesn't overlap with an already positioned\n // item.\n for (x = newPosition[0]; x < newPosition[0] + position.w; x++) {\n var col = this.grid[x];\n\n // Surely a column that hasn't even been created yet is available\n if (!col) {\n continue;\n }\n\n for (y = newPosition[1]; y < newPosition[1] + position.h; y++) {\n // Any space occupied by an item can continue to be occupied by the\n // same item.\n if (col[y] && col[y] !== item) {\n return false;\n }\n }\n }\n\n return true;\n },\n\n _updateItemPosition: function(item, position) {\n if (item.x !== null && item.y !== null) {\n this._deleteItemPositionFromGrid(item);\n }\n\n this._setItemPosition(item, position);\n\n this._markItemPositionToGrid(item);\n },\n\n _updateItemSize: function(item, width, height) {\n /**\n * @param {Object} item A reference to a grid item.\n * @param {Number} width The new width.\n * @param {Number} height The new height.\n */\n\n if (item.x !== null && item.y !== null) {\n this._deleteItemPositionFromGrid(item);\n }\n\n item.w = width;\n item.h = height;\n\n this._markItemPositionToGrid(item);\n },\n\n _markItemPositionToGrid: function(item) {\n /**\n * Mark the grid cells that are occupied by an item. This prevents items\n * from overlapping in the grid\n */\n\n var position = this._getItemPosition(item),\n x, y;\n\n // Ensure that the grid has enough columns to accomodate the current item.\n this._ensureColumns(position.x + position.w);\n\n for (x = position.x; x < position.x + position.w; x++) {\n for (y = position.y; y < position.y + position.h; y++) {\n this.grid[x][y] = item;\n }\n }\n },\n\n _deleteItemPositionFromGrid: function(item) {\n var position = this._getItemPosition(item),\n x, y;\n\n for (x = position.x; x < position.x + position.w; x++) {\n // It can happen to try to remove an item from a position not generated\n // in the grid, probably when loading a persisted grid of items. No need\n // to create a column to be able to remove something from it, though\n if (!this.grid[x]) {\n continue;\n }\n\n for (y = position.y; y < position.y + position.h; y++) {\n // Don't clear the cell if it's been occupied by a different widget in\n // the meantime (e.g. when an item has been moved over this one, and\n // thus by continuing to clear this item's previous position you would\n // cancel the first item's move, leaving it without any position even)\n if (this.grid[x][y] == item) {\n this.grid[x][y] = null;\n }\n }\n }\n },\n\n _ensureColumns: function(N) {\n /**\n * Ensure that the grid has at least N columns available.\n */\n var i;\n for (i = 0; i < N; i++) {\n if (!this.grid[i]) {\n this.grid.push(new GridCol(this._options.lanes));\n }\n }\n },\n\n _getItemsCollidingWithItem: function(item) {\n var collidingItems = [];\n for (var i = 0; i < this.items.length; i++) {\n if (item != this.items[i] &&\n this._itemsAreColliding(item, this.items[i])) {\n collidingItems.push(i);\n }\n }\n return collidingItems;\n },\n\n _itemsAreColliding: function(item1, item2) {\n var position1 = this._getItemPosition(item1),\n position2 = this._getItemPosition(item2);\n\n return !(position2.x >= position1.x + position1.w ||\n position2.x + position2.w <= position1.x ||\n position2.y >= position1.y + position1.h ||\n position2.y + position2.h <= position1.y);\n },\n\n _resolveCollisions: function(item) {\n if (!this._tryToResolveCollisionsLocally(item)) {\n this._pullItemsToLeft(item);\n }\n this._pullItemsToLeft();\n },\n\n _tryToResolveCollisionsLocally: function(item) {\n /**\n * Attempt to resolve the collisions after moving a an item over one or more\n * other items within the grid, by shifting the position of the colliding\n * items around the moving one. This might result in subsequent collisions,\n * in which case we will revert all position permutations. To be able to\n * revert to the initial item positions, we create a virtual grid in the\n * process\n */\n var collidingItems = this._getItemsCollidingWithItem(item);\n if (!collidingItems.length) {\n return true;\n }\n var _gridList = new GridList([], this._options),\n leftOfItem,\n rightOfItem,\n aboveOfItem,\n belowOfItem;\n\n GridList.cloneItems(this.items, _gridList.items);\n _gridList.generateGrid();\n\n for (var i = 0; i < collidingItems.length; i++) {\n var collidingItem = _gridList.items[collidingItems[i]],\n collidingPosition = this._getItemPosition(collidingItem);\n\n // We use a simple algorithm for moving items around when collisions occur:\n // In this prioritized order, we try to move a colliding item around the\n // moving one:\n // 1. to its left side\n // 2. above it\n // 3. under it\n // 4. to its right side\n var position = this._getItemPosition(item);\n\n leftOfItem = [position.x - collidingPosition.w, collidingPosition.y];\n rightOfItem = [position.x + position.w, collidingPosition.y];\n aboveOfItem = [collidingPosition.x, position.y - collidingPosition.h];\n belowOfItem = [collidingPosition.x, position.y + position.h];\n\n if (_gridList._itemFitsAtPosition(collidingItem, leftOfItem)) {\n _gridList._updateItemPosition(collidingItem, leftOfItem);\n } else if (_gridList._itemFitsAtPosition(collidingItem, aboveOfItem)) {\n _gridList._updateItemPosition(collidingItem, aboveOfItem);\n } else if (_gridList._itemFitsAtPosition(collidingItem, belowOfItem)) {\n _gridList._updateItemPosition(collidingItem, belowOfItem);\n } else if (_gridList._itemFitsAtPosition(collidingItem, rightOfItem)) {\n _gridList._updateItemPosition(collidingItem, rightOfItem);\n } else {\n // Collisions failed, we must use the pullItemsToLeft method to arrange\n // the other items around this item with fixed position. This is our\n // plan B for when local collision resolving fails.\n return false;\n }\n }\n // If we reached this point it means we managed to resolve the collisions\n // from one single iteration, just by moving the colliding items around. So\n // we accept this scenario and marge the brached-out grid instance into the\n // original one\n GridList.cloneItems(_gridList.items, this.items);\n this.generateGrid();\n return true;\n },\n\n _pullItemsToLeft: function(fixedItem) {\n /**\n * Build the grid from scratch, by using the current item positions and\n * pulling them as much to the left as possible, removing as space between\n * them as possible.\n *\n * If a \"fixed item\" is provided, its position will be kept intact and the\n * rest of the items will be layed around it.\n */\n\n\n // Start a fresh grid with the fixed item already placed inside\n this._sortItemsByPosition();\n this._resetGrid();\n\n // Start the grid with the fixed item as the first positioned item\n if (fixedItem) {\n var fixedPosition = this._getItemPosition(fixedItem);\n this._updateItemPosition(fixedItem, [fixedPosition.x, fixedPosition.y]);\n }\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i],\n position = this._getItemPosition(item);\n\n // The fixed item keeps its exact position\n if (fixedItem && item == fixedItem) {\n continue;\n }\n\n var x = this._findLeftMostPositionForItem(item),\n newPosition = this.findPositionForItem(\n item, {x: x, y: 0}, position.y);\n\n this._updateItemPosition(item, newPosition);\n }\n },\n\n _findLeftMostPositionForItem: function(item) {\n /**\n * When pulling items to the left, we need to find the leftmost position for\n * an item, with two considerations in mind:\n * - preserving its current row\n * - preserving the previous horizontal order between items\n */\n\n var tail = 0,\n position = this._getItemPosition(item);\n\n for (var i = 0; i < this.grid.length; i++) {\n for (var j = position.y; j < position.y + position.h; j++) {\n var otherItem = this.grid[i][j];\n\n if (!otherItem) {\n continue;\n }\n\n var otherPosition = this._getItemPosition(otherItem);\n\n if (this.items.indexOf(otherItem) < this.items.indexOf(item)) {\n tail = otherPosition.x + otherPosition.w;\n }\n }\n }\n\n return tail;\n },\n\n _getItemByAttribute: function(key, value) {\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i][key] === value) {\n return this.items[i];\n }\n }\n return null;\n },\n\n _padNumber: function(nr, prefix) {\n // Currently works for 2-digit numbers (<100)\n return nr >= 10 ? nr : prefix + nr;\n },\n\n _getItemPosition: function(item) {\n /**\n * If the direction is vertical we need to rotate the grid 90 deg to the\n * left. Thus, we simulate the fact that items are being pulled to the top.\n *\n * Since the items have widths and heights, if we apply the classic\n * counter-clockwise 90 deg rotation\n *\n * [0 -1]\n * [1 0]\n *\n * then the top left point of an item will become the bottom left point of\n * the rotated item. To adjust for this, we need to subtract from the y\n * position the height of the original item - the width of the rotated item.\n *\n * However, if we do this then we'll reverse some actions: resizing the\n * width of an item will stretch the item to the left instead of to the\n * right; resizing an item that doesn't fit into the grid will push the\n * items around it instead of going on a new row, etc.\n *\n * We found it better to do a vertical flip of the grid after rotating it.\n * This restores the direction of the actions and greatly simplifies the\n * transformations.\n */\n\n if (this._options.direction === 'horizontal') {\n return item;\n } else {\n return {\n x: item.y,\n y: item.x,\n w: item.h,\n h: item.w\n };\n }\n },\n\n _setItemPosition: function(item, position) {\n /**\n * See _getItemPosition.\n */\n\n if (this._options.direction === 'horizontal') {\n item.x = position[0];\n item.y = position[1];\n } else {\n // We're supposed to subtract the rotated item's height which is actually\n // the non-rotated item's width.\n item.x = position[1];\n item.y = position[0];\n }\n }\n};\n\nvar GridCol = function(lanes) {\n for (var i = 0; i < lanes; i++) {\n this.push(null);\n }\n};\n\n// Extend the Array prototype\nGridCol.prototype = [];\n\n// This module will have direct access to the GridList class\nreturn GridList;\n\n}));\n","import { d3Event, drag as d3Drag, HTMLWidget, Platform, select as d3Select, Utility } from \"@hpcc-js/common\";\nimport * as _GridList from \"grid-list\";\nimport { Cell } from \"./Cell\";\n\nimport \"../src/Grid.css\";\n\nconst GridList = (_GridList && _GridList.default) || _GridList;\n\nexport type ICellPosition = [number, number, number, number];\n\nexport class Grid extends HTMLWidget {\n divItems;\n\n gridList;\n items;\n itemsMap;\n origItems;\n cellWidth;\n cellHeight;\n dragItem;\n dragItemPos;\n\n _d3Drag;\n _d3DragResize;\n _selectionBag;\n _scrollBarWidth;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._selectionBag = new Utility.Selection(this);\n\n this.content([]);\n }\n\n getDimensions() {\n const size = { width: 0, height: 0 };\n this.content().forEach(function (cell) {\n if (size.width < cell.gridCol() + cell.gridColSpan()) {\n size.width = cell.gridCol() + cell.gridColSpan();\n }\n if (size.height < cell.gridRow() + cell.gridRowSpan()) {\n size.height = cell.gridRow() + cell.gridRowSpan();\n }\n }, this);\n return size;\n }\n\n clearContent(widget) {\n this.content(this.content().filter(function (contentWidget) {\n if (!widget) {\n contentWidget.target(null);\n return false;\n }\n let w: any = contentWidget;\n while (w) {\n if (widget === w) {\n contentWidget.target(null);\n return false;\n }\n w = w.widget ? w.widget() : null;\n }\n return true;\n }));\n }\n\n setContent(row, col, widget, title?, rowSpan?, colSpan?) {\n rowSpan = rowSpan || 1;\n colSpan = colSpan || 1;\n title = title || \"\";\n this.content(this.content().filter(function (contentWidget) {\n if (contentWidget.gridRow() === row && contentWidget.gridCol() === col) {\n contentWidget.target(null);\n return false;\n }\n return true;\n }));\n if (widget) {\n const cell = new Cell()\n .gridRow(row)\n .gridCol(col)\n .widget(widget)\n .title(title)\n .gridRowSpan(rowSpan)\n .gridColSpan(colSpan)\n ;\n this.content().push(cell);\n }\n return this;\n }\n\n sortedContent() {\n return this.content().sort(function (l, r) {\n if (l.gridRow() === r.gridRow()) {\n return l.gridCol() - r.gridCol();\n }\n return l.gridRow() - r.gridRow();\n });\n }\n\n getCell(row, col) {\n let retVal = null;\n this.content().some(function (cell) {\n if (row >= cell.gridRow() && row < cell.gridRow() + cell.gridRowSpan() &&\n col >= cell.gridCol() && col < cell.gridCol() + cell.gridColSpan()) {\n retVal = cell;\n return true;\n }\n return false;\n });\n return retVal;\n }\n\n getWidgetCell(id) {\n let retVal = null;\n this.content().some(function (cell) {\n if (cell.widget().id() === id) {\n retVal = cell;\n return true;\n }\n return false;\n });\n return retVal;\n }\n\n getContent(id) {\n let retVal = null;\n this.content().some(function (cell) {\n if (cell.widget().id() === id) {\n retVal = cell.widget();\n return true;\n }\n return false;\n });\n return retVal;\n }\n\n cellToGridItem(cell) {\n return {\n x: cell.gridCol(),\n y: cell.gridRow(),\n w: cell.gridColSpan(),\n h: cell.gridRowSpan(),\n id: cell.id(),\n cell\n };\n }\n\n gridItemToCell(item) {\n item.cell\n .gridCol(item.x)\n .gridRow(item.y)\n .gridColSpan(item.w)\n .gridRowSpan(item.h)\n ;\n }\n\n resetItemsPos() {\n this.origItems.forEach(function (origItem) {\n const item = this.itemsMap[origItem.id];\n item.x = origItem.x;\n item.y = origItem.y;\n }, this);\n }\n\n initGridList() {\n this.itemsMap = {};\n this.items = this.content().map(function (cell) {\n const retVal = this.cellToGridItem(cell);\n this.itemsMap[retVal.id] = retVal;\n return retVal;\n }, this);\n this.origItems = this.content().map(this.cellToGridItem);\n this.gridList = new GridList(this.items, {\n direction: this.snapping(),\n lanes: this.snapping() === \"horizontal\" ? this.snappingRows() : this.snappingColumns()\n });\n }\n\n killGridList() {\n this.gridList = null;\n delete this.items;\n delete this.itemsMap;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._scrollBarWidth = Platform.getScrollbarWidth();\n\n const context = this;\n this._d3Drag = d3Drag()\n .subject(function (_d) {\n const d = context.cellToGridItem(_d);\n return { x: d.x * context.cellWidth, y: d.y * context.cellHeight };\n })\n .on(\"start\", function (_d: any) {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.initGridList();\n const d = context.itemsMap[_d.id()];\n context.dragItem = element.append(\"div\")\n .attr(\"class\", \"dragging\")\n .style(\"transform\", function () { return \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\"; })\n .style(\"width\", function () { return d.w * context.cellWidth - context.gutter() + \"px\"; })\n .style(\"height\", function () { return d.h * context.cellHeight - context.gutter() + \"px\"; })\n ;\n context.selectionBagClick(_d);\n })\n .on(\"drag\", function (_d: any) {\n if (!context.designMode()) return;\n const event = d3Event();\n event.sourceEvent.stopPropagation();\n const d = context.itemsMap[_d.id()];\n if (event.x < 0) {\n event.x = 0;\n }\n if (event.x + d.w * context.cellWidth > context.snappingColumns() * context.cellWidth) {\n event.x = context.snappingColumns() * context.cellWidth - d.w * context.cellWidth;\n }\n if (event.y < 0) {\n event.y = 0;\n }\n if (event.y + d.h * context.cellWidth > context.snappingRows() * context.cellWidth) {\n event.y = context.snappingRows() * context.cellWidth - d.h * context.cellWidth;\n }\n const 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 if (d.x !== pos[0] || d.y !== pos[1]) {\n if (context.snapping() !== \"none\") {\n context.resetItemsPos();\n context.gridList.moveItemToPosition(d, pos);\n } else {\n d.x = pos[0];\n d.y = pos[1];\n }\n if (_d.gridCol() !== d.x || _d.gridRow() !== d.y) {\n context.items.forEach(context.gridItemToCell);\n context.updateGrid(false, 100);\n }\n }\n context.dragItem\n .style(\"transform\", function () { return \"translate(\" + event.x + \"px, \" + event.y + \"px)\"; })\n .style(\"width\", function () { return d.w * context.cellWidth + \"px\"; })\n .style(\"height\", function () { return d.h * context.cellHeight + \"px\"; })\n ;\n })\n .on(\"end\", function () {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.dragItem.remove();\n context.dragItem = null;\n context.killGridList();\n })\n ;\n\n this._d3DragResize = d3Drag()\n .subject(function (_d) {\n const d = context.cellToGridItem(_d);\n return { x: (d.x + d.w - 1) * context.cellWidth, y: (d.y + d.h - 1) * context.cellHeight };\n })\n .on(\"start\", function (_d: any) {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.initGridList();\n const d = context.itemsMap[_d.id()];\n context.dragItem = element.append(\"div\")\n .attr(\"class\", \"resizing\")\n .style(\"transform\", function () { return \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\"; })\n .style(\"width\", function () { return d.w * context.cellWidth - context.gutter() + \"px\"; })\n .style(\"height\", function () { return d.h * context.cellHeight - context.gutter() + \"px\"; })\n ;\n context.dragItemPos = { x: d.x, y: d.y };\n })\n .on(\"drag\", function (_d: any) {\n if (!context.designMode()) return;\n const event = d3Event();\n event.sourceEvent.stopPropagation();\n const d = context.itemsMap[_d.id()];\n const pos = [Math.max(0, Math.round(event.x / context.cellWidth)), Math.max(0, Math.round(event.y / context.cellHeight))];\n const size = {\n w: Math.max(1, pos[0] - d.x + 1),\n h: Math.max(1, pos[1] - d.y + 1)\n };\n if (d.w !== size.w || d.h !== size.h) {\n if (context.snapping() !== \"none\") {\n context.resetItemsPos();\n context.gridList.resizeItem(d, size);\n } else {\n d.w = size.w;\n d.h = size.h;\n }\n if (_d.gridColSpan() !== d.w || _d.gridRowSpan() !== d.h) {\n context.items.forEach(context.gridItemToCell);\n context.updateGrid(d.id, 100);\n }\n }\n context.dragItem\n .style(\"width\", function () { return (-d.x + 1) * context.cellWidth + event.x - context.gutter() + \"px\"; })\n .style(\"height\", function () { return (-d.y + 1) * context.cellHeight + event.y - context.gutter() + \"px\"; })\n ;\n })\n .on(\"end\", function () {\n if (!context.designMode()) return;\n d3Event().sourceEvent.stopPropagation();\n context.dragItem.remove();\n context.dragItem = null;\n context.killGridList();\n })\n ;\n }\n\n updateGrid(resize, transitionDuration: number = 0, _noRender: boolean = false) {\n transitionDuration = transitionDuration || 0;\n const context = this;\n this.divItems\n .classed(\"draggable\", this.designMode())\n .transition().duration(transitionDuration)\n .style(\"left\", function (d) { return d.gridCol() * context.cellWidth + context.gutter() / 2 + \"px\"; })\n .style(\"top\", function (d) { return d.gridRow() * context.cellHeight + context.gutter() / 2 + \"px\"; })\n .style(\"width\", function (d) { return d.gridColSpan() * context.cellWidth - context.gutter() + \"px\"; })\n .style(\"height\", function (d) { return d.gridRowSpan() * context.cellHeight - context.gutter() + \"px\"; })\n .on(\"end\", function (d) {\n d\n .surfaceShadow_default(context.surfaceShadow())\n .surfacePadding_default(context.surfacePadding())\n .surfaceBorderWidth_default(context.surfaceBorderWidth())\n .surfaceBackgroundColor_default(context.surfaceBackgroundColor())\n ;\n\n if (resize === true || resize === d.id()) {\n d\n .resize()\n .lazyRender()\n ;\n }\n })\n ;\n }\n\n update(domNode, element2) {\n super.update(domNode, element2);\n\n this._placeholderElement.style(\"overflow-x\", this.fitTo() === \"width\" ? \"hidden\" : null);\n this._placeholderElement.style(\"overflow-y\", this.fitTo() === \"width\" ? \"scroll\" : null);\n const dimensions = this.getDimensions();\n const clientWidth = this.width() - (this.fitTo() === \"width\" ? this._scrollBarWidth : 0);\n this.cellWidth = clientWidth / dimensions.width;\n this.cellHeight = this.fitTo() === \"all\" ? this.height() / dimensions.height : this.cellWidth;\n if (this.designMode()) {\n const cellLaneRatio = Math.min(this.width() / this.snappingColumns(), this.height() / this.snappingRows());\n const laneWidth = Math.floor(cellLaneRatio);\n this.cellWidth = laneWidth;\n this.cellHeight = this.cellWidth;\n }\n\n // Grid ---\n const context = this;\n const divItems = element2.selectAll(\"#\" + this.id() + \" > .ddCell\").data(this.content(), function (d) { return d.id(); });\n this.divItems = divItems.enter().append(\"div\")\n .attr(\"class\", \"ddCell\")\n .each(function (d) {\n d.target(this);\n d.__grid_watch = d.monitor(function (key, newVal, oldVal) {\n if (context._renderCount && (key === \"snapping\" || key.indexOf(\"grid\") === 0) && newVal !== oldVal) {\n if (!context.gridList) {\n // API Call (only needed when not dragging) ---\n context.initGridList();\n if (context.snapping() !== \"none\") {\n context.gridList.resizeGrid(context.snapping() === \"horizontal\" ? context.snappingRows() : context.snappingColumns());\n }\n context.items.forEach(context.gridItemToCell);\n context.updateGrid(d.id(), 100);\n context.killGridList();\n }\n }\n });\n const element = d3Select(this);\n element.append(\"div\")\n .attr(\"class\", \"resizeHandle\")\n .call(context._d3DragResize)\n .append(\"div\")\n .attr(\"class\", \"resizeHandleDisplay\")\n ;\n }).merge(divItems)\n ;\n this.divItems.each(function (d) {\n const element = d3Select(this);\n if (context.designMode()) {\n element.call(context._d3Drag);\n } else {\n element\n .on(\"mousedown.drag\", null)\n .on(\"touchstart.drag\", null)\n ;\n }\n });\n this.divItems.select(\".resizeHandle\")\n .style(\"display\", this.designMode() ? null : \"none\")\n ;\n\n this.updateGrid(true);\n divItems.exit()\n .each(function (d) {\n d.target(null);\n if (d.__grid_watch) {\n d.__grid_watch.remove();\n }\n })\n .remove()\n ;\n\n // Snapping ---\n const lanesBackground = element2.selectAll(\"#\" + this.id() + \" > .laneBackground\").data(this.designMode() ? [\"\"] : []);\n lanesBackground.enter().insert(\"div\", \":first-child\")\n .attr(\"class\", \"laneBackground\")\n .style(\"left\", \"1px\")\n .style(\"top\", \"1px\")\n .on(\"click\", function () {\n context.selectionBagClear();\n })\n .merge(lanesBackground)\n .style(\"width\", (this.snappingColumns() * this.cellWidth) + \"px\")\n .style(\"height\", (this.snappingRows() * this.cellHeight) + \"px\")\n ;\n lanesBackground.exit()\n .each(function () {\n context.selectionBagClear();\n })\n .remove()\n ;\n\n const lanes = element2.selectAll(\"#\" + this.id() + \" > .lane\").data(this.designMode() ? [\"\"] : []);\n lanes.enter().append(\"div\")\n .attr(\"class\", \"lane\")\n .style(\"left\", \"1px\")\n .style(\"top\", \"1px\")\n ;\n lanes\n .style(\"display\", this.showLanes() ? null : \"none\")\n .style(\"width\", (this.snappingColumns() * this.cellWidth) + \"px\")\n .style(\"height\", (this.snappingRows() * this.cellHeight) + \"px\")\n .style(\"background-image\", \"linear-gradient(to right, grey 1px, transparent 1px), linear-gradient(to bottom, grey 1px, transparent 1px)\")\n .style(\"background-size\", this.cellWidth + \"px \" + this.cellHeight + \"px\")\n ;\n lanes.exit()\n .remove()\n ;\n }\n\n exit(domNode, element) {\n this.content().forEach(w => w.target(null));\n super.exit(domNode, element);\n }\n\n _createSelectionObject(d) {\n return {\n _id: d._id,\n element: () => {\n return d._element;\n },\n widget: d\n };\n }\n\n selection(_) {\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\n this._selectionBag.set(_.map(function (row) {\n return this._createSelectionObject(row);\n }, this));\n return this;\n }\n\n selectionBagClear() {\n if (!this._selectionBag.isEmpty()) {\n this._selectionBag.clear();\n this.postSelectionChange();\n }\n }\n\n selectionBagClick(d) {\n if (d !== null) {\n const selectionObj = this._createSelectionObject(d);\n if (d3Event().sourceEvent.ctrlKey) {\n if (this._selectionBag.isSelected(selectionObj)) {\n this._selectionBag.remove(selectionObj);\n this.postSelectionChange();\n } else {\n this._selectionBag.append(selectionObj);\n this.postSelectionChange();\n }\n } else {\n const selected = this._selectionBag.get();\n if (selected.length === 1 && selected[0]._id === selectionObj._id) {\n this.selectionBagClear();\n } else {\n this._selectionBag.set([selectionObj]);\n }\n this.postSelectionChange();\n }\n }\n }\n\n postSelectionChange() {\n }\n\n applyLayout(layoutArr: ICellPosition[]) {\n this.divItems.each((d, i) => {\n if (layoutArr[i]) {\n const [x, y, w, h] = layoutArr[i];\n d\n .gridCol(x)\n .gridRow(y)\n .gridColSpan(w)\n .gridRowSpan(h)\n ;\n }\n });\n this.updateGrid(true);\n }\n\n vizActivation(elem) {\n }\n}\nGrid.prototype._class += \" layout_Grid\";\n\nexport interface Grid {\n designMode(): boolean;\n designMode(_: boolean): this;\n showLanes(): boolean;\n showLanes(_: boolean): this;\n fitTo(): string;\n fitTo(_: string): this;\n\n snapping(): string;\n snapping(_: string): this;\n snappingColumns(): number;\n snappingColumns(_: number): this;\n snappingRows(): number;\n snappingRows(_: number): this;\n snappingColumns_default(): number;\n snappingColumns_default(_: number): this;\n snappingRows_default(): number;\n snappingRows_default(_: number): this;\n\n gutter(): number;\n gutter(_: number): this;\n\n surfaceShadow(): boolean;\n surfaceShadow(_: boolean): this;\n surfacePadding(): string;\n surfacePadding(_: string): this;\n surfaceBorderWidth(): number;\n surfaceBorderWidth(_: number): this;\n surfaceBackgroundColor(): string;\n surfaceBackgroundColor(_: string): this;\n\n content(): Cell[];\n content(_: Cell[]): this;\n}\n\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, { tags: [\"Basic\"], disable: w => !w.designMode() });\nGrid.prototype.publish(\"fitTo\", \"all\", \"set\", \"Sizing Strategy\", [\"all\", \"width\"], { tags: [\"Basic\"] });\nGrid.prototype.publish(\"snapping\", \"vertical\", \"set\", \"Snapping Strategy\", [\"vertical\", \"horizontal\", \"none\"]);\nGrid.prototype.publish(\"snappingColumns\", 12, \"number\", \"Snapping Columns\");\nGrid.prototype.publish(\"snappingRows\", 16, \"number\", \"Snapping Rows\");\n\nGrid.prototype.publish(\"gutter\", 6, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\n\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\"] });\n\nGrid.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Basic\"], render: false });\n","import { FlexGrid } from \"./FlexGrid\";\n\nexport class HorizontalList extends FlexGrid {\n constructor() {\n super();\n this.orientation_default(\"horizontal\");\n this.flexWrap_default(\"nowrap\");\n }\n}\nHorizontalList.prototype._class += \" layout_HorizontalList\";\n\nexport interface HorizontalList {\n orientation_default(_: \"horizontal\" | \"vertical\");\n flexWrap_default(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\");\n}\n","import { HTMLWidget, Text } from \"@hpcc-js/common\";\n\nimport \"../src/Layered.css\";\n\nexport type LayerPlacement = \"default\" | \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\n\nexport class Layered extends HTMLWidget {\n protected _contentContainer;\n _widgetPlacements;\n _widgetRatios;\n constructor() {\n super();\n\n this._tag = \"div\";\n this._widgetPlacements = [];\n this._widgetRatios = [];\n }\n\n addLayer(widget, placement: LayerPlacement = \"default\", widthRatio: number = 1, heightRatio: number = 1) {\n const widgets = this.widgets();\n widgets.push(widget ? widget : new Text().text(\"No widget defined for layer.\"));\n this.widgets(widgets);\n this._widgetPlacements.push(placement);\n this._widgetRatios.push([widthRatio, heightRatio]);\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._contentContainer = element.append(\"div\")\n .attr(\"class\", \"container\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n element.style(\"padding\", this.surfacePadding() + \"px\");\n\n const content = this._contentContainer.selectAll(\".content.id\" + this.id()).data(this.widgets(), function (d) { return d.id(); });\n content.enter().append(\"div\")\n .attr(\"class\", \"content id\" + this.id())\n .each(function (widget, idx) {\n widget.target(this);\n })\n .merge(content)\n .each(function (widget, idx) {\n const clientSize = {\n width: context.clientWidth(),\n height: context.clientHeight()\n };\n const widgetSize = context.widgetSize(idx, clientSize);\n const widgetPosition = context.widgetPosition(idx, clientSize, widgetSize);\n console.log(\"widgetPosition\", widgetPosition);\n this.style.top = widgetPosition.y + \"px\";\n this.style.left = widgetPosition.x + \"px\";\n widget\n .resize(widgetSize)\n .render()\n ;\n })\n ;\n content.exit()\n .each(function (widget, idx) {\n widget\n .target(null)\n ;\n })\n .remove()\n ;\n content.order();\n }\n\n widgetSize(idx, clientSize) {\n if (this._widgetPlacements[idx] === \"default\") {\n return {\n width: clientSize.width * this._widgetRatios[idx][0],\n height: clientSize.height * this._widgetRatios[idx][1]\n };\n } else {\n return {\n width: clientSize.width * this._widgetRatios[idx][0],\n height: clientSize.height * this._widgetRatios[idx][1]\n };\n }\n }\n widgetPosition(idx, clientSize, widgetSize) {\n switch (this._widgetPlacements[idx]) {\n default:\n return {\n x: 0,\n y: 0\n };\n case \"top\":\n return {\n x: (clientSize.width / 2) - (widgetSize.width / 2),\n y: 0\n };\n case \"bottom\":\n return {\n x: (clientSize.width / 2) - (widgetSize.width / 2),\n y: clientSize.height - widgetSize.height\n };\n case \"left\":\n return {\n x: 0,\n y: (clientSize.height / 2) - (widgetSize.height / 2)\n };\n case \"right\":\n return {\n x: clientSize.width - widgetSize.width,\n y: (clientSize.height / 2) - (widgetSize.height / 2)\n };\n case \"center\":\n return {\n x: (clientSize.width / 2) - (widgetSize.width / 2),\n y: (clientSize.height / 2) - (widgetSize.height / 2)\n };\n }\n }\n\n surfacePadding: { (): number; (_: string): Layered; };\n widgets: { (): any[]; (_: any[]): Layered; };\n}\nLayered.prototype._class += \" layout_Layered\";\n\nLayered.prototype.publish(\"surfacePadding\", 0, \"number\", \"Padding\");\nLayered.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nexport class Popup extends HTMLWidget {\n _surfaceButtons;\n _originalPosition;\n\n constructor() {\n super();\n this._tag = \"div\";\n this._surfaceButtons = [];\n }\n\n updateState(visible) {\n visible = visible || !this.popupState();\n this.popupState(visible).render();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.widget()\n .target(domNode)\n ;\n this._originalPosition = this.position();\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element\n .style(\"visibility\", this.popupState() ? null : \"hidden\")\n .style(\"opacity\", this.popupState() ? null : 0)\n .style(\"width\", this.shrinkWrap() ? this.widget().width() + \"px\" : this._size.width + \"px\")\n .style(\"height\", this.shrinkWrap() ? this.widget().height() + \"px\" : this._size.height + \"px\")\n ;\n if (this.widget().size().height === 0) {\n this.widget().resize(this.size());\n }\n }\n\n postUpdate(domNode, element) {\n let left;\n let top;\n switch (this.centerPopup()) {\n case \"container\":\n if (this._placeholderElement) {\n left = parseInt(this._placeholderElement.style(\"width\")) / 2 - this.widget().width() / 2;\n top = parseInt(this._placeholderElement.style(\"height\")) / 2 - this.widget().height() / 2;\n }\n this.position(\"absolute\");\n break;\n\n case \"window\":\n left = window.innerWidth / 2 - this.widget().width() / 2;\n top = window.innerHeight / 2 - this.widget().height() / 2;\n this.position(\"fixed\");\n break;\n\n default:\n left = 0;\n top = 0;\n this.position(this._originalPosition);\n break;\n }\n\n this.pos({ x: left, y: top });\n\n super.postUpdate(domNode, element);\n\n element\n .style(\"position\", this.position())\n .style(\"left\", this.left() + \"px\")\n .style(\"right\", this.right() + \"px\")\n .style(\"top\", this.top() + \"px\")\n .style(\"bottom\", this.bottom() + \"px\")\n ;\n }\n\n exit(domNode, element) {\n if (this.widget()) {\n this.widget().target(null);\n }\n super.exit(domNode, element);\n }\n\n click(obj) {\n console.log(\"Clicked: \" + obj.id);\n }\n\n popupState: { (): boolean; (_: boolean): Popup; };\n shrinkWrap: { (): boolean; (_: boolean): Popup; };\n centerPopup: { (): string; (_: string): Popup; };\n top: { (): number; (_: number): Popup; };\n bottom: { (): number; (_: number): Popup; };\n left: { (): number; (_: number): Popup; };\n right: { (): number; (_: number): Popup; };\n position: { (): string; (_: string): Popup; };\n\n widget: { (): any; (_: any): Popup; };\n}\nPopup.prototype._class += \" layout_Popup\";\n\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\", [\"none\", \"container\", \"window\"], {});\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\", [\"absolute\", \"relative\", \"fixed\", \"static\", \"initial\", \"inherit\"], { tags: [\"Private\"] });\n\nPopup.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\n","import { HTMLWidget, Text } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Surface } from \"./Surface\";\n\nimport \"../src/Tabbed.css\";\n\nexport class Tabbed extends HTMLWidget {\n _tabContainer;\n _contentContainer;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n clearTabs() {\n this.labels([]);\n this.widgets([]);\n return this;\n }\n\n addTab(widget, label, isActive?, callback?) {\n const widgetSize = widget.size();\n if (widgetSize.width === 0 && widgetSize.height === 0) {\n widget.size({ width: \"100%\", height: \"100%\" });\n }\n const labels = this.labels();\n const widgets = this.widgets();\n if (isActive) {\n this.activeTabIdx(this.widgets().length);\n }\n labels.push(label);\n const surface = new Surface().widget(widget ? widget : new Text().text(\"No widget defined for tab\"));\n widgets.push(surface);\n this.labels(labels);\n this.widgets(widgets);\n if (callback) {\n callback(surface);\n }\n return this;\n }\n\n widgetSize(widgetDiv) {\n const width = this.clientWidth();\n let height = this.clientHeight();\n\n const tcBox = this._tabContainer.node().getBoundingClientRect();\n if (typeof (tcBox.height) !== \"undefined\") {\n height -= tcBox.height;\n }\n return { width, height };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._tabContainer = element.append(\"div\");\n this._contentContainer = element.append(\"div\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n element.style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null);\n\n const tabs = this._tabContainer.selectAll(\".tab-button.id\" + this.id()).data(this.showTabs() ? this.labels() : [], function (d) { return d; });\n tabs.enter().append(\"span\")\n .attr(\"class\", \"tab-button id\" + this.id())\n .style(\"cursor\", \"pointer\")\n .on(\"click\", function (d, idx) {\n context.click(context.widgets()[idx].widget(), d, idx);\n context\n .activeTabIdx(idx)\n .render()\n ;\n }).merge(tabs)\n .classed(\"active\", function (d, idx) { return context.activeTabIdx() === idx; })\n .text(function (d) { return d; })\n ;\n tabs.exit().remove();\n\n const content = this._contentContainer.selectAll(\".tab-content.id\" + this.id()).data(this.widgets(), function (d) { return d.id(); });\n content.enter().append(\"div\")\n .attr(\"class\", \"tab-content id\" + this.id())\n .each(function (widget, idx) {\n widget.target(this);\n }).merge(content)\n .classed(\"active\", function (d, idx) { return context.activeTabIdx() === idx; })\n .style(\"display\", function (d, idx) { return context.activeTabIdx() === idx ? \"block\" : \"none\"; })\n .each(function (surface, idx) {\n surface.visible(context.activeTabIdx() === idx);\n if (context.activeTabIdx() === idx) {\n const wSize = context.widgetSize(d3Select(this));\n surface\n .surfaceBorderWidth(context.showTabs() ? null : 0)\n .surfacePadding(context.showTabs() ? null : 0)\n .resize(wSize)\n ;\n }\n })\n ;\n content.exit()\n .each(function (widget, idx) {\n widget\n .target(null)\n ;\n })\n .remove();\n\n switch (this.tabLocation()) {\n case \"bottom\":\n this._tabContainer\n .attr(\"class\", \"on_bottom\")\n .style(\"top\", (this._contentContainer.node().offsetHeight + this.surfacePadding()) + \"px\")\n .style(\"position\", \"absolute\")\n ;\n this._contentContainer\n .style(\"top\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null)\n .style(\"position\", \"absolute\")\n ;\n break;\n default:\n this._tabContainer\n .attr(\"class\", \"on_top\")\n .style(\"top\", null)\n .style(\"position\", \"relative\")\n ;\n this._contentContainer\n .style(\"top\", (this._tabContainer.node().offsetHeight + this.surfacePadding()) + \"px\")\n .style(\"position\", \"absolute\")\n ;\n break;\n }\n }\n\n click(widget, column, idx) {\n }\n\n showTabs: { (): boolean; (_: boolean): Tabbed; };\n surfacePadding: { (): number; (_: number): Tabbed; };\n surfacePadding_default: { (): number; (_: number): Tabbed; };\n surfacePadding_exists: () => boolean;\n activeTabIdx: { (): number; (_: number): Tabbed; };\n\n labels: { (): string[]; (_: string[]): Tabbed; };\n tabLocation: { (): string; (_: string): Tabbed; };\n widgets: { (): any[]; (_: any[]): Tabbed; };\n}\nTabbed.prototype._class += \" layout_Tabbed\";\n\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, {});\n\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","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Toolbar.css\";\n\nfunction Toolbar() {\n HTMLWidget.call(this);\n\n this._tag = \"div\";\n}\nToolbar.prototype = Object.create(HTMLWidget.prototype);\nToolbar.prototype.constructor = Toolbar;\nToolbar.prototype._class += \" layout_Toolbar\";\n\nToolbar.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\n\nToolbar.prototype.publish(\"fontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"fontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"fontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"fontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\nToolbar.prototype.publish(\"backgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\n\nToolbar.prototype.publish(\"responsive\", true, \"boolean\", \"Adapts to pixel width\", null, { tags: [\"Basic\"] });\n\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\nToolbar.prototype.enter = function (domNode, element) {\n HTMLWidget.prototype.enter.apply(this, arguments);\n};\n\nToolbar.prototype.update = function (domNode, element) {\n HTMLWidget.prototype.update.apply(this, arguments);\n const context = this;\n\n element\n .attr(\"title\", context.title())\n .style(\"background-color\", this.backgroundColor())\n ;\n\n const title = element.selectAll(\"div.toolbar-title\")\n .data(this.title() ? [this.title()] : []);\n title.enter().append(\"div\")\n .classed(\"toolbar-title\", true)\n .append(\"span\")\n ;\n title.selectAll(\"div.toolbar-title > span\")\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n .style(\"color\", this.fontColor_exists() ? this.fontColor() : null)\n .style(\"font-family\", this.fontFamily_exists() ? this.fontFamily() : null)\n .style(\"font-weight\", this.fontBold_exists() ? (this.fontBold() ? \"bold\" : \"normal\") : null)\n .style(\"background-color\", this.backgroundColor_exists() ? this.backgroundColor() : null)\n .text(context.title())\n ;\n title.exit().remove();\n\n const childWidgets = element.selectAll(\"div.toolbar-child\")\n .data(this.widgets() !== null ? this.widgets() : [], function (d) { return d.id(); });\n\n childWidgets.enter().insert(\"div\", \"div.toolbar-title\")\n .each(function (d, i) {\n const widgetClass = context.widgetClasses()[i] ? context.widgetClasses()[i] + \" toolbar-child\" : \"toolbar-child\";\n d3Select(this).classed(widgetClass, true);\n d.target(this);\n });\n childWidgets.exit().each(function (d) {\n d.target(null);\n }).remove();\n childWidgets.order();\n};\n\nToolbar.prototype.render = function (callback) {\n const context = this;\n HTMLWidget.prototype.render.call(this, function (w) {\n const toolbarBBox = context.element().node().getBoundingClientRect();\n let minX = toolbarBBox.left + toolbarBBox.width;\n context.element().selectAll(\"div.toolbar-child\")\n .each(function (d, i) {\n const childBBox = this.getBoundingClientRect();\n if (minX > childBBox.left)\n minX = childBBox.left;\n })\n ;\n context.element().select(\".toolbar-title\")\n .style(\"width\", (minX - toolbarBBox.left - 4) + \"px\")\n ;\n if (callback) {\n callback(w);\n }\n });\n};\n\nToolbar.prototype.exit = function (domNode, element) {\n HTMLWidget.prototype.exit.apply(this, arguments);\n this.widgets().forEach(function (w) {\n w.target(null);\n });\n};\n\nexport {\n Toolbar\n};\n","import { FlexGrid } from \"./FlexGrid\";\n\nexport class VerticalList extends FlexGrid {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n this.flexWrap_default(\"nowrap\");\n }\n}\nVerticalList.prototype._class += \" layout_VerticalList\";\n\nexport interface VerticalList {\n orientation_default(_: \"horizontal\" | \"vertical\");\n flexWrap_default(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\");\n}\n"],"names":["d3Select","d3SelectAll","drag","d3Drag","pi","tau","circle","d3_identity","d","d3_reverse","arr","mirror","i","l","length","d3_textWrapping","text","width","each","select","words","split","reverse","word","line","lineHeight","attr","dy","parseFloat","tspan","append","pop","push","join","node","getComputedTextLength","d3_mergeLabels","gen","labels","domain","range","customLabels","genLength","d3_linearLegend","scale","cells","labelFormat","data","increment","map","d3_quantLegend","labelDelimiter","invert","invertExtent","d3_ordinalLegend","d3_cellOver","cellDispatcher","obj","call","d3_cellOut","d3_cellClick","shape","shapes","shapeHeight","shapeWidth","shapeRadius","path","svg","enter","classPrefix","labelWidth","selectAll","ascending","type","ticks","cellFilter","filterCells","label","filter","dataValues","labelValues","indexOf","orient","cell","cellTrans","textTrans","labelAlign","style","dispatcher","on","title","titleWidth","titleText","cellsSvg","yOffset","nodes","getBBox","height","xOffset","x","color","scaleLinear","shapePadding","useClass","locale","helper","d3_defaultLocale","specifier","d3_defaultFormatSpecifier","labelOffset","d3_defaultDelimiter","labelWrap","legendDispatcher","dispatch","legend","d3_calcType","format","legendG","d3_filterCells","cellEnter","d3_addEvents","exit","transition","remove","merge","d3_drawShapes","d3_addText","textSize","shapeSize","feature","textAlign","cellSize","Math","max","sum","slice","y","d3_placement","d3_title","_","arguments","formatLocale","formatSpecifier","toLowerCase","textWrap","value","apply","d3LegendColor","d3Format","d3ScaleOrdinal","this","_GridList.default"],"mappings":"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"}