@hpcc-js/layout 2.51.3 → 2.51.5

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,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__spreadArray","to","from","pack","ar","l","slice","concat","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","SuppressedError","AbsoluteSurface","_super","_this","_tag","enter","domNode","element","update","xPos","yPos","width","clientWidth","height","clientHeight","units","widgetX","widgetY","widgetWidth","Number","widgetHeight","opacity","widgets","selectAll","_id","data","widget","append","attr","each","target","merge","resize","exit","remove","HTMLWidget","_class","publish","tags","Accordion","_isClosed","pushListItem","prepend","protect","contentArr","content","_protected","unshift","clearListItems","arr","collapseClick","classed","context","defaultCollapsed","titleSpan","iconDiv","ul","icon","FAChar","size","node","on","render","text","title","rows","li","_target","wSize","cSize","text_colorFill","titleFontColor","char","closedIcon","openIcon","Surface","_surfaceButtons","widgetSize","titleDiv","widgetDiv","calcHeight","calcFrameHeight","calcFrameWidth","element2","surfaceShadow","surfaceBorderWidth_exists","surfaceBorderWidth","surfaceBorderColor","surfaceBorderRadius_exists","surfaceBorderRadius","surfaceBackgroundColor","titles","insert","surfaceTitleAlignment","surfaceTitleFontColor","surfaceTitleFontSize_exists","surfaceTitleFontSize","surfaceTitleFontFamily","surfaceTitleFontBold","surfaceTitleBackgroundColor","surfaceTitlePadding_exists","surfaceTitlePadding","altText_exists","altText","surfaceButtons","select","buttonAnnotations","button","idx","el","d3Select","class","id","padding","font","click","_d","parentElement","classID","split","surfacePadding_exists","surfacePadding","obj","optional","disable","w","Cell","_indicateTheseIds","indicateTheseIds","onMouseEnter","onMouseLeave","indicatorOpacity","indicatorBorderColor","indicatorGlowColor","otherElement","otherWidget","datum","d3SelectAll","Border","lazyPostUpdate","Utility","debounce","postUpdate","_colCount","_rowCount","_colSize","_rowSize","_shrinkWrapBoxes","sectionTypes","watchWidget","undefined","_watch","context_1","monitor","paramId","newVal","oldVal","applyLayoutType","layoutObj","borderLayoutObject","forEach","cell","_fixedLeft","left","_fixedTop","top","_fixedWidth","_fixedHeight","_dragHandles","cellSpecificDragHandles","sectionType","layoutType","topSize","topPerc","bottomSize","bottomPerc","leftSize","leftPerc","rightSize","rightPerc","retObj","bcRect","getBoundingClientRect","bottom","right","SVGElement","parseFloat","getAttribute","indexOf","topPercentage","gutter","bottomPercentage","leftPercentage","rightPercentage","_sectionPlacementObject","px","r","c","clearContent","splice","contentWidget","hasContent","setContent","getCell","getContent","setLayoutOffsets","_offsetX","_element","_offsetY","dragStart","handle","event","d3Event","sourceEvent","stopPropagation","_dragCell","_dragCellStartSize","handleElm","_handleTop","_handleLeft","_dragPrevX","clientX","_dragPrevY","clientY","dragTick","xDelta","yDelta","_moveHandles","handle2","delta","handles","grabbedHandle","_cellSizes","topHeight","leftHeight","bottomHeight","rightHeight","rightWidth","leftWidth","handle3","dragEnd","event_1","getBBox","retVal","contentDiv","_size","_scrollBarWidth","Platform","getScrollbarWidth","_borderHandles","_sectionTypeArr","designMode","rowsUpdate","drag","d3Drag","_placeholderElement","getCellSizes","contentRect","rect","prevBox","currBox","lazyRender","WidgetDiv","div","_overlay","_overflowX","_overflowY","_div","overlay","overflowX","overflowY","_widget","availableHeight","availableWidth","renderPromise","visible","x","Border2","topElement","_bodyElement","centerElement","leftElement","rightElement","bottomElement","_topWA","_centerWA","_leftWA","_rightWA","_bottomWA","showTop","showRight","showBottom","showLeft","topOverflowX","rightOverflowX","bottomOverflowX","leftOverflowX","topOverflowY","rightOverflowY","bottomOverflowY","leftOverflowY","targetNull","center","swap","sectionA","sectionB","a","callback","topOverlay","topBBox","bottomBBox","_a","leftBBox","rightBBox","bottomHeight_exists","bodyWidth","bodyHeight","centerOverflowX","centerOverflowY","scrollCenterX","scrollCenterY","promises","all","Carousel","_prevActive","activeWidget","active","_root","widgetElements","transition","duration","transitionDuration","isDOMHidden","aw","w2","pi","Math","PI","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","constant","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","h","toString","d3SymbolCircle","draw","d3SymbolCross","tan30","tan30_2","d3SymbolDiamond","kr","kx","ky","d3SymbolStar","d3SymbolSquare","sqrt3","d3SymbolTriangle","k","d3SymbolWye","d3Symbol","circle","symbol","buffer","d3_identity","d3_reverse","mirror","d3_textWrapping","word","words","reverse","line","tspan","join","getComputedTextLength","helper","shape","shapes","shapeHeight","shapeWidth","shapeRadius","svg","labels","classPrefix","labelWidth","scale","ascending","cells","labelFormat","labelDelimiter","invertExtent","range","map","invert","d3_quantLegend","ticks","domain","increment","feature","d3_linearLegend","d3_ordinalLegend","gen","_typeof","customLabels","genLength","_i","d3_mergeLabels","cellFilter","filterCells","filter","dataValues","labelValues","orient","cellTrans","textTrans","labelAlign","dispatcher","cellDispatcher","d3_title","titleWidth","cellsSvg","yOffset","nodes","xOffset","d3_defaultLocale","format","d3_defaultDelimiter","Legend","owner","_disabled","_symbolTypeMap","cross","diamond","square","star","triangle","wye","_owner","_drawStartPos","_legendOrdinal","scaleLinear","shapePadding","useClass","locale","specifier","d3_defaultFormatSpecifier","labelOffset","labelWrap","legendDispatcher","dispatch","legend","d3_calcType","d3_filterCells","cellEnter","d3_addEvents","d3_drawShapes","d3_addText","textSize","shapeSize","cellSize","textAlign","max","sum","d3_placement","formatLocale","formatSpecifier","toLowerCase","textWrap","d3LegendColor","onClick","onOver","onOut","isDisabled","Database","Field","filteredFields","dataFamily","fields","filteredColumns","columns","filteredData","row","disabledCols_1","anyDisabled_1","col","disabled","isRainbow","getWidget","_palette","targetWidget","_targetWidget","_targetWidgetMonitor","key","newProp","oldProp","source","chart","getPalette","Palette","ordinal","rainbow","getPaletteType","fillColorFunc","fillColor","paletteID","name","switch","sel","palette","_g","calcMetaData","dataArr","total","maxLabelWidth","colLength","columns_1","fillColor_1","val_1","reduce","acc","showSeriesTotal","d3Format","rainbowFormat","steps","rainbowBins","weightMin","_dataMinWeight","weightMax","_dataMaxWeight","stepWeightDiff","mid","floor","parseInt","radius","radiusToSymbolSize","itemPadding","orientation","d3ScaleOrdinal","symbolType","labelMaxWidth","updateDisabled","legendCellsBbox","offsetX","offsetY","_containerSize","pos","legendTotal","showLegendTotal","totalText","totalOffsetX","totalOffsetY","enableOverflowScroll","enableOverflow","_boundingBox","_parentRelativeDiv","circleSize","pow","disabledIdx","refreshColumns","refreshData","instanceOfIHighlight","highlightColumn","onDblClick","rowData","rowIdx","onMouseOver","fitToContent","bbox","SVGWidget","Modal","closeModal","getRelativeTarget","relativeTarget","relativeTargetId","getElementById","locateAncestor","setModalSize","fixedHeight","fixedWidth","_modal","minHeight","minWidth","maxHeight","maxWidth","modalRect","headerRect","_modalHeader","_modalBody","setFadePosition","_fade","setModalPosition","fixedTop","fixedLeft","resizeBodySync","enableClickFadeToClose","showFade","header_h","titleFontSize","formattedTitle","_modalHeaderAnnotations","_modalHeaderCloseButton","html","show","_relativeTarget","title_exists","trim","ChartPanel","_legend","_progressBar","ProgressBar","_autoScale","_resolutions","tiny","small","_toggleInfo","ToggleButton","faChar","tooltip","selected","description","Text","origCloseFunc_1","_close","_toggleData","dataVisible","_buttonDownload","Button","downloadCSV","_buttonDownloadImage","downloadPNG","_toggleLegend","legendPosition","legendVisible","_spacer","Spacer","_titleBar","TitleBar","buttons","_carousel","_table","Table","_hideLegendToggleList","refreshFields","asDefault","highlight","_highlight","startProgress","start","finishProgress","finish","namePrefix","downloadTitle","nameSuffix","downloadTimestampSuffix","timestamp","downloadString","export","column","cssTag_1","cssTag","getResponsiveMode","enableAutoscaling","setOrigSize","_orig_size","JSON","parse","stringify","preUpdateTiny","preUpdateSmall","scale_x","scale_y","_scale","min","x_is_smaller","preUpdateRegular","widget_exists","chart_1","xAxisType","yAxisType","columnType","columnPattern","xAxisTypeTimePattern","yAxisTypeTimePattern","columnFormat","xAxisTickFormat","yAxisTickFormat","preUpdate","_prevLegendPosition","_prevdataVisible","_prevlegendVisible","_dataFamily","_prevChartDataFamily","highlightSize","highlightColor","_prevChart","widgetIconBar","IconBar","_prevButtons","hiddenButtons","dataButtonVisible","downloadButtonVisible","downloadImageButtonVisible","legendButtonVisible","enabled","titleVisible","titleOverlay","postUpdateTiny","postUpdateSmall","postUpdateRegular","titleIconFontSize","_node","containerRect","icon_top","parentRect","_prevPos","dblclick","vertex_click","more","vertex","vertex_dblclick","edge_click","edge","edge_dblclick","publishReset","publishProxy","tmpAny","FlexGrid","parentNode","cachedSizes","updateFlexParent","listItems","itemMinHeight","itemMinWidth","flexBasis","widgetsFlexBasis","flexGrow","widgetsFlexGrow","borderWidth","itemBorderColor","display","flexWrap","alignItems","alignContent","forceXScroll","disableScroll","forceYScroll","module","exports","GridList","items","options","_options","defaults","_adjustSizeOfItems","generateGrid","cloneItems","_items","lanes","direction","item","j","widthOfGrid","grid","output","border","_padNumber","_resetGrid","_markItemPositionToGrid","resizeGrid","currentColumn","_sortItemsByPosition","position","_getItemPosition","_updateItemPosition","findPositionForItem","_pullItemsToLeft","fixedRow","_itemFitsAtPosition","newCol","newRow","moveItemToPosition","newPosition","_resolveCollisions","resizeItem","_updateItemSize","getChangedItems","initialItems","idAttribute","changedItems","_getItemByAttribute","sort","item1","item2","position1","position2","bind","autoSize","_deleteItemPositionFromGrid","_setItemPosition","_ensureColumns","N","GridCol","_getItemsCollidingWithItem","collidingItems","_itemsAreColliding","_tryToResolveCollisionsLocally","leftOfItem","rightOfItem","aboveOfItem","belowOfItem","_gridList","collidingItem","collidingPosition","fixedItem","fixedPosition","_findLeftMostPositionForItem","tail","otherItem","otherPosition","nr","prefix","factory","_GridList","_GridList.default","Grid","_selectionBag","Selection","getDimensions","gridCol","gridColSpan","gridRow","gridRowSpan","rowSpan","colSpan","sortedContent","some","getWidgetCell","cellToGridItem","gridItemToCell","resetItemsPos","origItems","origItem","itemsMap","initGridList","gridList","snapping","snappingRows","snappingColumns","killGridList","_d3Drag","subject","cellWidth","cellHeight","dragItem","selectionBagClick","updateGrid","_d3DragResize","dragItemPos","round","_noRender","divItems","surfaceShadow_default","surfacePadding_default","surfaceBorderWidth_default","surfaceBackgroundColor_default","fitTo","dimensions","cellLaneRatio","laneWidth","__grid_watch","_renderCount","lanesBackground","selectionBagClear","showLanes","_createSelectionObject","selection","set","get","isEmpty","clear","postSelectionChange","selectionObj","ctrlKey","isSelected","applyLayout","layoutArr","vizActivation","elem","HorizontalList","orientation_default","flexWrap_default","Layered","_widgetPlacements","_widgetRatios","addLayer","placement","widthRatio","heightRatio","_contentContainer","clientSize","widgetPosition","order","Popup","updateState","popupState","_originalPosition","shrinkWrap","centerPopup","window","innerWidth","innerHeight","Tabbed","clearTabs","addTab","isActive","activeTabIdx","surface","tcBox","_tabContainer","tabs","showTabs","tabLocation","offsetHeight","Toolbar","backgroundColor","fontSize_exists","fontSize","fontColor_exists","fontColor","fontFamily_exists","fontFamily","fontBold_exists","fontBold","backgroundColor_exists","childWidgets","widgetClass","widgetClasses","toolbarBBox","minX","childBBox","VerticalList"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../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","../src/Legend.ts","../../../node_modules/d3-svg-legend/src/color.js","../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.51.2\";\r\nexport const BUILD_VERSION = \"2.108.6\";\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\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\";\r\n\r\nimport \"../src/AbsoluteSurface.css\";\r\n\r\nexport class AbsoluteSurface extends HTMLWidget {\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n\r\n let xPos = 0;\r\n let yPos = 0;\r\n let width = this.clientWidth();\r\n let height = this.clientHeight();\r\n switch (this.units()) {\r\n case \"pixels\":\r\n xPos = this.widgetX();\r\n yPos = this.widgetY();\r\n width = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth());\r\n height = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight());\r\n break;\r\n case \"percent\":\r\n xPos = this.widgetX() * width / 100;\r\n yPos = this.widgetY() * height / 100;\r\n width = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth()) * width / 100;\r\n height = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight()) * height / 100;\r\n break;\r\n }\r\n element.style(\"opacity\", this.opacity());\r\n\r\n const widgets = element.selectAll(\"#\" + this._id + \" > .placeholder\").data(this.widget() ? [this.widget()] : [], function (d) { return d._id; });\r\n widgets.enter().append(\"div\")\r\n .attr(\"class\", \"placeholder\")\r\n .each(function (d) {\r\n d.target(this);\r\n })\r\n .merge(widgets)\r\n .style(\"left\", xPos + \"px\")\r\n .style(\"top\", yPos + \"px\")\r\n .style(\"width\", width + \"px\")\r\n .style(\"bottom\", height + \"px\")\r\n .each(function (d) {\r\n d\r\n .resize({ width, height })\r\n ;\r\n })\r\n ;\r\n widgets.exit().each(function (d) {\r\n d.target(null);\r\n }).remove();\r\n }\r\n\r\n exit(domNode, element) {\r\n if (this.widget()) {\r\n this.widget().target(null);\r\n }\r\n super.exit(domNode, element);\r\n }\r\n\r\n units: { (): string; (_: string): AbsoluteSurface; };\r\n widgetX: { (): number; (_: number): AbsoluteSurface; };\r\n widgetY: { (): number; (_: number): AbsoluteSurface; };\r\n widgetWidth: { (): string; (_: string): AbsoluteSurface; };\r\n widgetHeight: { (): string; (_: string): AbsoluteSurface; };\r\n widget: { (): any; (_: any): AbsoluteSurface; };\r\n opacity: { (): number; (_: number): AbsoluteSurface; };\r\n}\r\nAbsoluteSurface.prototype._class += \" layout_AbsoluteSurface\";\r\n\r\nAbsoluteSurface.prototype.publish(\"units\", \"percent\", \"set\", \"Units\", [\"pixels\", \"percent\"]);\r\nAbsoluteSurface.prototype.publish(\"widgetX\", 0, \"number\", \"Widget XPos\");\r\nAbsoluteSurface.prototype.publish(\"widgetY\", 0, \"number\", \"Widget YPos\");\r\nAbsoluteSurface.prototype.publish(\"widgetWidth\", \"100\", \"string\", \"Widget Width, omit for full\");\r\nAbsoluteSurface.prototype.publish(\"widgetHeight\", \"100\", \"string\", \"Widget Height, omit for full\");\r\nAbsoluteSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\r\nAbsoluteSurface.prototype.publish(\"opacity\", 1, \"number\", \"Opacity\");\r\n","import { FAChar, HTMLWidget } from \"@hpcc-js/common\";\r\n\r\nimport \"../src/Accordion.css\";\r\n\r\nexport class Accordion extends HTMLWidget {\r\n protected _isClosed: boolean;\r\n titleSpan;\r\n iconDiv;\r\n ul;\r\n icon;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n this._isClosed = false;\r\n }\r\n\r\n pushListItem(widget, prepend: boolean = false, protect: boolean = false) {\r\n const contentArr = this.content();\r\n\r\n widget._protected = protect;\r\n\r\n if (prepend) {\r\n contentArr.unshift(widget);\r\n } else {\r\n contentArr.push(widget);\r\n }\r\n this.content(contentArr);\r\n return this;\r\n }\r\n\r\n clearListItems() {\r\n const arr = [];\r\n for (const i in this.content()) {\r\n if (this.content()[i]._protected) {\r\n arr.push(this.content()[i]);\r\n }\r\n }\r\n this.content(arr);\r\n return this;\r\n }\r\n\r\n collapseClick(element) {\r\n if (element.classed(\"closed\")) {\r\n this._isClosed = false;\r\n element.classed(\"open\", true);\r\n element.classed(\"closed\", false);\r\n } else {\r\n this._isClosed = true;\r\n element.classed(\"open\", false);\r\n element.classed(\"closed\", true);\r\n }\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n const context = this;\r\n this._isClosed = this.defaultCollapsed();\r\n element.classed(this._isClosed ? \"closed\" : \"open\", true);\r\n\r\n this.titleSpan = element.append(\"span\").classed(\"collapsible-title\", true);\r\n this.iconDiv = element.append(\"div\").classed(\"collapsible-icon\", true);\r\n this.ul = element.append(\"ul\");\r\n\r\n this.icon = new FAChar()\r\n .size({ height: 24, width: 24 })\r\n .target(this.iconDiv.node());\r\n\r\n this.iconDiv.on(\"click\", function () {\r\n context.collapseClick(element);\r\n context.render();\r\n });\r\n this.titleSpan.on(\"click\", function () {\r\n context.collapseClick(element);\r\n context.render();\r\n });\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n const context = this;\r\n const this_id = \"\";\r\n this.titleSpan.text(context.title().length > 0 ? context.title() + this_id : \"Accordion [\" + context._id + \"]\" + this_id);\r\n const rows = this.ul.selectAll(\"#\" + context._id + \" > ul > li\").data(this.content(), function (d) {\r\n return d._id;\r\n });\r\n rows.enter()\r\n .append(function (widget) {\r\n const li = document.createElement(\"li\");\r\n if (widget._target === null) {\r\n const wSize = widget.size();\r\n if (wSize.width === 0 || wSize.height === 0) {\r\n const cSize = context.size();\r\n widget.size({\r\n width: cSize.width,\r\n height: cSize.width\r\n });\r\n }\r\n widget.target(li);\r\n } else {\r\n return widget._target;\r\n }\r\n return li;\r\n })\r\n ;\r\n rows.exit().remove();\r\n\r\n this.icon\r\n .text_colorFill(this.titleFontColor())\r\n .char(this._isClosed ? this.closedIcon() : this.openIcon()).render()\r\n ;\r\n }\r\n\r\n exit(domNode, element) {\r\n super.exit(domNode, element);\r\n }\r\n\r\n content: { (): any[]; (_: any[]): Accordion; };\r\n title: { (): string; (_: string): Accordion; };\r\n openIcon: { (): string; (_: string): Accordion; };\r\n closedIcon: { (): string; (_: string): Accordion; };\r\n titleFontColor: { (): string; (_: string): Accordion; };\r\n titleBackgroundColor: { (): any; (_: any): Accordion; };\r\n defaultCollapsed: { (): boolean; (_: boolean): Accordion; };\r\n}\r\nAccordion.prototype._class += \" layout_Accordion\";\r\n\r\nAccordion.prototype.publish(\"content\", [], \"widgetArray\", \"Array of widgets\", null, { tags: [\"Basic\"] });\r\nAccordion.prototype.publish(\"title\", \"\", \"string\", \"Title of collapsible section\", null, { tags: [\"Private\"] });\r\nAccordion.prototype.publish(\"openIcon\", \"\\uf147\", \"string\", \"Icon to display when list is open\", null, { tags: [\"Private\"] });\r\nAccordion.prototype.publish(\"closedIcon\", \"\\uf196\", \"string\", \"Icon to display when list is closed\", null, { tags: [\"Private\"] });\r\nAccordion.prototype.publish(\"titleFontColor\", \"#FFFFFF\", \"html-color\", \"Title font color\", null, { tags: [\"Private\"] });\r\nAccordion.prototype.publish(\"titleBackgroundColor\", \"#333333\", \"html-color\", \"Title background color\", null, { tags: [\"Private\"] });\r\n\r\nAccordion.prototype.publish(\"defaultCollapsed\", false, \"boolean\", \"Collapsed by default if true\", null, { tags: [\"Private\"] });\r\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\r\nimport { select as d3Select } from \"d3-selection\";\r\n\r\nimport \"../src/Surface.css\";\r\n\r\nexport class Surface extends HTMLWidget {\r\n _surfaceButtons;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n this._surfaceButtons = [];\r\n }\r\n\r\n widgetSize(titleDiv, widgetDiv) {\r\n let width = this.clientWidth();\r\n let height = this.clientHeight();\r\n if (this.title()) {\r\n height -= this.calcHeight(titleDiv);\r\n }\r\n height -= this.calcFrameHeight(widgetDiv);\r\n width -= this.calcFrameWidth(widgetDiv);\r\n return { width, height };\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n }\r\n\r\n update(domNode, element2) {\r\n super.update(domNode, element2);\r\n const context = this;\r\n\r\n element2\r\n .classed(\"shadow2\", this.surfaceShadow())\r\n .style(\"border-width\", this.surfaceBorderWidth_exists() ? this.surfaceBorderWidth() + \"px\" : null)\r\n .style(\"border-color\", this.surfaceBorderColor())\r\n .style(\"border-radius\", this.surfaceBorderRadius_exists() ? this.surfaceBorderRadius() + \"px\" : null)\r\n .style(\"background-color\", this.surfaceBackgroundColor())\r\n ;\r\n\r\n const titles = element2.selectAll(\".surfaceTitle\").data(this.title() ? [this.title()] : []);\r\n titles.enter().insert(\"h3\", \"div\")\r\n .attr(\"class\", \"surfaceTitle\")\r\n .merge(titles)\r\n .text(function (d) { return d; })\r\n .style(\"text-align\", this.surfaceTitleAlignment())\r\n .style(\"color\", this.surfaceTitleFontColor())\r\n .style(\"font-size\", this.surfaceTitleFontSize_exists() ? this.surfaceTitleFontSize() + \"px\" : null)\r\n .style(\"font-family\", this.surfaceTitleFontFamily())\r\n .style(\"font-weight\", this.surfaceTitleFontBold() ? \"bold\" : \"normal\")\r\n .style(\"background-color\", this.surfaceTitleBackgroundColor())\r\n .style(\"padding\", this.surfaceTitlePadding_exists() ? this.surfaceTitlePadding() + \"px\" : null)\r\n .style(\"title\", this.altText_exists() ? this.altText() : null)\r\n ;\r\n titles.exit().remove();\r\n\r\n const surfaceTitle = element2.select(\".surfaceTitle\");\r\n\r\n const surfaceButtons = surfaceTitle.append(\"div\").attr(\"class\", \"html-button-container\").selectAll(\".surface-button\").data(this.buttonAnnotations());\r\n surfaceButtons.enter().append(\"button\").classed(\"surface-button\", true)\r\n .each(function (button, idx) {\r\n const el = context._surfaceButtons[idx] = d3Select(this)\r\n .attr(\"class\", \"surface-button\" + (button.class ? \" \" + button.class : \"\"))\r\n .attr(\"id\", button.id)\r\n .style(\"padding\", button.padding)\r\n .style(\"width\", button.width)\r\n .style(\"height\", button.height)\r\n .style(\"cursor\", \"pointer\");\r\n if (button.font === \"FontAwesome\") {\r\n el\r\n .style(\"background\", \"transparent\")\r\n .style(\"border\", \"none\")\r\n .on(\"click\", function (d) { context.click(d); })\r\n .append(\"i\")\r\n .attr(\"class\", \"fa\")\r\n .text(function () { return button.label; });\r\n } else {\r\n el\r\n .text(function () { return button.label; })\r\n .on(\"click\", function (d) { context.click(d); });\r\n }\r\n })\r\n ;\r\n surfaceButtons.exit()\r\n .each(function (_d, idx) {\r\n const element = d3Select(this);\r\n delete context._surfaceButtons[idx];\r\n element.remove();\r\n })\r\n ;\r\n const widgets = element2.selectAll(\"#\" + this._id + \" > .surfaceWidget\").data(this.widget() ? [this.widget()] : [], function (d) { return d._id; });\r\n\r\n widgets.enter().append(\"div\")\r\n .attr(\"class\", \"surfaceWidget\")\r\n .each(function (d) {\r\n d3Select(context.element().node().parentElement).classed(\"content-icon content-icon-\" + (d.classID().split(\"_\")[1]), true);\r\n d.target(this);\r\n })\r\n .merge(widgets)\r\n .style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null)\r\n .each(function (d) {\r\n const widgetSize = context.widgetSize(element2.select(\"h3\"), d3Select(this));\r\n if (widgetSize.width < 0) widgetSize.width = 0;\r\n if (widgetSize.height < 0) widgetSize.height = 0;\r\n d\r\n .resize({ width: widgetSize.width, height: widgetSize.height })\r\n ;\r\n })\r\n ;\r\n widgets.exit().each(function (d) {\r\n d.target(null);\r\n }).remove();\r\n }\r\n\r\n exit(domNode, element) {\r\n if (this.widget()) {\r\n this.widget().target(null);\r\n }\r\n super.exit(domNode, element);\r\n }\r\n\r\n title: { (): string; (_: string): Surface; };\r\n altText: { (): string; (_: string): Surface; };\r\n altText_exists: () => boolean;\r\n surfaceTitlePadding: { (): number; (_: number): Surface; };\r\n surfaceTitlePadding_exists: () => boolean;\r\n surfaceTitleFontSize: { (): number; (_: number): Surface; };\r\n surfaceTitleFontSize_exists: () => boolean;\r\n surfaceTitleFontColor: { (): string; (_: string): Surface; };\r\n surfaceTitleFontFamily: { (): string; (_: string): Surface; };\r\n surfaceTitleFontBold: { (): boolean; (_: boolean): Surface; };\r\n surfaceTitleBackgroundColor: { (): string; (_: string): Surface; };\r\n surfaceTitleAlignment: { (): string; (_: string): Surface; };\r\n\r\n surfaceShadow: { (): boolean; (_: boolean): Surface; };\r\n surfacePadding: { (): string; (_: string): Surface; };\r\n surfacePadding_exists: () => boolean;\r\n surfaceBackgroundColor: { (): string; (_: string): Surface; };\r\n surfaceBorderWidth: { (): number; (_: number): Surface; };\r\n surfaceBorderWidth_exists: () => boolean;\r\n surfaceBorderColor: { (): string; (_: string): Surface; };\r\n surfaceBorderRadius: { (): number; (_: number): Surface; };\r\n surfaceBorderRadius_exists: () => boolean;\r\n\r\n buttonAnnotations: { (): any[]; (_: any[]): Surface; };\r\n\r\n widget: { (): Widget; (_: Widget): Surface; };\r\n\r\n // Events ---\r\n click(obj) {\r\n }\r\n}\r\nSurface.prototype._class += \" layout_Surface\";\r\n\r\nSurface.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\r\nSurface.prototype.publish(\"altText\", null, \"string\", \"Alt text\", null, { optional: true });\r\nSurface.prototype.publish(\"surfaceTitlePadding\", null, \"number\", \"Title Padding (px)\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\r\nSurface.prototype.publish(\"surfaceTitleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\r\nSurface.prototype.publish(\"surfaceTitleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\r\nSurface.prototype.publish(\"surfaceTitleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\r\nSurface.prototype.publish(\"surfaceTitleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\r\nSurface.prototype.publish(\"surfaceTitleBackgroundColor\", null, \"html-color\", \"Title Background Color\", null, { tags: [\"Advanced\"], disable: (w: any) => !w.title() });\r\nSurface.prototype.publish(\"surfaceTitleAlignment\", \"center\", \"set\", \"Title Alignment\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], disable: (w: any) => !w.title() });\r\n\r\nSurface.prototype.publish(\"surfaceShadow\", false, \"boolean\", \"3D Shadow\");\r\nSurface.prototype.publish(\"surfacePadding\", null, \"string\", \"Surface Padding (px)\", null, { tags: [\"Intermediate\"] });\r\nSurface.prototype.publish(\"surfaceBackgroundColor\", null, \"html-color\", \"Surface Background Color\", null, { tags: [\"Advanced\"] });\r\nSurface.prototype.publish(\"surfaceBorderWidth\", null, \"number\", \"Surface Border Width (px)\", null, { tags: [\"Advanced\"] });\r\nSurface.prototype.publish(\"surfaceBorderColor\", null, \"html-color\", \"Surface Border Color\", null, { tags: [\"Advanced\"] });\r\nSurface.prototype.publish(\"surfaceBorderRadius\", null, \"number\", \"Surface Border Radius (px)\", null, { tags: [\"Advanced\"] });\r\n\r\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Private\"] });\r\n\r\nSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"] });\r\n","import { Widget } from \"@hpcc-js/common\";\r\nimport { select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\r\nimport { Surface } from \"./Surface\";\r\n\r\nimport \"../src/Cell.css\";\r\n\r\nexport class Cell extends Surface {\r\n _indicateTheseIds;\r\n\r\n constructor() {\r\n super();\r\n this._indicateTheseIds = [];\r\n }\r\n\r\n indicateTheseIds(): any[];\r\n indicateTheseIds(_: any[]): Cell;\r\n indicateTheseIds(_?: any[]): any[] | Cell {\r\n if (!arguments.length) return this._indicateTheseIds;\r\n this._indicateTheseIds = _;\r\n return this;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n const context = this;\r\n element\r\n .classed(\"layout_Surface\", true)\r\n .on(\"mouseenter\", function () { context.onMouseEnter(); })\r\n .on(\"mouseleave\", function () { context.onMouseLeave(); })\r\n ;\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n }\r\n\r\n onMouseEnter() {\r\n const arr = this.indicateTheseIds();\r\n const opacity = this.indicatorOpacity();\r\n const indicatorBorderColor = this.indicatorBorderColor();\r\n const indicatorGlowColor = this.indicatorGlowColor();\r\n for (let i = 0; i < arr.length; i++) {\r\n const otherElement = d3Select(\"#\" + arr[i]);\r\n const otherWidget: Widget = otherElement.datum() as Widget;\r\n if (otherElement && otherWidget) {\r\n otherElement.append(\"div\")\r\n .attr(\"class\", \"update-indicator\")\r\n .style(\"width\", otherWidget.width() + \"px\")\r\n .style(\"height\", otherWidget.height() + \"px\")\r\n .style(\"opacity\", opacity)\r\n .style(\"border-color\", indicatorBorderColor)\r\n .style(\"-webkit-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\r\n .style(\"-moz-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\r\n .style(\"box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor)\r\n ;\r\n }\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n const arr = this.indicateTheseIds();\r\n for (let i = 0; i < arr.length; i++) {\r\n d3SelectAll(\"#\" + arr[i] + \" > div.update-indicator\").remove();\r\n }\r\n }\r\n\r\n title: { (): string; (_: string): Cell; };\r\n widget: { (): Widget; (_: Widget): Cell; };\r\n\r\n gridRow: { (): number; (_: number): Cell; };\r\n gridCol: { (): number; (_: number): Cell; };\r\n gridRowSpan: { (): number; (_: number): Cell; };\r\n gridColSpan: { (): number; (_: number): Cell; };\r\n\r\n indicatorGlowColor: { (): string; (_: string): Cell; };\r\n indicatorBorderColor: { (): string; (_: string): Cell; };\r\n indicatorOpacity: { (): number; (_: number): Cell; };\r\n\r\n}\r\nCell.prototype._class += \" layout_Cell\";\r\n\r\nCell.prototype.publish(\"gridRow\", 0, \"number\", \"Grid Row Position\", null, { tags: [\"Private\"] });\r\nCell.prototype.publish(\"gridCol\", 0, \"number\", \"Grid Column Position\", null, { tags: [\"Private\"] });\r\nCell.prototype.publish(\"gridRowSpan\", 1, \"number\", \"Grid Row Span\", null, { tags: [\"Private\"] });\r\nCell.prototype.publish(\"gridColSpan\", 1, \"number\", \"Grid Column Span\", null, { tags: [\"Private\"] });\r\n\r\nCell.prototype.publish(\"indicatorGlowColor\", \"#EEEE11\", \"html-color\", \"Glow color of update-indicator\", null, { tags: [\"Basic\"] });\r\nCell.prototype.publish(\"indicatorBorderColor\", \"#F48A00\", \"html-color\", \"Border color of update-indicator\", null, { tags: [\"Basic\"] });\r\nCell.prototype.publish(\"indicatorOpacity\", 0.8, \"number\", \"Opacity of update-indicator\", null, { tags: [\"Basic\"] });\r\n","import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility } from \"@hpcc-js/common\";\r\nimport { drag as d3Drag } from \"d3-drag\";\r\nimport { Cell } from \"./Cell\";\r\n\r\nimport \"../src/Border.css\";\r\n\r\nexport class Border extends HTMLWidget {\r\n _colCount: number;\r\n _rowCount: number;\r\n _colSize: number;\r\n _rowSize: number;\r\n _shrinkWrapBoxes;\r\n _watch;\r\n _offsetX;\r\n _offsetY;\r\n _dragCell;\r\n _dragCellSize;\r\n _dragCellStartSize;\r\n _handleTop;\r\n _handleLeft;\r\n _dragPrevX;\r\n _dragPrevY;\r\n _cellSizes;\r\n contentDiv;\r\n _scrollBarWidth;\r\n _borderHandles;\r\n _sectionTypeArr;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n\r\n this._colCount = 0;\r\n this._rowCount = 0;\r\n this._colSize = 0;\r\n this._rowSize = 0;\r\n\r\n this._shrinkWrapBoxes = {};\r\n\r\n this.content([]);\r\n this.sectionTypes([]);\r\n }\r\n\r\n watchWidget(widget) {\r\n if (this._watch === undefined) {\r\n this._watch = {};\r\n }\r\n if (this._watch[widget.id()]) {\r\n this._watch[widget.id()].remove();\r\n delete this._watch[widget.id()];\r\n }\r\n if (widget) {\r\n const context = this;\r\n this._watch[widget.id()] = widget.monitor(function (paramId, newVal, oldVal) {\r\n if (oldVal !== newVal) {\r\n context.lazyPostUpdate();\r\n }\r\n });\r\n }\r\n }\r\n\r\n lazyPostUpdate = Utility.debounce(function () {\r\n this.postUpdate();\r\n }, 100);\r\n\r\n applyLayoutType() {\r\n const layoutObj = this.borderLayoutObject();\r\n this.content().forEach(function (cell, i) {\r\n cell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\r\n cell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\r\n cell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\r\n cell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\r\n cell._dragHandles = this.cellSpecificDragHandles(this.sectionTypes()[i]);\r\n }, this);\r\n }\r\n cellSpecificDragHandles(sectionType) {\r\n switch (sectionType) {\r\n case \"top\": return [\"s\"];\r\n case \"right\": return [\"w\"];\r\n case \"bottom\": return [\"n\"];\r\n case \"left\": return [\"e\"];\r\n case \"center\": return [];\r\n }\r\n }\r\n\r\n borderLayoutObject(layoutType?) {\r\n const retObj = {};\r\n const context = this;\r\n let topSize;\r\n let topPerc;\r\n let bottomSize;\r\n let bottomPerc;\r\n let leftSize;\r\n let leftPerc;\r\n let rightSize;\r\n let rightPerc;\r\n\r\n const bcRect = this.target().getBoundingClientRect();\r\n const gridRect: any = {};\r\n gridRect.top = bcRect.top;\r\n gridRect.left = bcRect.left;\r\n gridRect.bottom = bcRect.bottom;\r\n gridRect.right = bcRect.right;\r\n if (this.target() instanceof SVGElement) {\r\n gridRect.width = parseFloat(this.target().getAttribute(\"width\"));\r\n gridRect.height = parseFloat(this.target().getAttribute(\"height\"));\r\n } else {\r\n gridRect.width = bcRect.width;\r\n gridRect.height = bcRect.height;\r\n }\r\n if (this.sectionTypes().indexOf(\"top\") !== -1) {\r\n topSize = this.topSize();\r\n topPerc = this.topPercentage();\r\n if (typeof (this._shrinkWrapBoxes[\"top\"]) !== \"undefined\") {\r\n topSize = this._shrinkWrapBoxes[\"top\"].height + this.gutter();\r\n topPerc = 0;\r\n }\r\n }\r\n if (this.sectionTypes().indexOf(\"bottom\") !== -1) {\r\n bottomSize = this.bottomSize();\r\n bottomPerc = this.bottomPercentage();\r\n if (typeof (this._shrinkWrapBoxes[\"bottom\"]) !== \"undefined\") {\r\n bottomSize = this._shrinkWrapBoxes[\"bottom\"].height + this.gutter();\r\n bottomPerc = 0;\r\n }\r\n }\r\n if (this.sectionTypes().indexOf(\"left\") !== -1) {\r\n leftSize = this.leftSize();\r\n leftPerc = this.leftPercentage();\r\n if (typeof (this._shrinkWrapBoxes[\"left\"]) !== \"undefined\") {\r\n leftSize = this._shrinkWrapBoxes[\"left\"].width + this.gutter();\r\n leftPerc = 0;\r\n }\r\n }\r\n if (this.sectionTypes().indexOf(\"right\") !== -1) {\r\n rightSize = this.rightSize();\r\n rightPerc = this.rightPercentage();\r\n if (typeof (this._shrinkWrapBoxes[\"right\"]) !== \"undefined\") {\r\n rightSize = this._shrinkWrapBoxes[\"right\"].width + this.gutter();\r\n rightPerc = 0;\r\n }\r\n }\r\n\r\n const t = _sectionPlacementObject({\r\n width: { \"px\": 0, \"%\": 100 },\r\n height: { \"px\": topSize, \"%\": topPerc },\r\n top: { \"px\": 0, \"%\": 0 },\r\n left: { \"px\": 0, \"%\": 0 }\r\n });\r\n const b = _sectionPlacementObject({\r\n width: { \"px\": 0, \"%\": 100 },\r\n height: { \"px\": bottomSize, \"%\": bottomPerc },\r\n top: { \"px\": 0, \"%\": 100 },\r\n left: { \"px\": 0, \"%\": 0 }\r\n });\r\n b.top -= b.height;\r\n const l = _sectionPlacementObject({\r\n width: { \"px\": leftSize, \"%\": leftPerc },\r\n height: { \"px\": -t.height - b.height, \"%\": 100 },\r\n top: { \"px\": t.height, \"%\": 0 },\r\n left: { \"px\": 0, \"%\": 0 }\r\n });\r\n const r = _sectionPlacementObject({\r\n width: { \"px\": rightSize, \"%\": rightPerc },\r\n height: { \"px\": -t.height - b.height, \"%\": 100 },\r\n top: { \"px\": t.height, \"%\": 0 },\r\n left: { \"px\": 0, \"%\": 100 }\r\n });\r\n r.left -= r.width;\r\n const c = _sectionPlacementObject({\r\n width: { \"px\": -r.width - l.width, \"%\": 100 },\r\n height: { \"px\": -t.height - b.height, \"%\": 100 },\r\n top: { \"px\": t.height, \"%\": 0 },\r\n left: { \"px\": l.width, \"%\": 0 }\r\n });\r\n retObj[\"top\"] = t;\r\n retObj[\"bottom\"] = b;\r\n retObj[\"right\"] = r;\r\n retObj[\"left\"] = l;\r\n retObj[\"center\"] = c;\r\n return retObj;\r\n\r\n function _sectionPlacementObject(obj) {\r\n obj.width[\"px\"] = typeof (obj.width[\"px\"]) !== \"undefined\" ? obj.width[\"px\"] : 0;\r\n obj.width[\"%\"] = typeof (obj.width[\"%\"]) !== \"undefined\" ? obj.width[\"%\"] : 0;\r\n obj.height[\"px\"] = typeof (obj.height[\"px\"]) !== \"undefined\" ? obj.height[\"px\"] : 0;\r\n obj.height[\"%\"] = typeof (obj.height[\"%\"]) !== \"undefined\" ? obj.height[\"%\"] : 0;\r\n const ret = {\r\n width: obj.width[\"px\"] + (obj.width[\"%\"] / 100 * context.width()),\r\n height: obj.height[\"px\"] + (obj.height[\"%\"] / 100 * context.height()),\r\n top: obj.top[\"px\"] + (obj.top[\"%\"] / 100 * context.height()) + context.gutter() / 2,\r\n left: obj.left[\"px\"] + (obj.left[\"%\"] / 100 * context.width()) + context.gutter() / 2\r\n };\r\n return ret;\r\n }\r\n }\r\n\r\n clearContent(sectionType) {\r\n if (!sectionType) {\r\n this.content().forEach(function (contentWidget) {\r\n contentWidget.target(null);\r\n return false;\r\n });\r\n d3Select(\"#\" + this.id() + \" > div.borderHandle\")\r\n .classed(\"borderHandleDisabled\", true)\r\n ;\r\n delete this._watch;\r\n this.content([]);\r\n this.sectionTypes([]);\r\n } else {\r\n const idx = this.sectionTypes().indexOf(sectionType);\r\n if (idx >= 0) {\r\n if (this._watch && this.content()[idx]) {\r\n delete this._watch[this.content()[idx].id()];\r\n }\r\n this.content()[idx].target(null);\r\n d3Select(\"#\" + this.id() + \" > div.borderHandle_\" + sectionType)\r\n .classed(\"borderHandleDisabled\", true)\r\n ;\r\n this.content().splice(idx, 1);\r\n this.sectionTypes().splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n hasContent(sectionType, widget, title) {\r\n return this.sectionTypes().indexOf(sectionType) >= 0;\r\n }\r\n\r\n setContent(sectionType, widget, title?) {\r\n this.clearContent(sectionType);\r\n title = typeof (title) !== \"undefined\" ? title : \"\";\r\n if (widget) {\r\n const cell = new Cell()\r\n .surfaceBorderWidth(0)\r\n .widget(widget)\r\n .title(title)\r\n ;\r\n this.watchWidget(widget);\r\n this.content().push(cell);\r\n this.sectionTypes().push(sectionType);\r\n }\r\n return this;\r\n }\r\n\r\n getCell(id) {\r\n const idx = this.sectionTypes().indexOf(id);\r\n if (idx >= 0) {\r\n return this.content()[idx];\r\n }\r\n return null;\r\n }\r\n\r\n getContent(id) {\r\n const idx = this.sectionTypes().indexOf(id);\r\n if (idx >= 0) {\r\n return this.content()[idx].widget();\r\n }\r\n return null;\r\n }\r\n\r\n setLayoutOffsets() {\r\n this._offsetX = this._element.node().getBoundingClientRect().left + (this.gutter() / 2);\r\n this._offsetY = this._element.node().getBoundingClientRect().top + (this.gutter() / 2);\r\n }\r\n\r\n dragStart(handle) {\r\n const event = d3Event();\r\n event.sourceEvent.stopPropagation();\r\n const context = this;\r\n\r\n this._dragCell = handle;\r\n this._dragCellStartSize = this[handle + \"Size\"]();\r\n\r\n if (this[handle + \"ShrinkWrap\"]()) {\r\n this[handle + \"Percentage\"](0);\r\n this[handle + \"ShrinkWrap\"](false);\r\n }\r\n\r\n const handleElm = d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + handle);\r\n context._handleTop = parseFloat(handleElm.style(\"top\").split(\"px\")[0]);\r\n context._handleLeft = parseFloat(handleElm.style(\"left\").split(\"px\")[0]);\r\n\r\n this._dragPrevX = event.sourceEvent.clientX;\r\n this._dragPrevY = event.sourceEvent.clientY;\r\n }\r\n dragTick(handle) {\r\n const context = this;\r\n\r\n const event = d3Event();\r\n const xDelta = this._dragPrevX - event.sourceEvent.clientX;\r\n const yDelta = this._dragPrevY - event.sourceEvent.clientY;\r\n\r\n switch (handle) {\r\n case \"top\":\r\n case \"bottom\":\r\n _moveHandles(handle, yDelta);\r\n break;\r\n case \"right\":\r\n case \"left\":\r\n _moveHandles(handle, xDelta);\r\n break;\r\n }\r\n\r\n function _moveHandles(handle2, delta) {\r\n if (delta === 0) return;\r\n const handles = d3SelectAll(\"#\" + context.id() + \" > div.borderHandle\");\r\n const grabbedHandle = d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + handle2);\r\n\r\n if (grabbedHandle.classed(\"borderHandle_top\")) {\r\n grabbedHandle.style(\"top\", (context._handleTop - delta) + \"px\");\r\n context._cellSizes.topHeight = context._handleTop - delta;\r\n context._cellSizes.leftHeight = context._cellSizes.height;\r\n context._cellSizes.leftHeight -= context._cellSizes.topHeight;\r\n context._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\r\n context._cellSizes.rightHeight = context._cellSizes.leftHeight;\r\n } else if (grabbedHandle.classed(\"borderHandle_right\")) {\r\n grabbedHandle.style(\"left\", (context._handleLeft - delta) + \"px\");\r\n context._cellSizes.rightWidth = context._cellSizes.width - context._handleLeft + delta;\r\n } else if (grabbedHandle.classed(\"borderHandle_bottom\")) {\r\n grabbedHandle.style(\"top\", (context._handleTop - delta) + \"px\");\r\n context._cellSizes.bottomHeight = context._cellSizes.height - context._handleTop + delta;\r\n context._cellSizes.leftHeight = context._cellSizes.height;\r\n context._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\r\n context._cellSizes.leftHeight -= context._cellSizes.topHeight;\r\n context._cellSizes.rightHeight = context._cellSizes.leftHeight;\r\n } else if (grabbedHandle.classed(\"borderHandle_left\")) {\r\n grabbedHandle.style(\"left\", (context._handleLeft - delta) + \"px\");\r\n context._cellSizes.leftWidth = context._handleLeft - delta;\r\n }\r\n\r\n handles.each(function () {\r\n const handle3 = d3Select(this);\r\n if (handle3.classed(\"borderHandle_top\")) {\r\n handle3.style(\"width\", context._cellSizes.width + \"px\");\r\n handle3.style(\"top\", (context._cellSizes.topHeight - 3) + \"px\");\r\n } else if (handle3.classed(\"borderHandle_right\")) {\r\n handle3.style(\"left\", (context._cellSizes.width - context._cellSizes.rightWidth) + \"px\");\r\n handle3.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\r\n handle3.style(\"height\", context._cellSizes.rightHeight + \"px\");\r\n } else if (handle3.classed(\"borderHandle_bottom\")) {\r\n handle3.style(\"width\", context._cellSizes.width + \"px\");\r\n handle3.style(\"top\", (context._cellSizes.height - context._cellSizes.bottomHeight - 3) + \"px\");\r\n } else if (handle3.classed(\"borderHandle_left\")) {\r\n handle3.style(\"left\", context._cellSizes.leftWidth + \"px\");\r\n handle3.style(\"height\", context._cellSizes.leftHeight + \"px\");\r\n handle3.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\r\n }\r\n });\r\n }\r\n }\r\n dragEnd(handle) {\r\n if (handle) {\r\n const event = d3Event();\r\n const xDelta = this._dragPrevX - event.sourceEvent.clientX;\r\n const yDelta = this._dragPrevY - event.sourceEvent.clientY;\r\n\r\n switch (handle) {\r\n case \"top\":\r\n if (yDelta !== 0) {\r\n this.topPercentage(0);\r\n this.topSize(this.topSize() === 0 ? this.getContent(\"top\").getBBox().height - yDelta : this.topSize() - yDelta);\r\n }\r\n break;\r\n case \"right\":\r\n if (xDelta !== 0) {\r\n this.rightPercentage(0);\r\n this.rightSize(this.rightSize() === 0 ? this.getContent(\"right\").getBBox().width + xDelta : this.rightSize() + xDelta);\r\n }\r\n break;\r\n case \"bottom\":\r\n if (yDelta !== 0) {\r\n this.bottomPercentage(0);\r\n this.bottomSize(this.bottomSize() === 0 ? this.getContent(\"bottom\").getBBox().height + yDelta : this.bottomSize() + yDelta);\r\n }\r\n break;\r\n case \"left\":\r\n if (xDelta !== 0) {\r\n this.leftPercentage(0);\r\n this.leftSize(this.leftSize() === 0 ? this.getContent(\"left\").getBBox().width - xDelta : this.leftSize() - xDelta);\r\n }\r\n break;\r\n }\r\n\r\n this._dragPrevX = event.sourceEvent.clientX;\r\n this._dragPrevY = event.sourceEvent.clientY;\r\n }\r\n this.render();\r\n }\r\n\r\n size(_?) {\r\n const retVal = HTMLWidget.prototype.size.apply(this, arguments);\r\n if (arguments.length && this.contentDiv) {\r\n this.contentDiv\r\n .style(\"width\", this._size.width + \"px\")\r\n .style(\"height\", this._size.height + \"px\")\r\n ;\r\n }\r\n return retVal;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n const context = this;\r\n element.style(\"position\", \"relative\");\r\n this.contentDiv = element.append(\"div\").classed(\"border-content\", true);\r\n this._scrollBarWidth = Platform.getScrollbarWidth();\r\n this._borderHandles = [\"top\", \"left\", \"right\", \"bottom\"];\r\n\r\n const handles = element.selectAll(\"div.borderHandle\").data(this._borderHandles);\r\n handles.enter().append(\"div\")\r\n .classed(\"borderHandle\", true)\r\n .each(function (handle) {\r\n const h = d3Select(this);\r\n h.classed(\"borderHandle_\" + handle, true)\r\n .classed(\"borderHandleDisabled\", context.getContent(handle) === null)\r\n ;\r\n });\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n this._sectionTypeArr = this.sectionTypes();\r\n const context = this;\r\n\r\n element.classed(\"design-mode\", this.designMode());\r\n\r\n this.setLayoutOffsets();\r\n\r\n const rows = this.contentDiv.selectAll(\".cell_\" + this._id).data(this.content(), function (d) { return d._id; });\r\n const rowsUpdate = rows.enter().append(\"div\")\r\n .classed(\"cell_\" + this._id, true)\r\n .style(\"position\", \"absolute\")\r\n .each(function (d, i) {\r\n d3Select(this).classed(\"border-cell border-cell-\" + context._sectionTypeArr[i], true);\r\n d.target(this);\r\n d3Select(\"#\" + context.id() + \" > div.borderHandle_\" + context._sectionTypeArr[i])\r\n .classed(\"borderHandleDisabled\", false);\r\n }).merge(rows);\r\n rowsUpdate\r\n .each(function (d, idx) {\r\n const sectionType = context.sectionTypes()[idx];\r\n if (typeof (context[sectionType + \"ShrinkWrap\"]) !== \"undefined\" && context[sectionType + \"ShrinkWrap\"]()) {\r\n d.render();\r\n context._shrinkWrapBoxes[sectionType] = d.widget().getBBox(true);\r\n } else {\r\n delete context._shrinkWrapBoxes[sectionType];\r\n }\r\n });\r\n\r\n const drag = d3Drag()\r\n .on(\"start\", function (d, i) { context.dragStart.call(context, d, i); })\r\n .on(\"drag\", function (d, i) { context.dragTick.call(context, d, i); })\r\n .on(\"end\", function (d, i) { context.dragEnd.call(context, d, i); })\r\n ;\r\n if (this.designMode()) {\r\n element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").call(drag);\r\n } else {\r\n element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").on(\".drag\", null);\r\n }\r\n\r\n const layoutObj = this.borderLayoutObject();\r\n this.content().forEach(function (cell, i) {\r\n cell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\r\n cell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\r\n cell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\r\n cell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\r\n cell._dragHandles = [];\r\n }, this);\r\n\r\n rowsUpdate\r\n .style(\"left\", function (d) { return d._fixedLeft + \"px\"; })\r\n .style(\"top\", function (d) { return d._fixedTop + \"px\"; })\r\n .style(\"width\", function (d) { return d._fixedWidth - context.gutter() + \"px\"; })\r\n .style(\"height\", function (d) { return d._fixedHeight - context.gutter() + \"px\"; })\r\n .each(function (d) {\r\n d._placeholderElement\r\n .attr(\"draggable\", context.designMode())\r\n .selectAll(\".dragHandle\")\r\n .attr(\"draggable\", context.designMode())\r\n ;\r\n d\r\n .surfacePadding(context.surfacePadding())\r\n .resize()\r\n ;\r\n });\r\n rows.exit().each(function (d) {\r\n d.target(null);\r\n }).remove();\r\n\r\n this.getCellSizes();\r\n\r\n element\r\n .selectAll(\"#\" + this.id() + \" > div.borderHandle\")\r\n .each(function () {\r\n const handle = d3Select(this);\r\n if (handle.classed(\"borderHandle_top\")) {\r\n handle.style(\"width\", context._cellSizes.width + \"px\");\r\n handle.style(\"top\", (context._cellSizes.topHeight - 3) + \"px\");\r\n } else if (handle.classed(\"borderHandle_right\")) {\r\n handle.style(\"left\", (context._cellSizes.width - context._cellSizes.rightWidth) + \"px\");\r\n handle.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\r\n handle.style(\"height\", context._cellSizes.rightHeight + \"px\");\r\n } else if (handle.classed(\"borderHandle_bottom\")) {\r\n handle.style(\"width\", context._cellSizes.width + \"px\");\r\n handle.style(\"top\", (context._cellSizes.height - context._cellSizes.bottomHeight - 3) + \"px\");\r\n } else if (handle.classed(\"borderHandle_left\")) {\r\n handle.style(\"left\", context._cellSizes.leftWidth + \"px\");\r\n handle.style(\"height\", context._cellSizes.leftHeight + \"px\");\r\n handle.style(\"top\", (context._cellSizes.topHeight + 3) + \"px\");\r\n }\r\n\r\n })\r\n ;\r\n }\r\n\r\n getCellSizes() {\r\n const context = this;\r\n context._cellSizes = {};\r\n const contentRect = this.element().node().getBoundingClientRect();\r\n context._cellSizes.width = contentRect.width;\r\n context._cellSizes.height = contentRect.height;\r\n this.element()\r\n .selectAll(\"#\" + this.id() + \" > div > div.border-cell\")\r\n .each(function () {\r\n const cell = d3Select(this);\r\n if (typeof cell.node === \"function\") {\r\n const rect = cell.node().getBoundingClientRect();\r\n if (cell.classed(\"border-cell-top\")) {\r\n context._cellSizes.topHeight = rect.height;\r\n } else if (cell.classed(\"border-cell-left\")) {\r\n context._cellSizes.leftWidth = rect.width;\r\n context._cellSizes.leftHeight = rect.height;\r\n } else if (cell.classed(\"border-cell-right\")) {\r\n context._cellSizes.rightWidth = rect.width;\r\n context._cellSizes.rightHeight = rect.height;\r\n } else if (cell.classed(\"border-cell-bottom\")) {\r\n context._cellSizes.bottomHeight = rect.height;\r\n }\r\n }\r\n });\r\n const sizes = [\"height\", \"width\", \"topHeight\", \"bottomHeight\", \"leftHeight\", \"rightHeight\", \"leftWidth\", \"rightWidth\"];\r\n sizes.forEach(function (size) {\r\n context._cellSizes[size] = context._cellSizes[size] === undefined ? 0 : context._cellSizes[size];\r\n });\r\n }\r\n\r\n postUpdate(domNode, element) {\r\n const context = this;\r\n this.content().forEach(function (n) {\r\n if (n._element.node() !== null && n.widget()) {\r\n const prevBox = n.widget().getBBox(false, true);\r\n const currBox = n.widget().getBBox(true, true);\r\n if (prevBox.width !== currBox.width || prevBox.height !== currBox.height) {\r\n context.lazyRender();\r\n }\r\n }\r\n });\r\n }\r\n\r\n exit(domNode, element) {\r\n this.content().forEach(w => w.target(null));\r\n super.exit(domNode, element);\r\n }\r\n\r\n designMode: { (): boolean; (_: boolean): Border; };\r\n\r\n content: { (): any[]; (_: any[]): Border; };\r\n\r\n gutter: { (): number; (_: number): Border; };\r\n\r\n topShrinkWrap: { (): boolean; (_: boolean): Border; };\r\n leftShrinkWrap: { (): boolean; (_: boolean): Border; };\r\n rightShrinkWrap: { (): boolean; (_: boolean): Border; };\r\n bottomShrinkWrap: { (): boolean; (_: boolean): Border; };\r\n\r\n topSize: { (): number; (_: number): Border; };\r\n leftSize: { (): number; (_: number): Border; };\r\n rightSize: { (): number; (_: number): Border; };\r\n bottomSize: { (): number; (_: number): Border; };\r\n\r\n topPercentage: { (): number; (_: number): Border; };\r\n leftPercentage: { (): number; (_: number): Border; };\r\n rightPercentage: { (): number; (_: number): Border; };\r\n bottomPercentage: { (): number; (_: number): Border; };\r\n\r\n surfacePadding: { (): number; (_: number): Border; };\r\n\r\n sectionTypes: { (): any[]; (_: any[]): Border; };\r\n}\r\nBorder.prototype._class += \" layout_Border\";\r\n\r\nBorder.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\r\n\r\nBorder.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Intermediate\"] });\r\n\r\nBorder.prototype.publish(\"gutter\", 0, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\r\n\r\nBorder.prototype.publish(\"topShrinkWrap\", false, \"boolean\", \"'Top' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\r\nBorder.prototype.publish(\"leftShrinkWrap\", false, \"boolean\", \"'Left' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\r\nBorder.prototype.publish(\"rightShrinkWrap\", false, \"boolean\", \"'Right' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\r\nBorder.prototype.publish(\"bottomShrinkWrap\", false, \"boolean\", \"'Bottom' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\r\n\r\nBorder.prototype.publish(\"topSize\", 0, \"number\", \"Height of the 'Top' Cell (px)\", null, { tags: [\"Private\"] });\r\nBorder.prototype.publish(\"leftSize\", 0, \"number\", \"Width of the 'Left' Cell (px)\", null, { tags: [\"Private\"] });\r\nBorder.prototype.publish(\"rightSize\", 0, \"number\", \"Width of the 'Right' Cell (px)\", null, { tags: [\"Private\"] });\r\nBorder.prototype.publish(\"bottomSize\", 0, \"number\", \"Height of the 'Bottom' Cell (px)\", null, { tags: [\"Private\"] });\r\n\r\nBorder.prototype.publish(\"topPercentage\", 20, \"number\", \"Percentage (of parent) Height of the 'Top' Cell\", null, { tags: [\"Private\"] });\r\nBorder.prototype.publish(\"leftPercentage\", 20, \"number\", \"Percentage (of parent) Width of the 'Left' Cell\", null, { tags: [\"Private\"] });\r\nBorder.prototype.publish(\"rightPercentage\", 20, \"number\", \"Percentage (of parent) Width of the 'Right' Cell\", null, { tags: [\"Private\"] });\r\nBorder.prototype.publish(\"bottomPercentage\", 20, \"number\", \"Percentage (of parent) Height of the 'Bottom' Cell\", null, { tags: [\"Private\"] });\r\n\r\nBorder.prototype.publish(\"surfacePadding\", 0, \"number\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\r\n\r\nBorder.prototype.publish(\"sectionTypes\", [], \"array\", \"Section Types sharing an index with 'content' - Used to determine position/size.\", null, { tags: [\"Private\"] });\r\n","import { BBox, HTMLWidget, Platform, Widget } from \"@hpcc-js/common\";\r\n\r\nimport \"../src/Border2.css\";\r\n\r\nexport type OverflowT = \"hidden\" | \"scroll\" | \"visible\" | \"auto\";\r\nexport type ChartPanelSectionT = \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\r\nexport class WidgetDiv {\r\n private _div;\r\n private _overlay: boolean = false;\r\n private _overflowX: OverflowT = \"visible\";\r\n private _overflowY: OverflowT = \"visible\";\r\n private _widget: Widget;\r\n\r\n constructor(div) {\r\n this._div = div;\r\n }\r\n\r\n overlay(): boolean;\r\n overlay(_: boolean): this;\r\n overlay(_?: boolean): boolean | this {\r\n if (!arguments.length) return this._overlay;\r\n this._overlay = _;\r\n return this;\r\n }\r\n\r\n overflowX(): OverflowT;\r\n overflowX(_: OverflowT): this;\r\n overflowX(_?: OverflowT): OverflowT | this {\r\n if (!arguments.length) return this._overflowX;\r\n this._overflowX = _;\r\n this._div.style(\"overflow-x\", _);\r\n return this;\r\n }\r\n overflowY(): OverflowT;\r\n overflowY(_: OverflowT): this;\r\n overflowY(_?: OverflowT): OverflowT | this {\r\n if (!arguments.length) return this._overflowY;\r\n this._overflowY = _;\r\n this._div.style(\"overflow-y\", _);\r\n return this;\r\n }\r\n\r\n element() {\r\n return this._div;\r\n }\r\n\r\n node(): SVGElement | HTMLElement {\r\n return this._div.node();\r\n }\r\n\r\n widget(): Widget;\r\n widget(_: Widget): this;\r\n widget(_?: Widget): Widget | this {\r\n if (!arguments.length) return this._widget;\r\n if (this._widget !== _) {\r\n if (this._widget) {\r\n this._widget.target(null);\r\n }\r\n this._widget = _;\r\n if (this._widget) {\r\n this._widget.target(this._div.node());\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n resize(size: { width: number, height: number }) {\r\n if (this._widget) {\r\n this._div\r\n .style(\"width\", `${size.width}px`)\r\n .style(\"height\", `${size.height}px`)\r\n ;\r\n this._widget.resize(size);\r\n }\r\n return this;\r\n }\r\n\r\n async render(getBBox?, availableHeight?: number, availableWidth?: number): Promise<BBox | undefined> {\r\n let overflowX = this.overflowX();\r\n if(!this.overlay() && overflowX === \"visible\") {\r\n overflowX = null;\r\n }\r\n let overflowY = this.overflowY();\r\n if(!this.overlay() && overflowY === \"visible\") {\r\n overflowY = null;\r\n }\r\n this._div\r\n .style(\"height\", this.overlay() ? \"0px\" : null)\r\n .style(\"overflow-x\", overflowX)\r\n .style(\"overflow-y\", overflowY)\r\n ;\r\n if (this._widget) {\r\n return this._widget.renderPromise().then(w => {\r\n if (getBBox && this._widget.visible()) {\r\n const retVal = this._widget.getBBox();\r\n retVal.width += 8;\r\n if (availableHeight !== undefined && retVal.height > availableHeight) {\r\n retVal.width += Platform.getScrollbarWidth();\r\n }\r\n if (availableWidth !== undefined && retVal.width > availableWidth) {\r\n retVal.height += Platform.getScrollbarWidth();\r\n }\r\n if (this.overlay()) {\r\n retVal.height = 0;\r\n } else {\r\n retVal.height += 4;\r\n }\r\n return retVal;\r\n }\r\n return getBBox ? { x: 0, y: 0, width: 0, height: 0 } : undefined;\r\n });\r\n } else {\r\n return Promise.resolve(getBBox ? { x: 0, y: 0, width: 0, height: 0 } : undefined);\r\n }\r\n }\r\n}\r\n\r\nexport class Border2 extends HTMLWidget {\r\n\r\n protected _bodyElement;\r\n\r\n protected _topWA: WidgetDiv;\r\n protected _leftWA: WidgetDiv;\r\n protected _centerWA: WidgetDiv;\r\n protected _rightWA: WidgetDiv;\r\n protected _bottomWA: WidgetDiv;\r\n protected _topPrevOverflow: OverflowT;\r\n protected _leftPrevOverflow: OverflowT;\r\n protected _rightPrevOverflow: OverflowT;\r\n protected _bottomPrevOverflow: OverflowT;\r\n\r\n constructor() {\r\n super();\r\n this._tag = \"div\";\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n \r\n const topElement = element.append(\"header\");\r\n\r\n this._bodyElement = element.append(\"div\").attr(\"class\", \"body\");\r\n const centerElement = this._bodyElement.append(\"div\").attr(\"class\", \"center\");\r\n const leftElement = this._bodyElement.append(\"div\").attr(\"class\", \"lhs\");\r\n const rightElement = this._bodyElement.append(\"div\").attr(\"class\", \"rhs\");\r\n\r\n const bottomElement = element.append(\"div\").attr(\"class\", \"footer\");\r\n\r\n this._topWA = new WidgetDiv(topElement);\r\n this._centerWA = new WidgetDiv(centerElement);\r\n this._leftWA = new WidgetDiv(leftElement);\r\n this._rightWA = new WidgetDiv(rightElement);\r\n this._bottomWA = new WidgetDiv(bottomElement);\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n this._topWA.element().style(\"display\", this.showTop() ? null : \"none\");\r\n this._rightWA.element().style(\"display\", this.showRight() ? null : \"none\");\r\n this._bottomWA.element().style(\"display\", this.showBottom() ? null : \"none\");\r\n this._leftWA.element().style(\"display\", this.showLeft() ? null : \"none\");\r\n if(this.topOverflowX() !== this._topWA.overflowX()) {\r\n this._topWA.overflowX(this.topOverflowX());\r\n }\r\n if(this.rightOverflowX() !== this._rightWA.overflowX()) {\r\n this._rightWA.overflowX(this.rightOverflowX());\r\n }\r\n if(this.bottomOverflowX() !== this._bottomWA.overflowX()) {\r\n this._bottomWA.overflowX(this.bottomOverflowX());\r\n }\r\n if(this.leftOverflowX() !== this._leftWA.overflowX()) {\r\n this._leftWA.overflowX(this.leftOverflowX());\r\n }\r\n if(this.topOverflowY() !== this._topWA.overflowY()) {\r\n this._topWA.overflowY(this.topOverflowY());\r\n }\r\n if(this.rightOverflowY() !== this._rightWA.overflowY()) {\r\n this._rightWA.overflowY(this.rightOverflowY());\r\n }\r\n if(this.bottomOverflowY() !== this._bottomWA.overflowY()) {\r\n this._bottomWA.overflowY(this.bottomOverflowY());\r\n }\r\n if(this.leftOverflowY() !== this._leftWA.overflowY()) {\r\n this._leftWA.overflowY(this.leftOverflowY());\r\n }\r\n this.element()\r\n .style(\"width\", `${this.width()}px`)\r\n .style(\"height\", `${this.height()}px`)\r\n ;\r\n }\r\n\r\n private targetNull(w?: Widget) {\r\n if (w) {\r\n w.target(null);\r\n }\r\n }\r\n\r\n exit(domNode, element) {\r\n this.targetNull(this.center());\r\n this.targetNull(this.bottom());\r\n this.targetNull(this.right());\r\n this.targetNull(this.left());\r\n this.targetNull(this.top());\r\n super.exit(domNode, element);\r\n }\r\n\r\n swap(sectionA: ChartPanelSectionT, sectionB: ChartPanelSectionT): this {\r\n const a = this[sectionA]();\r\n const b = this[sectionB]();\r\n this.targetNull(a);\r\n this.targetNull(b);\r\n this[`_${sectionA}WA`].widget(null);\r\n this[`_${sectionB}WA`].widget(null);\r\n this[sectionA](b);\r\n this[sectionB](a);\r\n return this;\r\n }\r\n\r\n render(callback?: (w: Widget) => void): this {\r\n const retVal = super.render(w => {\r\n if (this._topWA) {\r\n this._topWA\r\n .widget(this.top())\r\n .overlay(this.topOverlay())\r\n .render(true).then(async topBBox => {\r\n const bottomBBox: BBox = await this._bottomWA.widget(this.bottom()).render(true, undefined, this.width()) as BBox;\r\n const availableHeight = this.height() - (topBBox.height + bottomBBox.height);\r\n const leftBBox: BBox = await this._leftWA.widget(this.left()).render(true, availableHeight) as BBox;\r\n const rightBBox: BBox = await this._rightWA.widget(this.right()).render(true, availableHeight) as BBox;\r\n \r\n if (this.bottomHeight_exists()) {\r\n bottomBBox.height = this.bottomHeight();\r\n }\r\n const bodyWidth = this.width() - (leftBBox.width + rightBBox.width);\r\n const bodyHeight = this.height() - (topBBox.height + bottomBBox.height);\r\n \r\n const centerOverflowX = this.centerOverflowX();\r\n const centerOverflowY = this.centerOverflowY();\r\n\r\n const scrollCenterX = [\"auto\", \"scroll\"].indexOf(centerOverflowX) !== -1;\r\n const scrollCenterY = [\"auto\", \"scroll\"].indexOf(centerOverflowY) !== -1;\r\n if(scrollCenterX || scrollCenterY) {\r\n this._centerWA\r\n .overflowX(this.centerOverflowX())\r\n .overflowY(this.centerOverflowY())\r\n .widget(this.center())\r\n .resize({\r\n width: bodyWidth,\r\n height: bodyHeight\r\n })\r\n .render()\r\n ;\r\n }\r\n this._bodyElement.style(\"height\", `${bodyHeight}px`);\r\n const promises = [\r\n this._topWA\r\n .overflowX(this.topOverflowX())\r\n .overflowY(this.topOverflowY())\r\n .resize({\r\n width: this.width(),\r\n height: topBBox.height\r\n })\r\n .render(),\r\n this._leftWA\r\n .overflowX(this.leftOverflowX())\r\n .overflowY(this.leftOverflowY())\r\n .resize({\r\n width: leftBBox.width,\r\n height: bodyHeight\r\n })\r\n .render(),\r\n this._rightWA\r\n .overflowX(this.rightOverflowX())\r\n .overflowY(this.rightOverflowY())\r\n .resize({\r\n width: rightBBox.width,\r\n height: bodyHeight\r\n })\r\n .render(),\r\n this._centerWA\r\n .overflowX(this.centerOverflowX())\r\n .overflowY(this.centerOverflowY())\r\n .widget(this.center())\r\n .resize({\r\n width: bodyWidth,\r\n height: bodyHeight\r\n })\r\n .render(),\r\n this._bottomWA\r\n .overflowX(this.bottomOverflowX())\r\n .overflowY(this.bottomOverflowY())\r\n .resize({\r\n width: this.width(),\r\n height: bottomBBox.height\r\n })\r\n .render()\r\n ];\r\n Promise.all(promises).then(promises => {\r\n if (callback) {\r\n callback(this);\r\n }\r\n });\r\n })\r\n ;\r\n } else {\r\n if (callback) {\r\n callback(this);\r\n }\r\n }\r\n });\r\n return retVal;\r\n }\r\n}\r\nBorder2.prototype._class += \" layout_Border2\";\r\n\r\nexport interface Border2 {\r\n top(): Widget;\r\n top(_: Widget): this;\r\n topOverlay(): boolean;\r\n topOverlay(_: boolean): this;\r\n left(): Widget;\r\n left(_: Widget): this;\r\n center(): Widget;\r\n center(_: Widget): this;\r\n right(): Widget;\r\n right(_: Widget): this;\r\n bottom(): Widget;\r\n bottom(_: Widget): this;\r\n bottomHeight(): number;\r\n bottomHeight(_: number): this;\r\n bottomHeight_exists(): boolean;\r\n topOverflowX(): OverflowT;\r\n topOverflowX(_: OverflowT): this;\r\n rightOverflowX(): OverflowT;\r\n rightOverflowX(_: OverflowT): this;\r\n bottomOverflowX(): OverflowT;\r\n bottomOverflowX(_: OverflowT): this;\r\n leftOverflowX(): OverflowT;\r\n leftOverflowX(_: OverflowT): this;\r\n centerOverflowX(): OverflowT;\r\n centerOverflowX(_: OverflowT): this;\r\n topOverflowY(): OverflowT;\r\n topOverflowY(_: OverflowT): this;\r\n rightOverflowY(): OverflowT;\r\n rightOverflowY(_: OverflowT): this;\r\n bottomOverflowY(): OverflowT;\r\n bottomOverflowY(_: OverflowT): this;\r\n leftOverflowY(): OverflowT;\r\n leftOverflowY(_: OverflowT): this;\r\n centerOverflowY(): OverflowT;\r\n centerOverflowY(_: OverflowT): this;\r\n showTop(): boolean;\r\n showTop(_: boolean): this;\r\n showRight(): boolean;\r\n showRight(_: boolean): this;\r\n showBottom(): boolean;\r\n showBottom(_: boolean): this;\r\n showLeft(): boolean;\r\n showLeft(_: boolean): this;\r\n topOverflowX_default(_: OverflowT);\r\n rightOverflowX_default(_: OverflowT);\r\n bottomOverflowX_default(_: OverflowT);\r\n leftOverflowX_default(_: OverflowT);\r\n centerOverflowX_default(_: OverflowT);\r\n topOverflowY_default(_: OverflowT);\r\n rightOverflowY_default(_: OverflowT);\r\n bottomOverflowY_default(_: OverflowT);\r\n leftOverflowY_default(_: OverflowT);\r\n centerOverflowY_default(_: OverflowT);\r\n}\r\nBorder2.prototype.publish(\"showTop\", true, \"boolean\", \"If true, top widget adapter will display\");\r\nBorder2.prototype.publish(\"showRight\", true, \"boolean\", \"If true, right widget adapter will display\");\r\nBorder2.prototype.publish(\"showBottom\", true, \"boolean\", \"If true, bottom widget adapter will display\");\r\nBorder2.prototype.publish(\"showLeft\", true, \"boolean\", \"If true, left widget adapter will display\");\r\nBorder2.prototype.publish(\"topOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the top widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"rightOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the right widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"bottomOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the bottom widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"leftOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the left widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"centerOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the center widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"topOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the top widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"rightOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the right widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"bottomOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the bottom widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"leftOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the left widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"centerOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the center widget adapter\", [\"hidden\", \"scroll\", \"visible\", \"auto\"]);\r\nBorder2.prototype.publish(\"top\", null, \"widget\", \"Top Widget\", undefined, { render: false });\r\nBorder2.prototype.publish(\"topOverlay\", false, \"boolean\", \"Overlay Top Widget\");\r\nBorder2.prototype.publish(\"left\", null, \"widget\", \"Left Widget\", undefined, { render: false });\r\nBorder2.prototype.publish(\"center\", null, \"widget\", \"Center Widget\", undefined, { render: false });\r\nBorder2.prototype.publish(\"right\", null, \"widget\", \"Right Widget\", undefined, { render: false });\r\nBorder2.prototype.publish(\"bottom\", null, \"widget\", \"Bottom Widget\", undefined, { render: false });\r\nBorder2.prototype.publish(\"bottomHeight\", null, \"number\", \"Bottom Fixed Height\", undefined, { optional: true });\r\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport \"d3-transition\";\r\n\r\nimport \"../src/Carousel.css\";\r\n\r\nexport class Carousel extends HTMLWidget {\r\n\r\n protected _prevActive: number = 0;\r\n protected _root;\r\n\r\n activeWidget(): Widget {\r\n return this.widgets()[this.active()];\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._root = element.append(\"div\")\r\n .attr(\"id\", `${this.id()}_root`)\r\n ;\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n const active = this.active();\r\n const width = this.width();\r\n this._root\r\n .style(\"width\", `${width}px`)\r\n .style(\"height\", `${this.height()}px`)\r\n ;\r\n const widgetElements = this._root.selectAll(`#${this.id()}_root > .carouselItem`).data(this.widgets(), d => d.id());\r\n const update = widgetElements.enter().append(\"div\")\r\n .attr(\"class\", \"carouselItem\")\r\n .each(function (w) {\r\n w.target(this);\r\n })\r\n .merge(widgetElements)\r\n .style(\"left\", (d, i) => `${(i - this._prevActive) * width}px`)\r\n .style(\"width\", `${width}px`)\r\n ;\r\n if (this._prevActive !== active) {\r\n update\r\n .style(\"display\", (d, i) => i === this._prevActive || i === active ? null : \"none\") // Must be called before render callback (not inside transition)\r\n .transition().duration(this.transitionDuration())\r\n .style(\"left\", (d, i) => `${(i - active) * width}px`)\r\n .on(\"end\", function (d, i) {\r\n d3Select(this).style(\"display\", () => i === active ? null : \"none\");\r\n })\r\n ;\r\n this._prevActive = active;\r\n }\r\n widgetElements.exit()\r\n .each(function (w) {\r\n w.target(null);\r\n })\r\n .remove()\r\n ;\r\n }\r\n\r\n exit(domNode, element) {\r\n this.widgets().forEach(w => w.target(null));\r\n super.exit(domNode, element);\r\n }\r\n\r\n render(callback): this {\r\n return super.render(w => {\r\n if (!this.visible() || this.isDOMHidden()) {\r\n if (callback) {\r\n callback(w);\r\n }\r\n } else {\r\n const aw = this.activeWidget();\r\n if (aw) {\r\n aw\r\n .resize(this.size())\r\n .render(w2 => {\r\n if (callback) {\r\n callback(w);\r\n }\r\n })\r\n ;\r\n }\r\n }\r\n });\r\n }\r\n}\r\nCarousel.prototype._class += \" layout_Carousel\";\r\n\r\nexport interface Carousel {\r\n widgets(): Widget[];\r\n widgets(_: Widget[]): this;\r\n active(): number;\r\n active(_: number): this;\r\n transitionDuration(): Widget[];\r\n transitionDuration(_: Widget[]): this;\r\n}\r\n\r\nCarousel.prototype.publish(\"widgets\", [], \"widgetArray\", \"Widgets\", null, { render: false });\r\nCarousel.prototype.publish(\"active\", 0, \"number\", \"Active widget\");\r\nCarousel.prototype.publish(\"transitionDuration\", 500, \"number\", \"Transition duration\");\r\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\n .text()\n .split(/\\s+/)\n .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\n .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\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + dy + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst d3_mergeLabels = (gen = [], labels, domain, range, labelDelimiter) => {\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(\n labels({\n i,\n genLength,\n generatedLabels: gen,\n domain,\n range,\n labelDelimiter\n })\n )\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 } 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 {\n data: data,\n labels: labels,\n feature: d => scale(d)\n }\n}\n\nconst d3_quantLegend = (scale, labelFormat, labelDelimiter) => {\n const labels = scale.range().map(d => {\n const invert = scale.invertExtent(d)\n return (\n labelFormat(invert[0]) +\n \" \" +\n labelDelimiter +\n \" \" +\n labelFormat(invert[1])\n )\n })\n\n return {\n data: scale.range(),\n labels: labels,\n feature: d3_identity\n }\n}\n\nconst d3_ordinalLegend = scale => ({\n 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\nexport default {\n d3_drawShapes: (\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n path\n ) => {\n if (shape === \"rect\") {\n shapes.attr(\"height\", shapeHeight).attr(\"width\", shapeWidth)\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius)\n } else if (shape === \"line\") {\n shapes\n .attr(\"x1\", 0)\n .attr(\"x2\", shapeWidth)\n .attr(\"y1\", 0)\n .attr(\"y2\", 0)\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\n .selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .data(labels)\n .text(d3_identity)\n\n if (labelWidth) {\n svg\n .selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .call(d3_textWrapping, labelWidth)\n }\n\n return text\n },\n\n d3_calcType: function(\n scale,\n ascending,\n cells,\n labels,\n labelFormat,\n labelDelimiter\n ) {\n const type = scale.invertExtent\n ? d3_quantLegend(scale, labelFormat, labelDelimiter)\n : scale.ticks\n ? d3_linearLegend(scale, cells, labelFormat)\n : 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(\n type.labels,\n labels,\n scale.domain(),\n range,\n labelDelimiter\n )\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\n .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\n .on(\"mouseover.legend\", function(d) {\n d3_cellOver(dispatcher, d, this)\n })\n .on(\"mouseout.legend\", function(d) {\n d3_cellOut(dispatcher, d, this)\n })\n .on(\"click.legend\", function(d) {\n d3_cellClick(dispatcher, d, this)\n })\n },\n\n d3_title: (svg, title, classPrefix, titleWidth) => {\n if (title !== \"\") {\n const titleText = svg.selectAll(\"text.\" + classPrefix + \"legendTitle\")\n\n titleText\n .data([title])\n .enter()\n .append(\"text\")\n .attr(\"class\", classPrefix + \"legendTitle\")\n\n svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").text(title)\n\n if (titleWidth) {\n svg\n .selectAll(\"text.\" + classPrefix + \"legendTitle\")\n .call(d3_textWrapping, titleWidth)\n }\n\n const cellsSvg = svg.select(\".\" + classPrefix + \"legendCells\")\n const yOffset = svg\n .select(\".\" + classPrefix + \"legendTitle\")\n .nodes()\n .map(d => d.getBBox().height)[0],\n xOffset = -cellsSvg.nodes().map(function(d) {\n return d.getBBox().x\n })[0]\n cellsSvg.attr(\"transform\", \"translate(\" + xOffset + \",\" + yOffset + \")\")\n }\n },\n\n d3_defaultLocale: {\n format,\n formatPrefix\n },\n\n d3_defaultFormatSpecifier: \".01f\",\n\n d3_defaultDelimiter: \"to\"\n}\n","import { instanceOfIHighlight } from \"@hpcc-js/api\";\r\nimport { Database, Palette, SVGWidget, Widget } from \"@hpcc-js/common\";\r\nimport { format as d3Format } from \"d3-format\";\r\nimport { scaleOrdinal as d3ScaleOrdinal } from \"d3-scale\";\r\nimport {\r\n symbol as d3Symbol,\r\n symbolCircle as d3SymbolCircle,\r\n symbolCross as d3SymbolCross,\r\n symbolDiamond as d3SymbolDiamond,\r\n symbolSquare as d3SymbolSquare,\r\n symbolStar as d3SymbolStar,\r\n symbolTriangle as d3SymbolTriangle,\r\n symbolWye as d3SymbolWye\r\n} from \"d3-shape\";\r\nimport { legendColor as d3LegendColor } from \"d3-svg-legend\";\r\nimport { ChartPanel } from \"./ChartPanel\";\r\n\r\nexport class Legend extends SVGWidget {\r\n _owner: ChartPanel;\r\n _targetWidget: Widget;\r\n _targetWidgetMonitor;\r\n _legendOrdinal;\r\n _disabled: string[] = [];\r\n\r\n private _symbolTypeMap = {\r\n \"circle\": d3SymbolCircle,\r\n \"cross\": d3SymbolCross,\r\n \"diamond\": d3SymbolDiamond,\r\n \"square\": d3SymbolSquare,\r\n \"star\": d3SymbolStar,\r\n \"triangle\": d3SymbolTriangle,\r\n \"wye\": d3SymbolWye\r\n };\r\n\r\n constructor(owner: ChartPanel) {\r\n super();\r\n this._owner = owner;\r\n this._drawStartPos = \"origin\";\r\n\r\n const context = this;\r\n this._legendOrdinal = d3LegendColor()\r\n .shape(\"path\", d3Symbol().type(d3SymbolCircle).size(150)())\r\n .shapePadding(10)\r\n .shapeRadius(10)\r\n .on(\"cellclick\", function (d) {\r\n context.onClick(d, this);\r\n })\r\n .on(\"cellover\", (d) => {\r\n context.onOver(d, this);\r\n })\r\n .on(\"cellout\", (d) => {\r\n context.onOut(d, this);\r\n })\r\n ;\r\n }\r\n\r\n isDisabled(d: string | Database.Field): boolean {\r\n if (typeof d === \"undefined\") {\r\n return false;\r\n } else if (typeof d === \"string\") {\r\n return d.indexOf(\"__\") === 0 || this._disabled.indexOf(d) >= 0;\r\n } else if (d instanceof Database.Field) {\r\n return d.id().indexOf(\"__\") === 0 || this._disabled.indexOf(d.id()) >= 0;\r\n }\r\n return this._disabled.indexOf(d) >= 0;\r\n }\r\n\r\n filteredFields(): Database.Field[] {\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n return this.fields();\r\n case \"ND\":\r\n return this.fields().filter(d => !this.isDisabled(d));\r\n }\r\n return this.fields();\r\n }\r\n\r\n filteredColumns(): string[] {\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n return this.columns();\r\n case \"ND\":\r\n return this.columns().filter(d => !this.isDisabled(d));\r\n }\r\n return this.columns();\r\n }\r\n\r\n filteredData(): any[][] {\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n return this.data().filter(row => !this.isDisabled(row[0]));\r\n case \"ND\":\r\n const disabledCols: { [key: number]: boolean } = {};\r\n let anyDisabled: boolean = false;\r\n this.columns().forEach((col, idx) => {\r\n const disabled = this.isDisabled(col);\r\n disabledCols[idx] = disabled;\r\n if (disabled) {\r\n anyDisabled = true;\r\n }\r\n });\r\n return !anyDisabled ? this.data() : this.data().map(row => {\r\n return row.filter((cell, idx) => !disabledCols[idx]);\r\n });\r\n }\r\n return this.data();\r\n }\r\n\r\n isRainbow() {\r\n const widget = this.getWidget();\r\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\r\n }\r\n\r\n targetWidget(): Widget;\r\n targetWidget(_: Widget): this;\r\n targetWidget(_?: Widget): Widget | this {\r\n if (!arguments.length) return this._targetWidget;\r\n this._targetWidget = _;\r\n if (this._targetWidgetMonitor) {\r\n this._targetWidgetMonitor.remove();\r\n delete this._targetWidgetMonitor;\r\n }\r\n if (this._targetWidget) {\r\n const context = this;\r\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\r\n switch (key) {\r\n case \"chart\":\r\n case \"columns\":\r\n case \"data\":\r\n case \"paletteID\":\r\n context.lazyRender();\r\n break;\r\n }\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n getWidget() {\r\n if (this._targetWidget) {\r\n switch (this._targetWidget.classID()) {\r\n case \"composite_MultiChart\":\r\n return (this._targetWidget as any).chart();\r\n }\r\n }\r\n return this._targetWidget;\r\n }\r\n\r\n getPalette(): Palette.OrdinalPaletteFunc | Palette.RainbowPaletteFunc {\r\n const widget = this.getWidget();\r\n if (widget && widget._palette) {\r\n switch (widget._palette.type()) {\r\n case \"ordinal\":\r\n return Palette.ordinal(widget._palette.id());\r\n case \"rainbow\":\r\n return Palette.rainbow(widget._palette.id());\r\n }\r\n }\r\n return Palette.ordinal(\"default\");\r\n }\r\n\r\n getPaletteType() {\r\n return this.getPalette().type();\r\n }\r\n\r\n fillColorFunc() {\r\n const widget = this.getWidget();\r\n if (widget && widget.fillColor) {\r\n // Legend will render before the widget, so its possible the widgets palette will not have switched yet...\r\n if (widget._palette && widget.paletteID && widget._palette.name !== widget.paletteID()) {\r\n widget._palette = widget._palette.switch(widget.paletteID());\r\n }\r\n return (row, col, sel) => {\r\n return widget.fillColor(row, col, sel);\r\n };\r\n }\r\n const palette = Palette.ordinal(widget && widget.paletteID ? widget.paletteID() || \"default\" : \"default\");\r\n return (row, col, sel) => {\r\n return palette(col);\r\n };\r\n }\r\n\r\n fillColor(row, col, sel) {\r\n return this.fillColorFunc()(row, col, sel);\r\n }\r\n\r\n protected _g;\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._g = element.append(\"g\")\r\n .attr(\"class\", \"legendOrdinal\")\r\n ;\r\n }\r\n\r\n calcMetaData() {\r\n let dataArr = [];\r\n let total = 0;\r\n let maxLabelWidth = 0;\r\n const colLength = this.columns().length;\r\n\r\n if (this._targetWidget) {\r\n const columns = this.columns();\r\n switch (this.getPaletteType()) {\r\n case \"ordinal\":\r\n const fillColor = this.fillColorFunc();\r\n let val = 0;\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n dataArr = this.data().map(function (n, i) {\r\n val = this.data()[i].slice(1, colLength).reduce((acc, n) => acc + n, 0);\r\n const disabled = this.isDisabled(n[0]);\r\n if (!disabled) total += val;\r\n const label = n[0] + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\r\n const textSize = this.textSize(label);\r\n if (maxLabelWidth < textSize.width) maxLabelWidth = textSize.width;\r\n return [fillColor(n, n[0], false), n[0], label];\r\n }, this);\r\n break;\r\n case \"ND\":\r\n const widgetColumns = this.columns().filter(col => col.indexOf(\"__\") !== 0);\r\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n, i) {\r\n val = this.data().reduce((acc, n) => acc + n[i + 1], 0);\r\n const disabled = this.isDisabled(columns[i + 1]);\r\n const label = n + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\r\n if (!disabled) total += val;\r\n const textSize = this.textSize(label);\r\n if (maxLabelWidth < textSize.width) maxLabelWidth = textSize.width;\r\n return [fillColor(undefined, n, false), n, label];\r\n }, this);\r\n break;\r\n default:\r\n const widgetColumns2 = this.columns();\r\n dataArr = widgetColumns2.map(function (n) {\r\n return [fillColor(undefined, n, false), n];\r\n }, this);\r\n break;\r\n }\r\n break;\r\n case \"rainbow\":\r\n const palette = this.getPalette() as Palette.RainbowPaletteFunc;\r\n const format = d3Format(this.rainbowFormat());\r\n const widget = this.getWidget();\r\n const steps = this.rainbowBins();\r\n const weightMin: number = widget._dataMinWeight;\r\n const weightMax: number = widget._dataMaxWeight;\r\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\r\n dataArr.push([palette(weightMin, weightMin, weightMax), format(weightMin)]);\r\n for (let x = 1; x < steps - 1; ++x) {\r\n let mid = stepWeightDiff * x;\r\n if (Math.floor(mid) > parseInt(dataArr[0][1])) {\r\n mid = Math.floor(mid);\r\n }\r\n dataArr.push([palette(mid, weightMin, weightMax), format(mid)]);\r\n }\r\n dataArr.push([palette(weightMax, weightMin, weightMax), format(weightMax)]);\r\n break;\r\n }\r\n }\r\n return {\r\n dataArr,\r\n total,\r\n maxLabelWidth\r\n };\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n\r\n const { dataArr, maxLabelWidth, total } = this.calcMetaData();\r\n\r\n const radius = this.shapeRadius();\r\n const size = this.radiusToSymbolSize(radius);\r\n\r\n const strokeWidth = 1;\r\n\r\n let shapePadding = this.itemPadding();// + strokeWidth;\r\n if (this.orientation() === \"horizontal\") {\r\n shapePadding += maxLabelWidth - (radius * 2);\r\n }\r\n\r\n const ordinal = d3ScaleOrdinal()\r\n .domain(dataArr.map(row => row[1]))\r\n .range(dataArr.map(row => row[0]));\r\n this._legendOrdinal\r\n .shape(\"path\", d3Symbol().type(this._symbolTypeMap[this.symbolType()]).size(size)())\r\n .orient(this.orientation())\r\n .title(this.title())\r\n .labelWrap(this.labelMaxWidth())\r\n .labelAlign(this.labelAlign())\r\n .shapePadding(shapePadding)\r\n .scale(ordinal)\r\n .labels(d => dataArr[d.i][2])\r\n ;\r\n\r\n this._g.call(this._legendOrdinal);\r\n\r\n this.updateDisabled(element, dataArr);\r\n\r\n const legendCellsBbox = this._g.select(\".legendCells\").node().getBBox();\r\n let offsetX = Math.abs(legendCellsBbox.x);\r\n let offsetY = Math.abs(legendCellsBbox.y) + strokeWidth;\r\n\r\n if (this.orientation() === \"horizontal\") {\r\n if (this.labelAlign() === \"start\") {\r\n offsetX += strokeWidth;\r\n } else if (this.labelAlign() === \"end\") {\r\n offsetX -= strokeWidth;\r\n }\r\n if (this.width() > legendCellsBbox.width) {\r\n const extraWidth = this.width() - legendCellsBbox.width;\r\n offsetX += (extraWidth / 2);\r\n }\r\n } else if (this.orientation() === \"vertical\") {\r\n offsetX += strokeWidth;\r\n if (this._containerSize.height > legendCellsBbox.height) {\r\n const extraHeight = this.height() - legendCellsBbox.height;\r\n offsetY += (extraHeight / 2);\r\n }\r\n }\r\n\r\n this._g.attr(\"transform\", `translate(${offsetX}, ${offsetY})`);\r\n this.pos({\r\n x: 0,\r\n y: 0\r\n });\r\n this._legendOrdinal\r\n .labelOffset(this.itemPadding())\r\n ;\r\n const legendTotal = this._g.selectAll(\".legendTotal\").data(dataArr.length && this.showLegendTotal() ? [total] : []);\r\n const totalText = `Total: ${total}`;\r\n const totalOffsetX = -offsetX;\r\n const totalOffsetY = legendCellsBbox.height + this.itemPadding() + strokeWidth;\r\n this.enableOverflowScroll(false);\r\n this.enableOverflow(true);\r\n legendTotal\r\n .enter()\r\n .append(\"text\")\r\n .classed(\"legendTotal\", true)\r\n .merge(legendTotal)\r\n .attr(\"transform\", `translate(${totalOffsetX}, ${totalOffsetY})`)\r\n .text(totalText)\r\n ;\r\n legendTotal.exit().remove();\r\n }\r\n\r\n updateDisabled(element, dataArr) {\r\n element\r\n .style(\"cursor\", \"pointer\")\r\n .selectAll(\"path.swatch\").filter((d, i) => i < dataArr.length)\r\n .style(\"stroke\", (d, i) => dataArr[i][0])\r\n .style(\"fill\", (d, i) =>\r\n this._disabled.indexOf(d) < 0 ? dataArr[i][0] : \"white\"\r\n )\r\n ;\r\n }\r\n\r\n postUpdate(domNode, element) {\r\n let w;\r\n if (this._boundingBox) {\r\n w = this._boundingBox.width;\r\n this._boundingBox.width = this._size.width;\r\n }\r\n super.postUpdate(domNode, element);\r\n if (w !== undefined) {\r\n this._boundingBox.width = w;\r\n }\r\n this._parentRelativeDiv.style(\"overflow\", \"hidden\");\r\n }\r\n\r\n exit(domNode, element) {\r\n super.exit(domNode, element);\r\n }\r\n\r\n radiusToSymbolSize(radius) {\r\n const circleSize = Math.pow(radius, 2) * Math.PI;\r\n switch (this.symbolType()) {\r\n case \"star\":\r\n return circleSize * 0.45;\r\n case \"triangle\":\r\n return circleSize * 0.65;\r\n case \"cross\":\r\n case \"diamond\":\r\n case \"wye\":\r\n return circleSize * 0.75;\r\n case \"circle\":\r\n return circleSize;\r\n case \"square\":\r\n return circleSize * 1.3;\r\n }\r\n }\r\n\r\n onClick(d, domNode) {\r\n switch (this.getPaletteType()) {\r\n case \"ordinal\":\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n case \"ND\":\r\n const disabledIdx = this._disabled.indexOf(d);\r\n if (disabledIdx < 0) {\r\n this._disabled.push(d);\r\n } else {\r\n this._disabled.splice(disabledIdx, 1);\r\n }\r\n this._owner.refreshColumns();\r\n this._owner.refreshData();\r\n this._owner.render();\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n onOver(d, domNode) {\r\n if (instanceOfIHighlight(this._owner)) {\r\n switch (this.getPaletteType()) {\r\n case \"ordinal\":\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n case \"ND\":\r\n if (this._disabled.indexOf(d) < 0) {\r\n this._owner.highlightColumn(d);\r\n }\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onOut(d, domNode) {\r\n if (instanceOfIHighlight(this._owner)) {\r\n switch (this.getPaletteType()) {\r\n case \"ordinal\":\r\n switch (this.dataFamily()) {\r\n case \"2D\":\r\n case \"ND\":\r\n this._owner.highlightColumn();\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onDblClick(rowData, rowIdx) {\r\n }\r\n\r\n onMouseOver(rowData, rowIdx) {\r\n }\r\n private _containerSize;\r\n resize(_size?: { width: number, height: number }) {\r\n let retVal;\r\n if (this.fitToContent()) {\r\n this._containerSize = _size;\r\n const bbox = this.getBBox();\r\n if (_size.width > bbox.width) {\r\n bbox.width = _size.width;\r\n }\r\n if (_size.height > bbox.height) {\r\n bbox.height = _size.height;\r\n }\r\n retVal = super.resize.apply(this, [{ ...bbox }]);\r\n } else {\r\n retVal = super.resize.apply(this, arguments);\r\n }\r\n return retVal;\r\n }\r\n\r\n}\r\nLegend.prototype._class += \" layout_Legend\";\r\n\r\nexport interface Legend {\r\n title(): string;\r\n title(_: string): this;\r\n symbolType(): \"circle\" | \"cross\" | \"diamond\" | \"square\" | \"star\" | \"triangle\" | \"wye\";\r\n symbolType(_: \"circle\" | \"cross\" | \"diamond\" | \"square\" | \"star\" | \"triangle\" | \"wye\"): this;\r\n labelMaxWidth(): number;\r\n labelMaxWidth(_: number): this;\r\n orientation(): \"vertical\" | \"horizontal\";\r\n orientation(_: \"vertical\" | \"horizontal\"): this;\r\n orientation_exists: () => boolean;\r\n dataFamily(): \"1D\" | \"2D\" | \"ND\" | \"map\" | \"graph\" | \"any\";\r\n dataFamily(_: \"1D\" | \"2D\" | \"ND\" | \"map\" | \"graph\" | \"any\"): this;\r\n dataFamily_exists: () => boolean;\r\n rainbowFormat(): string;\r\n rainbowFormat(_: string): this;\r\n rainbowFormat_exists: () => boolean;\r\n rainbowBins(): number;\r\n rainbowBins(_: number): this;\r\n rainbowBins_exists: () => boolean;\r\n showSeriesTotal(): boolean;\r\n showSeriesTotal(_: boolean): this;\r\n showLegendTotal(): boolean;\r\n showLegendTotal(_: boolean): this;\r\n itemPadding(): number;\r\n itemPadding(_: number): this;\r\n shapeRadius(): number;\r\n shapeRadius(_: number): this;\r\n fitToContent(): boolean;\r\n fitToContent(_: boolean): this;\r\n labelAlign(): \"start\" | \"middle\" | \"end\";\r\n labelAlign(_: \"start\" | \"middle\" | \"end\"): this;\r\n}\r\nLegend.prototype.publish(\"title\", \"\", \"string\", \"Title\");\r\nLegend.prototype.publish(\"symbolType\", \"circle\", \"set\", \"Shape of each legend item\", [\"circle\", \"cross\", \"diamond\", \"square\", \"star\", \"triangle\", \"wye\"]);\r\nLegend.prototype.publish(\"labelMaxWidth\", null, \"number\", \"Max Label Width (pixels)\", null, { optional: true });\r\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\r\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\"1D\", \"2D\", \"ND\", \"map\", \"graph\", \"any\"], { tags: [\"Private\"] });\r\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\r\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\r\nLegend.prototype.publish(\"showSeriesTotal\", false, \"boolean\", \"Show value next to series\");\r\nLegend.prototype.publish(\"showLegendTotal\", false, \"boolean\", \"Show a total of the series values under the legend\", null);\r\nLegend.prototype.publish(\"itemPadding\", 8, \"number\", \"Padding between legend items (pixels)\");\r\nLegend.prototype.publish(\"shapeRadius\", 7, \"number\", \"Radius of legend shape (pixels)\");\r\nLegend.prototype.publish(\"fitToContent\", true, \"boolean\", \"If true, resize will simply reapply the bounding box dimensions\");\r\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\" });\r\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 { HTMLWidget, ISize, Widget } from \"@hpcc-js/common\";\r\n\r\nimport \"../src/Modal.css\";\r\n\r\nexport class Modal extends HTMLWidget {\r\n\r\n protected _widget: Widget;\r\n\r\n protected _relativeTarget: HTMLElement;\r\n\r\n protected _fade;\r\n protected _modal;\r\n protected _modalHeader;\r\n protected _modalBody;\r\n protected _modalHeaderAnnotations;\r\n protected _modalHeaderCloseButton;\r\n _close: () => void;\r\n\r\n constructor() {\r\n super();\r\n this._tag = \"div\";\r\n }\r\n\r\n closeModal() {\r\n this.visible(false);\r\n }\r\n\r\n getRelativeTarget() {\r\n let relativeTarget;\r\n if (this.relativeTargetId()) {\r\n relativeTarget = document.getElementById(this.relativeTargetId());\r\n if (relativeTarget) {\r\n return relativeTarget;\r\n }\r\n }\r\n if (!relativeTarget) {\r\n relativeTarget = this.locateAncestor(\"layout_Grid\");\r\n if (relativeTarget && relativeTarget.element) {\r\n return relativeTarget.element().node();\r\n }\r\n }\r\n return document.body;\r\n }\r\n\r\n setModalSize(): ISize {\r\n if (this.fixedHeight() !== null && this.fixedWidth() !== null) {\r\n this._modal\r\n .style(\"height\", this.fixedHeight())\r\n .style(\"width\", this.fixedWidth())\r\n .style(\"min-height\", null)\r\n .style(\"min-width\", null)\r\n .style(\"max-height\", null)\r\n .style(\"max-width\", null)\r\n ;\r\n } else if (this.minHeight() || this.minWidth()) {\r\n this._modal\r\n .style(\"min-height\", this.minHeight())\r\n .style(\"min-width\", this.minWidth())\r\n .style(\"max-height\", this.maxHeight())\r\n .style(\"max-width\", this.maxWidth())\r\n ;\r\n }\r\n const modalRect = this._modal.node().getBoundingClientRect();\r\n const headerRect = this._modalHeader.node().getBoundingClientRect();\r\n this._modalBody\r\n .style(\"height\", (modalRect.height - headerRect.height) + \"px\")\r\n .style(\"width\", modalRect.width);\r\n\r\n return modalRect;\r\n }\r\n\r\n setFadePosition(rect) {\r\n this._fade\r\n .style(\"top\", rect.top + \"px\")\r\n .style(\"left\", rect.left + \"px\")\r\n .style(\"width\", rect.width + \"px\")\r\n .style(\"height\", rect.height + \"px\")\r\n ;\r\n }\r\n\r\n setModalPosition(rect) {\r\n const modalRect = this.setModalSize();\r\n if (this.fixedTop() !== null && this.fixedLeft() !== null) {\r\n this._modal\r\n .style(\"top\", `calc(${this.fixedTop()} + ${rect.top}px)`)\r\n .style(\"left\", `calc(${this.fixedLeft()} + ${rect.left}px)`)\r\n ;\r\n } else if (this.fixedHeight() !== null && this.fixedWidth() !== null) {\r\n this._modal\r\n .style(\"top\", (rect.top + (rect.height / 2) - (modalRect.height / 2)) + \"px\")\r\n .style(\"left\", (rect.left + (rect.width / 2) - (modalRect.width / 2)) + \"px\")\r\n ;\r\n } else if (this.minHeight() || this.minWidth()) {\r\n const contentRect = this._modal.node().getBoundingClientRect();\r\n this._modal\r\n .style(\"top\", (rect.top + (rect.height / 2) - (contentRect.height / 2)) + \"px\")\r\n .style(\"left\", (rect.left + (rect.width / 2) - (contentRect.width / 2)) + \"px\")\r\n ;\r\n }\r\n }\r\n\r\n resize(size?: any): this {\r\n super.resize();\r\n if (this._modal) this.setModalSize();\r\n return this;\r\n }\r\n\r\n resizeBodySync(width: number, height: number): this {\r\n const header = this._modalHeader.node();\r\n const headerRect = header.getBoundingClientRect();\r\n\r\n this._modal\r\n .style(\"width\", width + \"px\")\r\n .style(\"height\", (height + headerRect.height) + \"px\")\r\n .style(\"min-width\", width + \"px\")\r\n .style(\"min-height\", (height + headerRect.height) + \"px\")\r\n ;\r\n this._modalHeader\r\n .style(\"width\", width + \"px\")\r\n ;\r\n this._modalBody\r\n .style(\"width\", width + \"px\")\r\n .style(\"height\", height + \"px\")\r\n ;\r\n return this\r\n .minWidth(width + \"px\")\r\n .minHeight((height + headerRect.height) + \"px\")\r\n .resize({\r\n height: height + headerRect.height,\r\n width\r\n })\r\n ;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._fade = element.append(\"div\")\r\n .classed(\"layout_Modal-fade\", true)\r\n .classed(\"layout_Modal-fadeClickable\", this.enableClickFadeToClose())\r\n .classed(\"layout_Modal-fade-hidden\", !this.showFade())\r\n ;\r\n const header_h = this.titleFontSize() * 2;\r\n this._modal = element.append(\"div\")\r\n .classed(\"layout_Modal-content\", true)\r\n ;\r\n this._modalHeader = this._modal.append(\"div\")\r\n .classed(\"layout_Modal-header\", true)\r\n .style(\"color\", this.titleFontColor())\r\n .style(\"font-size\", this.titleFontSize() + \"px\")\r\n .style(\"height\", header_h + \"px\")\r\n ;\r\n this._modalBody = this._modal.append(\"div\")\r\n .classed(\"layout_Modal-body\", true)\r\n .style(\"height\", `calc( 100% - ${header_h}px )`)\r\n .style(\"overflow-x\", this.overflowX())\r\n .style(\"overflow-y\", this.overflowY())\r\n ;\r\n this._modalHeader.append(\"div\")\r\n .classed(\"layout_Modal-title\", true)\r\n .style(\"line-height\", this.titleFontSize() + \"px\")\r\n .style(\"top\", (this.titleFontSize() / 2) + \"px\")\r\n .style(\"left\", (this.titleFontSize() / 2) + \"px\")\r\n .text(this.formattedTitle())\r\n ;\r\n\r\n this._modalHeaderAnnotations = this._modalHeader.append(\"div\")\r\n .classed(\"layout_Modal-annotations\", true)\r\n ;\r\n this._modalHeaderCloseButton = this._modalHeaderAnnotations.append(\"div\")\r\n .classed(\"layout_Modal-closeButton\", true)\r\n .html(\"<i class=\\\"fa fa-close\\\"></i>\")\r\n ;\r\n\r\n this._modalHeaderAnnotations\r\n .style(\"line-height\", this.titleFontSize() + \"px\")\r\n .style(\"right\", (this.titleFontSize() / 2) + \"px\")\r\n .style(\"top\", (this.titleFontSize() / 2) + \"px\")\r\n ;\r\n this._modalHeaderCloseButton.on(\"click\", () => {\r\n this.closeModal();\r\n });\r\n this._fade.on(\"click\", n => {\r\n if (this.enableClickFadeToClose()) {\r\n this.closeModal();\r\n }\r\n });\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n element.style(\"display\", this.show() ? null : \"none\");\r\n this._fade.classed(\"layout_Modal-fade-hidden\", !this.showFade());\r\n this._relativeTarget = this.getRelativeTarget();\r\n\r\n this.setModalSize();\r\n const rect = this._relativeTarget.getBoundingClientRect();\r\n this.setFadePosition(rect);\r\n this.setModalPosition(rect);\r\n\r\n if (this.show()) {\r\n if (!this._widget.target()) {\r\n this._widget.target(this._modalBody.node());\r\n }\r\n this._widget.resize().render();\r\n } else {\r\n this._widget\r\n .target(null)\r\n .render()\r\n ;\r\n }\r\n }\r\n\r\n exit(domNode, element) {\r\n if (this._widget) {\r\n this._widget.target(null);\r\n }\r\n super.exit(domNode, element);\r\n }\r\n\r\n formattedTitle() {\r\n const title = this.title_exists() ? this.title().trim() : \"\";\r\n if (title.length > 0 && title.slice(0, 1) === \"(\" && title.slice(-1) === \")\") {\r\n return title.slice(1, -1);\r\n }\r\n return this.title();\r\n }\r\n}\r\nModal.prototype._class += \" layout_Modal\";\r\n\r\nexport interface Modal {\r\n show(): boolean;\r\n show(_: boolean): this;\r\n showFade(): boolean;\r\n showFade(_: boolean): this;\r\n enableClickFadeToClose(): boolean;\r\n enableClickFadeToClose(_: boolean): this;\r\n title(): string;\r\n title(_: string): this;\r\n title_exists(): boolean;\r\n titleFontSize(): number;\r\n titleFontSize(_: number): this;\r\n titleFontColor(): string;\r\n titleFontColor(_: string): this;\r\n minWidth(): string;\r\n minWidth(_: string): this;\r\n minHeight(): string;\r\n minHeight(_: string): this;\r\n maxWidth(): string;\r\n maxWidth(_: string): this;\r\n maxHeight(): string;\r\n maxHeight(_: string): this;\r\n fixedWidth(): string;\r\n fixedWidth(_: string): this;\r\n fixedHeight(): string;\r\n fixedHeight(_: string): this;\r\n fixedTop(): string;\r\n fixedTop(_: string): this;\r\n fixedLeft(): string;\r\n fixedLeft(_: string): this;\r\n relativeTargetId(): string;\r\n relativeTargetId(_: string): this;\r\n widget(): Widget;\r\n widget(_: Widget): this;\r\n overflowX(): \"hidden\" | \"scroll\";\r\n overflowX(_: \"hidden\" | \"scroll\"): this;\r\n overflowY(): \"hidden\" | \"scroll\";\r\n overflowY(_: \"hidden\" | \"scroll\"): this;\r\n}\r\n\r\nModal.prototype.publish(\"title\", null, \"string\", \"title\");\r\nModal.prototype.publish(\"widget\", null, \"widget\", \"widget\");\r\nModal.prototype.publish(\"titleFontSize\", 18, \"number\", \"titleFontSize (in pixels)\");\r\nModal.prototype.publish(\"titleFontColor\", \"#ffffff\", \"html-color\", \"titleFontColor\");\r\nModal.prototype.publish(\"relativeTargetId\", null, \"string\", \"relativeTargetId\");\r\n\r\nModal.prototype.publish(\"show\", true, \"boolean\", \"show\");\r\nModal.prototype.publish(\"showFade\", true, \"boolean\", \"showFade\");\r\nModal.prototype.publish(\"enableClickFadeToClose\", true, \"boolean\", \"enableClickFadeToClose\");\r\n\r\nModal.prototype.publish(\"minWidth\", \"400px\", \"string\", \"minWidth\");\r\nModal.prototype.publish(\"minHeight\", \"400px\", \"string\", \"minHeight\");\r\nModal.prototype.publish(\"maxWidth\", \"800px\", \"string\", \"maxWidth\");\r\nModal.prototype.publish(\"maxHeight\", \"800px\", \"string\", \"maxHeight\");\r\nModal.prototype.publish(\"fixedWidth\", null, \"string\", \"fixedWidth\");\r\nModal.prototype.publish(\"fixedHeight\", null, \"string\", \"fixedHeight\");\r\nModal.prototype.publish(\"fixedTop\", null, \"string\", \"fixedTop\");\r\nModal.prototype.publish(\"fixedLeft\", null, \"string\", \"fixedLeft\");\r\nModal.prototype.publish(\"overflowX\", \"hidden\", \"string\", \"overflowX\");\r\nModal.prototype.publish(\"overflowY\", \"scroll\", \"string\", \"overflowY\");\r\n","import { IHighlight } from \"@hpcc-js/api\";\r\nimport { Button, Database, IconBar, ProgressBar, Spacer, SVGWidget, Text, TitleBar, ToggleButton, Utility, Widget } from \"@hpcc-js/common\";\r\nimport type { XYAxis } from \"@hpcc-js/chart\";\r\nimport { Table } from \"@hpcc-js/dgrid2\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { Border2 } from \"./Border2\";\r\nimport { Carousel } from \"./Carousel\";\r\nimport { Legend } from \"./Legend\";\r\nimport { Modal } from \"./Modal\";\r\n\r\nimport \"../src/ChartPanel.css\";\r\n\r\nexport class ChartPanel extends Border2 implements IHighlight {\r\n\r\n protected _legend = new Legend(this).enableOverflow(true);\r\n protected _progressBar = new ProgressBar();\r\n protected _autoScale = false;\r\n protected _resolutions = {\r\n tiny: { width: 100, height: 100 },\r\n small: { width: 300, height: 300 }\r\n };\r\n private _modal = new Modal();\r\n private _highlight: boolean;\r\n private _scale: number;\r\n private _orig_size: any;\r\n\r\n private _toggleInfo = new ToggleButton().faChar(\"fa-info-circle\").tooltip(\".Description\")\r\n .selected(false)\r\n .on(\"enabled\", () => {\r\n return this.description() !== \"\";\r\n })\r\n .on(\"click\", () => {\r\n if (this._toggleInfo.selected()) {\r\n this._modal\r\n .title(this.title())\r\n .widget(new Text().text(this.description()))\r\n .show(true)\r\n .render()\r\n ;\r\n\r\n const origCloseFunc = this._modal._close;\r\n this._modal._close = () => {\r\n this._toggleInfo\r\n .selected(false)\r\n .render()\r\n ;\r\n this._modal._close = origCloseFunc;\r\n };\r\n }\r\n })\r\n .on(\"mouseMove\", () => {\r\n /*\r\n this._modal.showPreview(true).render(n => {\r\n n.resize().render();\r\n });\r\n */\r\n })\r\n .on(\"mouseOut\", () => {\r\n /*\r\n if (this._modal.showPreview()) {\r\n this._modal.show(false).showPreview(false).render();\r\n }\r\n */\r\n });\r\n\r\n private _toggleData = new ToggleButton().faChar(\"fa-table\").tooltip(\"Data\")\r\n .on(\"click\", () => {\r\n this.dataVisible(this._toggleData.selected());\r\n this.render();\r\n });\r\n\r\n private _buttonDownload = new Button().faChar(\"fa-download\").tooltip(\"Download\")\r\n .on(\"click\", () => {\r\n this.downloadCSV();\r\n });\r\n\r\n private _buttonDownloadImage = new Button().faChar(\"fa-image\").tooltip(\"Download Image\")\r\n .on(\"click\", () => {\r\n this.downloadPNG();\r\n });\r\n\r\n private _toggleLegend = new ToggleButton().faChar(\"fa-list-ul\").tooltip(\"Legend\")\r\n .selected(false)\r\n .on(\"click\", () => {\r\n const selected = this._toggleLegend.selected();\r\n if (this.legendPosition() === \"bottom\") {\r\n this.showBottom(selected);\r\n } else if (this.legendPosition() === \"right\") {\r\n this.showRight(selected);\r\n }\r\n this.legendVisible(selected);\r\n this.render();\r\n });\r\n\r\n protected _spacer = new Spacer();\r\n\r\n _titleBar = new TitleBar().buttons([this._toggleData, this._buttonDownload, this._buttonDownloadImage, this._spacer, this._toggleLegend]);\r\n\r\n protected _carousel = new Carousel();\r\n protected _table = new Table();\r\n protected _widget: Widget;\r\n\r\n protected _hideLegendToggleList = [\"dgrid_Table\"];\r\n\r\n constructor() {\r\n super();\r\n this._tag = \"div\";\r\n }\r\n\r\n fields(): Database.Field[];\r\n fields(_: Database.Field[]): this;\r\n fields(_?: Database.Field[]): this | Database.Field[] {\r\n if (!arguments.length) return super.fields();\r\n super.fields(_);\r\n this._legend.fields(_);\r\n this.refreshFields();\r\n return this;\r\n }\r\n refreshFields() {\r\n this._widget.fields(this._legend.filteredFields());\r\n this._table.fields(this._legend.filteredFields());\r\n return this;\r\n }\r\n\r\n columns(): string[];\r\n columns(_: string[], asDefault?: boolean): this;\r\n columns(_?: string[], asDefault?: boolean): string[] | this {\r\n if (!arguments.length) return super.columns();\r\n super.columns(_, asDefault);\r\n this._legend.columns(_, asDefault);\r\n this.refreshColumns();\r\n return this;\r\n }\r\n refreshColumns() {\r\n this._widget.columns(this._legend.filteredColumns());\r\n this._table.columns(this._legend.filteredColumns());\r\n return this;\r\n }\r\n\r\n data(_?) {\r\n if (!arguments.length) return super.data();\r\n super.data(_);\r\n this._legend.data(_);\r\n this.refreshData();\r\n return this;\r\n }\r\n refreshData() {\r\n this._widget.data(this._legend.filteredData());\r\n this._table.data(this._legend.filteredData());\r\n return this;\r\n }\r\n\r\n highlight(): boolean;\r\n highlight(_: boolean): this;\r\n highlight(_?: boolean): boolean | this {\r\n if (!arguments.length) return this._highlight;\r\n this._highlight = _;\r\n return this;\r\n }\r\n\r\n startProgress() {\r\n this._progressBar.start();\r\n }\r\n\r\n finishProgress() {\r\n this._progressBar.finish();\r\n }\r\n\r\n buttons(): Widget[];\r\n buttons(_: Widget[]): this;\r\n buttons(_?: Widget[]): this | Widget[] {\r\n if (!arguments.length) return this._titleBar.buttons();\r\n this._titleBar.buttons(_);\r\n return this;\r\n }\r\n\r\n downloadCSV() {\r\n const namePrefix = this.downloadTitle() ? this.downloadTitle() : this.title() ? this.title() : \"data\";\r\n const nameSuffix = this.downloadTimestampSuffix() ? \"_\" + Utility.timestamp() : \"\";\r\n Utility.downloadString(\"CSV\", this._widget.export(\"CSV\"), namePrefix + nameSuffix);\r\n return this;\r\n }\r\n\r\n downloadPNG() {\r\n const widget = this.widget();\r\n if (widget instanceof SVGWidget) {\r\n if (!this.legendVisible()) {\r\n widget.downloadPNG(this.title());\r\n } else {\r\n widget.downloadPNG(this.title(), undefined, this._legend);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n highlightColumn(column?: string): this {\r\n if (column) {\r\n const cssTag = `series-${this.cssTag(column)}`;\r\n this._centerWA.element().selectAll(\".series\")\r\n .each(function () {\r\n const element = d3Select(this);\r\n const highlight = element.classed(cssTag);\r\n element\r\n .classed(\"highlight\", highlight)\r\n .classed(\"lowlight\", !highlight)\r\n ;\r\n })\r\n ;\r\n } else {\r\n this._centerWA.element().selectAll(\".series\")\r\n .classed(\"highlight\", false)\r\n .classed(\"lowlight\", false)\r\n ;\r\n }\r\n return this;\r\n }\r\n\r\n getResponsiveMode(): \"tiny\" | \"small\" | \"regular\" | \"none\" {\r\n if (!this.enableAutoscaling()) return \"none\";\r\n if (!this._autoScale) return \"regular\";\r\n if (this.size().width <= this._resolutions.tiny.width || this.size().height <= this._resolutions.tiny.height) {\r\n return \"tiny\";\r\n } else if (this.size().width <= this._resolutions.small.width || this.size().height <= this._resolutions.small.height) {\r\n return \"small\";\r\n }\r\n return \"regular\";\r\n }\r\n\r\n setOrigSize() {\r\n this._orig_size = JSON.parse(JSON.stringify(this.size()));\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._modal\r\n .target(this.target())\r\n .relativeTargetId(this.id())\r\n ;\r\n\r\n this.top(this._titleBar);\r\n this.center(this._carousel);\r\n\r\n this._legend\r\n .targetWidget(this._widget)\r\n .orientation(\"vertical\")\r\n .title(\"\")\r\n .visible(false)\r\n ;\r\n\r\n this._progressBar.enter(domNode, element);\r\n this.setOrigSize();\r\n }\r\n\r\n preUpdateTiny(element) {\r\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\r\n }\r\n\r\n preUpdateSmall(element) {\r\n const scale_x = this._orig_size.width / this._resolutions.small.width;\r\n const scale_y = this._orig_size.height / this._resolutions.small.height;\r\n this._scale = Math.min(scale_x, scale_y);\r\n const x_is_smaller = this._scale === scale_x;\r\n this.size({\r\n width: x_is_smaller ? this._resolutions.small.width : this._orig_size.width * (1 / this._scale),\r\n height: !x_is_smaller ? this._resolutions.small.height : this._orig_size.height * (1 / this._scale)\r\n });\r\n element.select(\"div.title-icon\").style(\"position\", \"static\");\r\n element.selectAll(\"lhs\").style(\"display\", \"none\");\r\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\r\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\r\n element.style(\"transform\", `scale(${this._scale})`);\r\n }\r\n\r\n preUpdateRegular(element) {\r\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\r\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\r\n element.select(\"div.title-icon\").style(\"position\", \"static\");\r\n element.style(\"transform\", \"translate(0px,0px) scale(1)\");\r\n }\r\n\r\n private _prevdataVisible;\r\n private _prevlegendVisible;\r\n private _prevLegendPosition;\r\n private _prevChartDataFamily;\r\n private _prevChart;\r\n private _prevButtons;\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n if (this._table && this.widget_exists() && this.widget().class().indexOf(\"chart_XYAxis\") >= 0) {\r\n const chart = this.widget() as XYAxis;\r\n this._table.columns().forEach((column, idx) => {\r\n switch (idx === 0 ? chart.xAxisType() : chart.yAxisType()) {\r\n case \"linear\":\r\n case \"log\":\r\n case \"pow\":\r\n this._table.columnType(column, \"number\");\r\n break;\r\n case \"time\":\r\n this._table.columnType(column, \"time\");\r\n break;\r\n case \"ordinal\":\r\n default:\r\n this._table.columnType(column, \"string\");\r\n }\r\n this._table.columnPattern(column, idx === 0 ? chart.xAxisTypeTimePattern() : chart.yAxisTypeTimePattern());\r\n this._table.columnFormat(column, idx === 0 ? chart.xAxisTickFormat() : chart.yAxisTickFormat());\r\n });\r\n }\r\n }\r\n\r\n preUpdate(domNode, element) {\r\n\r\n super.preUpdate(domNode, element);\r\n\r\n if (this._prevLegendPosition !== this.legendPosition()) {\r\n if (this._legend.target() !== null) this._legend.target(null);\r\n if (this._prevLegendPosition !== undefined) {\r\n this.swap(this._prevLegendPosition, this.legendPosition());\r\n } else {\r\n this[this.legendPosition()](this._legend);\r\n }\r\n if (this.legendPosition() === \"right\") {\r\n this.rightOverflowX(\"hidden\");\r\n this.rightOverflowY(\"auto\");\r\n this.bottomOverflowX(\"visible\");\r\n this.bottomOverflowY(\"visible\");\r\n } else {\r\n this.rightOverflowX(\"visible\");\r\n this.rightOverflowY(\"visible\");\r\n this.bottomOverflowX(\"auto\");\r\n this.bottomOverflowY(\"hidden\");\r\n }\r\n this._prevLegendPosition = this.legendPosition();\r\n }\r\n\r\n if (this._prevdataVisible !== this.dataVisible()) {\r\n this._prevdataVisible = this.dataVisible();\r\n this._toggleData.selected(this._prevdataVisible);\r\n this._legend.visible(this._prevlegendVisible && !this._prevdataVisible);\r\n this._carousel.active(this._prevdataVisible ? 1 : 0);\r\n }\r\n\r\n if (this._prevlegendVisible !== this.legendVisible()) {\r\n this._prevlegendVisible = this.legendVisible();\r\n this._toggleLegend.selected(this._prevlegendVisible);\r\n this._legend.visible(this._prevlegendVisible && !this._prevdataVisible);\r\n }\r\n\r\n this._legend.orientation(this.legendPosition() === \"bottom\" ? \"horizontal\" : \"vertical\");\r\n\r\n this.showLeft(!this.left());\r\n\r\n switch (this.getResponsiveMode()) {\r\n case \"tiny\":\r\n this.preUpdateTiny(element);\r\n break;\r\n case \"small\":\r\n this.preUpdateSmall(element);\r\n break;\r\n case \"regular\":\r\n this.preUpdateRegular(element);\r\n break;\r\n }\r\n\r\n const chart = this._widget.classID() === \"composite_MultiChart\" ? this._widget[\"chart\"]() : this._widget;\r\n this._legend.dataFamily(chart._dataFamily || \"any\");\r\n\r\n if (this._prevChartDataFamily !== this._legend.dataFamily()) {\r\n this._prevChartDataFamily = this._legend.dataFamily();\r\n switch (this._prevChartDataFamily) {\r\n case \"any\":\r\n this._toggleLegend.selected(false);\r\n this._legend.visible(false);\r\n break;\r\n }\r\n }\r\n element.style(\"box-shadow\", this.highlight() ? `inset 0px 0px 0px ${this.highlightSize()}px ${this.highlightColor()}` : \"none\");\r\n\r\n if (this._hideLegendToggleList.indexOf(chart.classID()) !== -1) {\r\n this._spacer.visible(false);\r\n this._toggleLegend.visible(false);\r\n } else {\r\n this._spacer.visible(true);\r\n this._toggleLegend.visible(true);\r\n }\r\n if (this._prevChart !== chart) {\r\n this._prevChart = chart;\r\n const widgetIconBar = chart ? chart[\"_titleBar\"] || chart[\"_iconBar\"] : undefined;\r\n if (widgetIconBar && widgetIconBar instanceof IconBar) {\r\n this._prevButtons = this._prevButtons || [...this.buttons()];\r\n const buttons: Widget[] = [\r\n ...widgetIconBar.buttons(),\r\n new Spacer(),\r\n ...this._prevButtons\r\n ];\r\n widgetIconBar.buttons([]).render();\r\n this.buttons(buttons);\r\n } else if (this._prevButtons) {\r\n this.buttons(this._prevButtons);\r\n }\r\n }\r\n\r\n const hiddenButtons = [];\r\n if (!this.dataButtonVisible()) hiddenButtons.push(this._toggleData);\r\n if (!this.downloadButtonVisible()) hiddenButtons.push(this._buttonDownload);\r\n if (!this.downloadImageButtonVisible()) hiddenButtons.push(this._buttonDownloadImage);\r\n if (!this.legendButtonVisible()) hiddenButtons.push(this._toggleLegend);\r\n this._buttonDownloadImage.enabled(this.widget() instanceof SVGWidget);\r\n this._titleBar\r\n .hiddenButtons(hiddenButtons)\r\n .visible(this.titleVisible())\r\n ;\r\n this.topOverlay(this.titleOverlay() || !this.titleVisible());\r\n }\r\n\r\n postUpdate(domNode, element) {\r\n super.postUpdate(domNode, element);\r\n\r\n switch (this.getResponsiveMode()) {\r\n case \"tiny\":\r\n this.postUpdateTiny(element);\r\n break;\r\n case \"small\":\r\n this.postUpdateSmall(element);\r\n break;\r\n case \"regular\":\r\n this.postUpdateRegular(element);\r\n break;\r\n }\r\n }\r\n\r\n postUpdateTiny(element) {\r\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\r\n element.selectAll(\"div.data-count\")\r\n .style(\"visibility\", \"visible\")\r\n .style(\"font-size\", (this.titleIconFontSize() / 3) + \"px\")\r\n .style(\"line-height\", (this.titleIconFontSize() / 3) + \"px\")\r\n .style(\"left\", this.titleIconFontSize() + \"px\")\r\n .text(this.data().length)\r\n ;\r\n element.style(\"transform\", \"translate(0px,0px) scale(1)\");\r\n const iconDiv = element.selectAll(\"div.title-icon\");\r\n const _node = iconDiv.node();\r\n const _container = element.node().parentElement;\r\n const containerRect = _container.getBoundingClientRect();\r\n if (_node) {\r\n const rect = iconDiv.node().getBoundingClientRect();\r\n const icon_top = containerRect.height / 2;\r\n iconDiv\r\n .style(\"position\", \"absolute\")\r\n .style(\"left\", `calc(50% - ${rect.width / 2}px)`)\r\n .style(\"top\", `${icon_top - (rect.height / 2)}px`)\r\n ;\r\n element.selectAll(\"div.data-count\")\r\n .style(\"position\", \"absolute\")\r\n .style(\"left\", `calc(50% + ${rect.width / 2}px)`)\r\n .style(\"top\", `${icon_top - (rect.height / 2)}px`)\r\n ;\r\n }\r\n }\r\n\r\n postUpdateSmall(element) {\r\n element.selectAll(\"lhs\").style(\"display\", \"none\"); // TODO: a bug in Border2?\r\n element.selectAll(\"div.title-icon\").style(\"position\", \"static\");\r\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\r\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\r\n const rect = element.node().getBoundingClientRect();\r\n const parentRect = element.node().parentElement.getBoundingClientRect();\r\n element.style(\"transform\", `translate(${parentRect.x - rect.x}px, ${parentRect.y - rect.y}px) scale(${this._scale})`);\r\n }\r\n\r\n postUpdateRegular(element) {\r\n element.selectAll(\"div.title-icon\").style(\"position\", \"static\");\r\n element.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\r\n element.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\r\n }\r\n\r\n exit(domNode, element) {\r\n this._progressBar.exit(domNode, element);\r\n\r\n this.right(null);\r\n this._legend.target(null);\r\n this.center(null);\r\n this._carousel.target(null);\r\n this.top(null);\r\n this._titleBar.target(null);\r\n\r\n this._modal.target(null);\r\n\r\n delete this._prevChart;\r\n delete this._prevButtons;\r\n delete this._prevChartDataFamily;\r\n delete this._prevPos;\r\n delete this._prevdataVisible;\r\n delete this._prevlegendVisible;\r\n\r\n super.exit(domNode, element);\r\n }\r\n\r\n // Event Handlers ---\r\n // Events ---\r\n click(row, column, selected) {\r\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\r\n }\r\n\r\n dblclick(row, column, selected) {\r\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\r\n }\r\n\r\n vertex_click(row, col, sel, more) {\r\n if (more && more.vertex) {\r\n // console.log(\"Vertex click: \" + more.vertex.id());\r\n }\r\n }\r\n\r\n vertex_dblclick(row, col, sel, more) {\r\n if (more && more.vertex) {\r\n // console.log(\"Vertex double click: \" + more.vertex.id());\r\n }\r\n }\r\n\r\n edge_click(row, col, sel, more) {\r\n if (more && more.edge) {\r\n // console.log(\"Edge click: \" + more.edge.id());\r\n }\r\n }\r\n\r\n edge_dblclick(row, col, sel, more) {\r\n if (more && more.edge) {\r\n // console.log(\"Edge double click: \" + more.edge.id());\r\n }\r\n }\r\n}\r\nChartPanel.prototype._class += \" layout_ChartPanel\";\r\n\r\nexport interface ChartPanel {\r\n title(): string;\r\n title(_: string): this;\r\n titleVisible(): boolean;\r\n titleVisible(_: boolean): this;\r\n titleOverlay(): boolean;\r\n titleOverlay(_: boolean): this;\r\n title_exists(): boolean;\r\n titleFontSize(): number;\r\n titleFontSize(_: number): this;\r\n titleFontSize_exists(): boolean;\r\n titleIconFontSize(): number;\r\n titleIconFontSize(_: number): this;\r\n titleIconFontSize_exists(): boolean;\r\n dataVisible(): boolean;\r\n dataVisible(_: boolean): this;\r\n dataButtonVisible(): boolean;\r\n dataButtonVisible(_: boolean): this;\r\n downloadButtonVisible(): boolean;\r\n downloadButtonVisible(_: boolean): this;\r\n downloadImageButtonVisible(): boolean;\r\n downloadImageButtonVisible(_: boolean): this;\r\n downloadTitle(): string;\r\n downloadTitle(_: string): this;\r\n downloadTimestampSuffix(): boolean;\r\n downloadTimestampSuffix(_: boolean): this;\r\n legendVisible(): boolean;\r\n legendVisible(_: boolean): this;\r\n legendButtonVisible(): boolean;\r\n legendButtonVisible(_: boolean): this;\r\n legendPosition(): \"right\" | \"bottom\";\r\n legendPosition(_: \"right\" | \"bottom\"): this;\r\n description(): string;\r\n description(_: string): this;\r\n description_exists(): boolean;\r\n widget(): Widget;\r\n widget(_: Widget): this;\r\n widget_exists(): boolean;\r\n enableAutoscaling(): boolean;\r\n enableAutoscaling(_: boolean): this;\r\n enableAutoscaling_exists(): boolean;\r\n highlightSize(): number;\r\n highlightSize(_: number): this;\r\n highlightSize_exists(): boolean;\r\n highlightColor(): string;\r\n highlightColor(_: string): this;\r\n highlightColor_exists(): boolean;\r\n}\r\n\r\nChartPanel.prototype.publishReset();\r\nChartPanel.prototype.publishProxy(\"title\", \"_titleBar\");\r\nChartPanel.prototype.publish(\"titleVisible\", true, \"boolean\");\r\nChartPanel.prototype.publish(\"titleOverlay\", false, \"boolean\");\r\nChartPanel.prototype.publishProxy(\"titleIcon\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"titleIconFont\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"titleFont\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"titleIconFontSize\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"titleFontSize\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"description\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"descriptionFont\", \"_titleBar\");\r\nChartPanel.prototype.publishProxy(\"descriptionFontSize\", \"_titleBar\");\r\nChartPanel.prototype.publish(\"dataVisible\", false, \"boolean\", \"Show data table\");\r\nChartPanel.prototype.publish(\"dataButtonVisible\", true, \"boolean\", \"Show data table button\");\r\nChartPanel.prototype.publish(\"downloadButtonVisible\", true, \"boolean\", \"Show data download button\");\r\nChartPanel.prototype.publish(\"downloadImageButtonVisible\", false, \"boolean\", \"Show image download button\");\r\nChartPanel.prototype.publish(\"downloadTitle\", \"\", \"string\", \"File name when downloaded\");\r\nChartPanel.prototype.publish(\"downloadTimestampSuffix\", true, \"boolean\", \"Use timestamp as file name suffix\");\r\nChartPanel.prototype.publish(\"legendVisible\", false, \"boolean\", \"Show legend\");\r\nChartPanel.prototype.publish(\"legendButtonVisible\", true, \"boolean\", \"Show legend button\");\r\nChartPanel.prototype.publish(\"legendPosition\", \"right\", \"set\", \"Position of legend\", [\"right\", \"bottom\"]);\r\nChartPanel.prototype.publishProxy(\"legend_labelMaxWidth\", \"_legend\", \"labelMaxWidth\");\r\nChartPanel.prototype.publishProxy(\"legend_showSeriesTotal\", \"_legend\", \"showSeriesTotal\");\r\nChartPanel.prototype.publishProxy(\"legend_showLegendTotal\", \"_legend\", \"showLegendTotal\");\r\nChartPanel.prototype.publishProxy(\"legend_itemPadding\", \"_legend\", \"itemPadding\");\r\nChartPanel.prototype.publishProxy(\"legend_shapeRadius\", \"_legend\", \"shapeRadius\");\r\nChartPanel.prototype.publishProxy(\"legend_symbolType\", \"_legend\", \"symbolType\");\r\nChartPanel.prototype.publishProxy(\"legend_labelAlign\", \"_legend\", \"labelAlign\");\r\nChartPanel.prototype.publish(\"widget\", null, \"widget\", \"Widget\", undefined, { render: false });\r\nChartPanel.prototype.publish(\"enableAutoscaling\", false, \"boolean\");\r\nChartPanel.prototype.publish(\"highlightSize\", 4, \"number\");\r\nChartPanel.prototype.publish(\"highlightColor\", \"#e67e22\", \"html-color\");\r\nChartPanel.prototype.publishProxy(\"progress_halfLife\", \"_progressBar\", \"halfLife\");\r\nChartPanel.prototype.publishProxy(\"progress_decay\", \"_progressBar\", \"decay\");\r\nChartPanel.prototype.publishProxy(\"progress_size\", \"_progressBar\", \"size\");\r\nChartPanel.prototype.publishProxy(\"progress_color\", \"_progressBar\", \"color\");\r\nChartPanel.prototype.publishProxy(\"progress_blurBar\", \"_progressBar\", \"blurBar\");\r\nChartPanel.prototype.publishProxy(\"progress_blurSize\", \"_progressBar\", \"blurSize\");\r\nChartPanel.prototype.publishProxy(\"progress_blurColor\", \"_progressBar\", \"blurColor\");\r\nChartPanel.prototype.publishProxy(\"progress_blurOpacity\", \"_progressBar\", \"blurOpacity\");\r\n\r\nChartPanel.prototype.widget = function (_?) {\r\n if (!arguments.length) return this._widget;\r\n this._carousel.widgets([_, this._table]);\r\n this._widget = _;\r\n this._widget\r\n .fields(this._legend.filteredFields())\r\n .data(this._legend.filteredData())\r\n ;\r\n\r\n const context = this;\r\n const tmpAny = this._widget as any;\r\n tmpAny.click = function () {\r\n context.click.apply(context, arguments);\r\n };\r\n tmpAny.dblclick = function () {\r\n context.dblclick.apply(context, arguments);\r\n };\r\n tmpAny.vertex_click = function () {\r\n context.vertex_click.apply(context, arguments);\r\n };\r\n tmpAny.vertex_dblclick = function () {\r\n context.vertex_dblclick.apply(context, arguments);\r\n };\r\n tmpAny.edge_click = function () {\r\n context.edge_click.apply(context, arguments);\r\n };\r\n tmpAny.edge_dblclick = function () {\r\n context.edge_dblclick.apply(context, arguments);\r\n };\r\n return this;\r\n};\r\n","import { HTMLWidget } from \"@hpcc-js/common\";\r\nimport { select as d3Select } from \"d3-selection\";\r\n\r\nimport \"../src/FlexGrid.css\";\r\n\r\nexport class FlexGrid extends HTMLWidget {\r\n constructor() {\r\n super();\r\n }\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n d3Select(domNode.parentNode)\r\n .style(\"height\", \"100%\")\r\n .style(\"width\", \"100%\")\r\n ;\r\n }\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n const context = this;\r\n\r\n const cachedSizes = [];\r\n this.updateFlexParent(element);\r\n const listItems = element.selectAll(\".FlexGrid-list-item\").data(this.widgets(), w => w.id());\r\n listItems.enter()\r\n .append(\"div\")\r\n .classed(\"FlexGrid-list-item\", true)\r\n .each(function (w) {\r\n w.target(this);\r\n })\r\n .merge(listItems)\r\n .style(\"min-height\", this.itemMinHeight() + \"px\")\r\n .style(\"min-width\", this.itemMinWidth() + \"px\")\r\n .style(\"flex-basis\", (n, i) => {\r\n const flexBasis = this.widgetsFlexBasis()[i];\r\n return typeof flexBasis !== \"undefined\" ? flexBasis : this.flexBasis();\r\n })\r\n .style(\"flex-grow\", (n, i) => {\r\n const flexGrow = this.widgetsFlexGrow()[i];\r\n return typeof flexGrow !== \"undefined\" ? flexGrow : this.flexGrow();\r\n })\r\n .style(\"border-width\", this.borderWidth() + \"px\")\r\n .style(\"border-color\", this.itemBorderColor())\r\n .each(function () {\r\n this.firstChild.style.display = \"none\";\r\n })\r\n .each(function () {\r\n const rect = this.getBoundingClientRect();\r\n cachedSizes.push([\r\n rect.width,\r\n rect.height\r\n ]);\r\n })\r\n .each(function (w, i) {\r\n this.firstChild.style.display = \"block\";\r\n w.resize({\r\n width: cachedSizes[i][0] - (2 * context.borderWidth()),\r\n height: cachedSizes[i][1] - (2 * context.borderWidth())\r\n });\r\n })\r\n ;\r\n listItems.exit().remove();\r\n }\r\n exit(domNode, element) {\r\n super.exit(domNode, element);\r\n }\r\n updateFlexParent(element) {\r\n element\r\n .style(\"height\", \"100%\")\r\n .style(\"flex-direction\", this.orientation() === \"horizontal\" ? \"row\" : \"column\")\r\n .style(\"flex-wrap\", this.flexWrap())\r\n .style(\"align-items\", this.alignItems())\r\n .style(\"align-content\", this.alignContent())\r\n .style(\"overflow-x\", () => {\r\n if (this.forceXScroll() || (this.orientation() === \"horizontal\" && this.flexWrap() === \"nowrap\" && !this.disableScroll())) {\r\n return \"scroll\";\r\n }\r\n return \"hidden\";\r\n })\r\n .style(\"overflow-y\", () => {\r\n if (this.forceYScroll() || (this.orientation() === \"vertical\" && this.flexWrap() === \"nowrap\" && !this.disableScroll())) {\r\n return \"scroll\";\r\n }\r\n return \"hidden\";\r\n })\r\n ;\r\n }\r\n}\r\nFlexGrid.prototype._class += \" layout_FlexGrid\";\r\n\r\nexport interface FlexGrid {\r\n widgets(): any;\r\n widgets(_: any): this;\r\n orientation(): \"horizontal\" | \"vertical\";\r\n orientation(_: \"horizontal\" | \"vertical\"): this;\r\n flexWrap(): \"nowrap\" | \"wrap\" | \"wrap-reverse\";\r\n flexWrap(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\"): this;\r\n itemMinHeight(): number;\r\n itemMinHeight(_: number): this;\r\n itemMinWidth(): number;\r\n itemMinWidth(_: number): this;\r\n alignItems(): \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\";\r\n alignItems(_: \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\"): this;\r\n alignContent(): \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\" | \"space-between\" | \"space-around\";\r\n alignContent(_: \"flex-start\" | \"center\" | \"flex-end\" | \"stretch\" | \"space-between\" | \"space-around\"): this;\r\n itemBorderColor(): string;\r\n itemBorderColor(_: string): this;\r\n borderWidth(): number;\r\n borderWidth(_: number): this;\r\n flexGrow(): number;\r\n flexGrow(_: number): this;\r\n widgetsFlexGrow(): number[];\r\n widgetsFlexGrow(_: number[]): this;\r\n flexBasis(): string;\r\n flexBasis(_: string): this;\r\n widgetsFlexBasis(): string[];\r\n widgetsFlexBasis(_: string[]): this;\r\n disableScroll(): boolean;\r\n disableScroll(_: boolean): this;\r\n forceXScroll(): boolean;\r\n forceXScroll(_: boolean): this;\r\n forceYScroll(): boolean;\r\n forceYScroll(_: boolean): this;\r\n}\r\n\r\nFlexGrid.prototype.publish(\"itemBorderColor\", \"transparent\", \"html-color\", \"Color of list item borders\");\r\nFlexGrid.prototype.publish(\"borderWidth\", 0, \"number\", \"Width of list item borders (pixels)\");\r\nFlexGrid.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Controls the flex-direction of the list items\", [\"horizontal\", \"vertical\"]);\r\nFlexGrid.prototype.publish(\"flexWrap\", \"wrap\", \"set\", \"Controls the line wrap when overflow occurs\", [\"nowrap\", \"wrap\", \"wrap-reverse\"]);\r\nFlexGrid.prototype.publish(\"disableScroll\", false, \"boolean\", \"If false, scrollbar will show (when flexWrap is set to 'nowrap')\", null, { disable: (w: any) => w.flexWrap() !== \"nowrap\" });\r\nFlexGrid.prototype.publish(\"forceXScroll\", false, \"boolean\", \"If true, horzontal scrollbar will show\");\r\nFlexGrid.prototype.publish(\"forceYScroll\", false, \"boolean\", \"If true, vertical scrollbar will show\");\r\nFlexGrid.prototype.publish(\"itemMinHeight\", 64, \"number\", \"Minimum height of a list item (pixels)\");\r\nFlexGrid.prototype.publish(\"itemMinWidth\", 64, \"number\", \"Minimum width of a list item (pixels)\");\r\nFlexGrid.prototype.publish(\"alignItems\", \"stretch\", \"set\", \"Controls normal alignment of items\", [\"flex-start\", \"center\", \"flex-end\", \"stretch\"]);\r\nFlexGrid.prototype.publish(\"alignContent\", \"stretch\", \"set\", \"Controls normal alignment of item rows\", [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"space-between\", \"space-around\"]);\r\nFlexGrid.prototype.publish(\"flexGrow\", 1, \"number\", \"Default flex-grow style for all list items\");\r\nFlexGrid.prototype.publish(\"flexBasis\", \"10%\", \"string\", \"Default flex-basis style for all list items\");\r\nFlexGrid.prototype.publish(\"widgetsFlexGrow\", [], \"array\", \"Array of flex-grow values keyed on the widgets array\");\r\nFlexGrid.prototype.publish(\"widgetsFlexBasis\", [], \"array\", \"Array of flex-basis values keyed on the widgets array\");\r\nFlexGrid.prototype.publish(\"widgets\", [], \"widgetArray\", \"Array of widgets to be rendered as list items\");\r\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\";\r\nimport * as _GridList from \"grid-list\";\r\nimport { Cell } from \"./Cell\";\r\n\r\nimport \"../src/Grid.css\";\r\n\r\nconst GridList = (_GridList && _GridList.default) || _GridList;\r\n\r\nexport type ICellPosition = [number, number, number, number];\r\n\r\nexport class Grid extends HTMLWidget {\r\n divItems;\r\n\r\n gridList;\r\n items;\r\n itemsMap;\r\n origItems;\r\n cellWidth;\r\n cellHeight;\r\n dragItem;\r\n dragItemPos;\r\n\r\n _d3Drag;\r\n _d3DragResize;\r\n _selectionBag;\r\n _scrollBarWidth;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n this._selectionBag = new Utility.Selection(this);\r\n\r\n this.content([]);\r\n }\r\n\r\n getDimensions() {\r\n const size = { width: 0, height: 0 };\r\n this.content().forEach(function (cell) {\r\n if (size.width < cell.gridCol() + cell.gridColSpan()) {\r\n size.width = cell.gridCol() + cell.gridColSpan();\r\n }\r\n if (size.height < cell.gridRow() + cell.gridRowSpan()) {\r\n size.height = cell.gridRow() + cell.gridRowSpan();\r\n }\r\n }, this);\r\n return size;\r\n }\r\n\r\n clearContent(widget) {\r\n this.content(this.content().filter(function (contentWidget) {\r\n if (!widget) {\r\n contentWidget.target(null);\r\n return false;\r\n }\r\n let w: any = contentWidget;\r\n while (w) {\r\n if (widget === w) {\r\n contentWidget.target(null);\r\n return false;\r\n }\r\n w = w.widget ? w.widget() : null;\r\n }\r\n return true;\r\n }));\r\n }\r\n\r\n setContent(row, col, widget, title?, rowSpan?, colSpan?) {\r\n rowSpan = rowSpan || 1;\r\n colSpan = colSpan || 1;\r\n title = title || \"\";\r\n this.content(this.content().filter(function (contentWidget) {\r\n if (contentWidget.gridRow() === row && contentWidget.gridCol() === col) {\r\n contentWidget.target(null);\r\n return false;\r\n }\r\n return true;\r\n }));\r\n if (widget) {\r\n const cell = new Cell()\r\n .gridRow(row)\r\n .gridCol(col)\r\n .widget(widget)\r\n .title(title)\r\n .gridRowSpan(rowSpan)\r\n .gridColSpan(colSpan)\r\n ;\r\n this.content().push(cell);\r\n }\r\n return this;\r\n }\r\n\r\n sortedContent() {\r\n return this.content().sort(function (l, r) {\r\n if (l.gridRow() === r.gridRow()) {\r\n return l.gridCol() - r.gridCol();\r\n }\r\n return l.gridRow() - r.gridRow();\r\n });\r\n }\r\n\r\n getCell(row, col) {\r\n let retVal = null;\r\n this.content().some(function (cell) {\r\n if (row >= cell.gridRow() && row < cell.gridRow() + cell.gridRowSpan() &&\r\n col >= cell.gridCol() && col < cell.gridCol() + cell.gridColSpan()) {\r\n retVal = cell;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return retVal;\r\n }\r\n\r\n getWidgetCell(id) {\r\n let retVal = null;\r\n this.content().some(function (cell) {\r\n if (cell.widget().id() === id) {\r\n retVal = cell;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return retVal;\r\n }\r\n\r\n getContent(id) {\r\n let retVal = null;\r\n this.content().some(function (cell) {\r\n if (cell.widget().id() === id) {\r\n retVal = cell.widget();\r\n return true;\r\n }\r\n return false;\r\n });\r\n return retVal;\r\n }\r\n\r\n cellToGridItem(cell) {\r\n return {\r\n x: cell.gridCol(),\r\n y: cell.gridRow(),\r\n w: cell.gridColSpan(),\r\n h: cell.gridRowSpan(),\r\n id: cell.id(),\r\n cell\r\n };\r\n }\r\n\r\n gridItemToCell(item) {\r\n item.cell\r\n .gridCol(item.x)\r\n .gridRow(item.y)\r\n .gridColSpan(item.w)\r\n .gridRowSpan(item.h)\r\n ;\r\n }\r\n\r\n resetItemsPos() {\r\n this.origItems.forEach(function (origItem) {\r\n const item = this.itemsMap[origItem.id];\r\n item.x = origItem.x;\r\n item.y = origItem.y;\r\n }, this);\r\n }\r\n\r\n initGridList() {\r\n this.itemsMap = {};\r\n this.items = this.content().map(function (cell) {\r\n const retVal = this.cellToGridItem(cell);\r\n this.itemsMap[retVal.id] = retVal;\r\n return retVal;\r\n }, this);\r\n this.origItems = this.content().map(this.cellToGridItem);\r\n this.gridList = new GridList(this.items, {\r\n direction: this.snapping(),\r\n lanes: this.snapping() === \"horizontal\" ? this.snappingRows() : this.snappingColumns()\r\n });\r\n }\r\n\r\n killGridList() {\r\n this.gridList = null;\r\n delete this.items;\r\n delete this.itemsMap;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n\r\n this._scrollBarWidth = Platform.getScrollbarWidth();\r\n\r\n const context = this;\r\n this._d3Drag = d3Drag()\r\n .subject(function (_d) {\r\n const d = context.cellToGridItem(_d);\r\n return { x: d.x * context.cellWidth, y: d.y * context.cellHeight };\r\n })\r\n .on(\"start\", function (_d: any) {\r\n if (!context.designMode()) return;\r\n d3Event().sourceEvent.stopPropagation();\r\n context.initGridList();\r\n const d = context.itemsMap[_d.id()];\r\n context.dragItem = element.append(\"div\")\r\n .attr(\"class\", \"dragging\")\r\n .style(\"transform\", function () { return \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\"; })\r\n .style(\"width\", function () { return d.w * context.cellWidth - context.gutter() + \"px\"; })\r\n .style(\"height\", function () { return d.h * context.cellHeight - context.gutter() + \"px\"; })\r\n ;\r\n context.selectionBagClick(_d);\r\n })\r\n .on(\"drag\", function (_d: any) {\r\n if (!context.designMode()) return;\r\n const event = d3Event();\r\n event.sourceEvent.stopPropagation();\r\n const d = context.itemsMap[_d.id()];\r\n if (event.x < 0) {\r\n event.x = 0;\r\n }\r\n if (event.x + d.w * context.cellWidth > context.snappingColumns() * context.cellWidth) {\r\n event.x = context.snappingColumns() * context.cellWidth - d.w * context.cellWidth;\r\n }\r\n if (event.y < 0) {\r\n event.y = 0;\r\n }\r\n if (event.y + d.h * context.cellWidth > context.snappingRows() * context.cellWidth) {\r\n event.y = context.snappingRows() * context.cellWidth - d.h * context.cellWidth;\r\n }\r\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))];\r\n if (d.x !== pos[0] || d.y !== pos[1]) {\r\n if (context.snapping() !== \"none\") {\r\n context.resetItemsPos();\r\n context.gridList.moveItemToPosition(d, pos);\r\n } else {\r\n d.x = pos[0];\r\n d.y = pos[1];\r\n }\r\n if (_d.gridCol() !== d.x || _d.gridRow() !== d.y) {\r\n context.items.forEach(context.gridItemToCell);\r\n context.updateGrid(false, 100);\r\n }\r\n }\r\n context.dragItem\r\n .style(\"transform\", function () { return \"translate(\" + event.x + \"px, \" + event.y + \"px)\"; })\r\n .style(\"width\", function () { return d.w * context.cellWidth + \"px\"; })\r\n .style(\"height\", function () { return d.h * context.cellHeight + \"px\"; })\r\n ;\r\n })\r\n .on(\"end\", function () {\r\n if (!context.designMode()) return;\r\n d3Event().sourceEvent.stopPropagation();\r\n context.dragItem.remove();\r\n context.dragItem = null;\r\n context.killGridList();\r\n })\r\n ;\r\n\r\n this._d3DragResize = d3Drag()\r\n .subject(function (_d) {\r\n const d = context.cellToGridItem(_d);\r\n return { x: (d.x + d.w - 1) * context.cellWidth, y: (d.y + d.h - 1) * context.cellHeight };\r\n })\r\n .on(\"start\", function (_d: any) {\r\n if (!context.designMode()) return;\r\n d3Event().sourceEvent.stopPropagation();\r\n context.initGridList();\r\n const d = context.itemsMap[_d.id()];\r\n context.dragItem = element.append(\"div\")\r\n .attr(\"class\", \"resizing\")\r\n .style(\"transform\", function () { return \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\"; })\r\n .style(\"width\", function () { return d.w * context.cellWidth - context.gutter() + \"px\"; })\r\n .style(\"height\", function () { return d.h * context.cellHeight - context.gutter() + \"px\"; })\r\n ;\r\n context.dragItemPos = { x: d.x, y: d.y };\r\n })\r\n .on(\"drag\", function (_d: any) {\r\n if (!context.designMode()) return;\r\n const event = d3Event();\r\n event.sourceEvent.stopPropagation();\r\n const d = context.itemsMap[_d.id()];\r\n const pos = [Math.max(0, Math.round(event.x / context.cellWidth)), Math.max(0, Math.round(event.y / context.cellHeight))];\r\n const size = {\r\n w: Math.max(1, pos[0] - d.x + 1),\r\n h: Math.max(1, pos[1] - d.y + 1)\r\n };\r\n if (d.w !== size.w || d.h !== size.h) {\r\n if (context.snapping() !== \"none\") {\r\n context.resetItemsPos();\r\n context.gridList.resizeItem(d, size);\r\n } else {\r\n d.w = size.w;\r\n d.h = size.h;\r\n }\r\n if (_d.gridColSpan() !== d.w || _d.gridRowSpan() !== d.h) {\r\n context.items.forEach(context.gridItemToCell);\r\n context.updateGrid(d.id, 100);\r\n }\r\n }\r\n context.dragItem\r\n .style(\"width\", function () { return (-d.x + 1) * context.cellWidth + event.x - context.gutter() + \"px\"; })\r\n .style(\"height\", function () { return (-d.y + 1) * context.cellHeight + event.y - context.gutter() + \"px\"; })\r\n ;\r\n })\r\n .on(\"end\", function () {\r\n if (!context.designMode()) return;\r\n d3Event().sourceEvent.stopPropagation();\r\n context.dragItem.remove();\r\n context.dragItem = null;\r\n context.killGridList();\r\n })\r\n ;\r\n }\r\n\r\n updateGrid(resize, transitionDuration: number = 0, _noRender: boolean = false) {\r\n transitionDuration = transitionDuration || 0;\r\n const context = this;\r\n this.divItems\r\n .classed(\"draggable\", this.designMode())\r\n .transition().duration(transitionDuration)\r\n .style(\"left\", function (d) { return d.gridCol() * context.cellWidth + context.gutter() / 2 + \"px\"; })\r\n .style(\"top\", function (d) { return d.gridRow() * context.cellHeight + context.gutter() / 2 + \"px\"; })\r\n .style(\"width\", function (d) { return d.gridColSpan() * context.cellWidth - context.gutter() + \"px\"; })\r\n .style(\"height\", function (d) { return d.gridRowSpan() * context.cellHeight - context.gutter() + \"px\"; })\r\n .on(\"end\", function (d) {\r\n d\r\n .surfaceShadow_default(context.surfaceShadow())\r\n .surfacePadding_default(context.surfacePadding())\r\n .surfaceBorderWidth_default(context.surfaceBorderWidth())\r\n .surfaceBackgroundColor_default(context.surfaceBackgroundColor())\r\n ;\r\n\r\n if (resize === true || resize === d.id()) {\r\n d\r\n .resize()\r\n .lazyRender()\r\n ;\r\n }\r\n })\r\n ;\r\n }\r\n\r\n update(domNode, element2) {\r\n super.update(domNode, element2);\r\n\r\n this._placeholderElement.style(\"overflow-x\", this.fitTo() === \"width\" ? \"hidden\" : null);\r\n this._placeholderElement.style(\"overflow-y\", this.fitTo() === \"width\" ? \"scroll\" : null);\r\n const dimensions = this.getDimensions();\r\n const clientWidth = this.width() - (this.fitTo() === \"width\" ? this._scrollBarWidth : 0);\r\n this.cellWidth = clientWidth / dimensions.width;\r\n this.cellHeight = this.fitTo() === \"all\" ? this.height() / dimensions.height : this.cellWidth;\r\n if (this.designMode()) {\r\n const cellLaneRatio = Math.min(this.width() / this.snappingColumns(), this.height() / this.snappingRows());\r\n const laneWidth = Math.floor(cellLaneRatio);\r\n this.cellWidth = laneWidth;\r\n this.cellHeight = this.cellWidth;\r\n }\r\n\r\n // Grid ---\r\n const context = this;\r\n const divItems = element2.selectAll(\"#\" + this.id() + \" > .ddCell\").data(this.content(), function (d) { return d.id(); });\r\n this.divItems = divItems.enter().append(\"div\")\r\n .attr(\"class\", \"ddCell\")\r\n .each(function (d) {\r\n d.target(this);\r\n d.__grid_watch = d.monitor(function (key, newVal, oldVal) {\r\n if (context._renderCount && (key === \"snapping\" || key.indexOf(\"grid\") === 0) && newVal !== oldVal) {\r\n if (!context.gridList) {\r\n // API Call (only needed when not dragging) ---\r\n context.initGridList();\r\n if (context.snapping() !== \"none\") {\r\n context.gridList.resizeGrid(context.snapping() === \"horizontal\" ? context.snappingRows() : context.snappingColumns());\r\n }\r\n context.items.forEach(context.gridItemToCell);\r\n context.updateGrid(d.id(), 100);\r\n context.killGridList();\r\n }\r\n }\r\n });\r\n const element = d3Select(this);\r\n element.append(\"div\")\r\n .attr(\"class\", \"resizeHandle\")\r\n .call(context._d3DragResize)\r\n .append(\"div\")\r\n .attr(\"class\", \"resizeHandleDisplay\")\r\n ;\r\n }).merge(divItems)\r\n ;\r\n this.divItems.each(function (d) {\r\n const element = d3Select(this);\r\n if (context.designMode()) {\r\n element.call(context._d3Drag);\r\n } else {\r\n element\r\n .on(\"mousedown.drag\", null)\r\n .on(\"touchstart.drag\", null)\r\n ;\r\n }\r\n });\r\n this.divItems.select(\".resizeHandle\")\r\n .style(\"display\", this.designMode() ? null : \"none\")\r\n ;\r\n\r\n this.updateGrid(true);\r\n divItems.exit()\r\n .each(function (d) {\r\n d.target(null);\r\n if (d.__grid_watch) {\r\n d.__grid_watch.remove();\r\n }\r\n })\r\n .remove()\r\n ;\r\n\r\n // Snapping ---\r\n const lanesBackground = element2.selectAll(\"#\" + this.id() + \" > .laneBackground\").data(this.designMode() ? [\"\"] : []);\r\n lanesBackground.enter().insert(\"div\", \":first-child\")\r\n .attr(\"class\", \"laneBackground\")\r\n .style(\"left\", \"1px\")\r\n .style(\"top\", \"1px\")\r\n .on(\"click\", function () {\r\n context.selectionBagClear();\r\n })\r\n .merge(lanesBackground)\r\n .style(\"width\", (this.snappingColumns() * this.cellWidth) + \"px\")\r\n .style(\"height\", (this.snappingRows() * this.cellHeight) + \"px\")\r\n ;\r\n lanesBackground.exit()\r\n .each(function () {\r\n context.selectionBagClear();\r\n })\r\n .remove()\r\n ;\r\n\r\n const lanes = element2.selectAll(\"#\" + this.id() + \" > .lane\").data(this.designMode() ? [\"\"] : []);\r\n lanes.enter().append(\"div\")\r\n .attr(\"class\", \"lane\")\r\n .style(\"left\", \"1px\")\r\n .style(\"top\", \"1px\")\r\n ;\r\n lanes\r\n .style(\"display\", this.showLanes() ? null : \"none\")\r\n .style(\"width\", (this.snappingColumns() * this.cellWidth) + \"px\")\r\n .style(\"height\", (this.snappingRows() * this.cellHeight) + \"px\")\r\n .style(\"background-image\", \"linear-gradient(to right, grey 1px, transparent 1px), linear-gradient(to bottom, grey 1px, transparent 1px)\")\r\n .style(\"background-size\", this.cellWidth + \"px \" + this.cellHeight + \"px\")\r\n ;\r\n lanes.exit()\r\n .remove()\r\n ;\r\n }\r\n\r\n exit(domNode, element) {\r\n this.content().forEach(w => w.target(null));\r\n super.exit(domNode, element);\r\n }\r\n\r\n _createSelectionObject(d) {\r\n return {\r\n _id: d._id,\r\n element: () => {\r\n return d._element;\r\n },\r\n widget: d\r\n };\r\n }\r\n\r\n selection(_) {\r\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\r\n this._selectionBag.set(_.map(function (row) {\r\n return this._createSelectionObject(row);\r\n }, this));\r\n return this;\r\n }\r\n\r\n selectionBagClear() {\r\n if (!this._selectionBag.isEmpty()) {\r\n this._selectionBag.clear();\r\n this.postSelectionChange();\r\n }\r\n }\r\n\r\n selectionBagClick(d) {\r\n if (d !== null) {\r\n const selectionObj = this._createSelectionObject(d);\r\n if (d3Event().sourceEvent.ctrlKey) {\r\n if (this._selectionBag.isSelected(selectionObj)) {\r\n this._selectionBag.remove(selectionObj);\r\n this.postSelectionChange();\r\n } else {\r\n this._selectionBag.append(selectionObj);\r\n this.postSelectionChange();\r\n }\r\n } else {\r\n const selected = this._selectionBag.get();\r\n if (selected.length === 1 && selected[0]._id === selectionObj._id) {\r\n this.selectionBagClear();\r\n } else {\r\n this._selectionBag.set([selectionObj]);\r\n }\r\n this.postSelectionChange();\r\n }\r\n }\r\n }\r\n\r\n postSelectionChange() {\r\n }\r\n\r\n applyLayout(layoutArr: ICellPosition[]) {\r\n this.divItems.each((d, i) => {\r\n if (layoutArr[i]) {\r\n const [x, y, w, h] = layoutArr[i];\r\n d\r\n .gridCol(x)\r\n .gridRow(y)\r\n .gridColSpan(w)\r\n .gridRowSpan(h)\r\n ;\r\n }\r\n });\r\n this.updateGrid(true);\r\n }\r\n\r\n vizActivation(elem) {\r\n }\r\n}\r\nGrid.prototype._class += \" layout_Grid\";\r\n\r\nexport interface Grid {\r\n designMode(): boolean;\r\n designMode(_: boolean): this;\r\n showLanes(): boolean;\r\n showLanes(_: boolean): this;\r\n fitTo(): string;\r\n fitTo(_: string): this;\r\n\r\n snapping(): string;\r\n snapping(_: string): this;\r\n snappingColumns(): number;\r\n snappingColumns(_: number): this;\r\n snappingRows(): number;\r\n snappingRows(_: number): this;\r\n snappingColumns_default(): number;\r\n snappingColumns_default(_: number): this;\r\n snappingRows_default(): number;\r\n snappingRows_default(_: number): this;\r\n\r\n gutter(): number;\r\n gutter(_: number): this;\r\n\r\n surfaceShadow(): boolean;\r\n surfaceShadow(_: boolean): this;\r\n surfacePadding(): string;\r\n surfacePadding(_: string): this;\r\n surfaceBorderWidth(): number;\r\n surfaceBorderWidth(_: number): this;\r\n surfaceBackgroundColor(): string;\r\n surfaceBackgroundColor(_: string): this;\r\n\r\n content(): Cell[];\r\n content(_: Cell[]): this;\r\n}\r\n\r\nGrid.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\r\nGrid.prototype.publish(\"showLanes\", true, \"boolean\", \"Show snapping lanes when in design mode\", null, { tags: [\"Basic\"], disable: w => !w.designMode() });\r\nGrid.prototype.publish(\"fitTo\", \"all\", \"set\", \"Sizing Strategy\", [\"all\", \"width\"], { tags: [\"Basic\"] });\r\nGrid.prototype.publish(\"snapping\", \"vertical\", \"set\", \"Snapping Strategy\", [\"vertical\", \"horizontal\", \"none\"]);\r\nGrid.prototype.publish(\"snappingColumns\", 12, \"number\", \"Snapping Columns\");\r\nGrid.prototype.publish(\"snappingRows\", 16, \"number\", \"Snapping Rows\");\r\n\r\nGrid.prototype.publish(\"gutter\", 6, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\r\n\r\nGrid.prototype.publish(\"surfaceShadow\", true, \"boolean\", \"3D Shadow\");\r\nGrid.prototype.publish(\"surfacePadding\", null, \"string\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\r\nGrid.prototype.publish(\"surfaceBorderWidth\", 1, \"number\", \"Width (px) of Cell Border\", null, { tags: [\"Intermediate\"] });\r\nGrid.prototype.publish(\"surfaceBackgroundColor\", null, \"html-color\", \"Surface Background Color\", null, { tags: [\"Advanced\"] });\r\n\r\nGrid.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Basic\"], render: false });\r\n","import { FlexGrid } from \"./FlexGrid\";\r\n\r\nexport class HorizontalList extends FlexGrid {\r\n constructor() {\r\n super();\r\n this.orientation_default(\"horizontal\");\r\n this.flexWrap_default(\"nowrap\");\r\n }\r\n}\r\nHorizontalList.prototype._class += \" layout_HorizontalList\";\r\n\r\nexport interface HorizontalList {\r\n orientation_default(_: \"horizontal\" | \"vertical\");\r\n flexWrap_default(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\");\r\n}\r\n","import { HTMLWidget, Text } from \"@hpcc-js/common\";\r\n\r\nimport \"../src/Layered.css\";\r\n\r\nexport type LayerPlacement = \"default\" | \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\r\n\r\nexport class Layered extends HTMLWidget {\r\n protected _contentContainer;\r\n _widgetPlacements;\r\n _widgetRatios;\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n this._widgetPlacements = [];\r\n this._widgetRatios = [];\r\n }\r\n\r\n addLayer(widget, placement: LayerPlacement = \"default\", widthRatio: number = 1, heightRatio: number = 1) {\r\n const widgets = this.widgets();\r\n widgets.push(widget ? widget : new Text().text(\"No widget defined for layer.\"));\r\n this.widgets(widgets);\r\n this._widgetPlacements.push(placement);\r\n this._widgetRatios.push([widthRatio, heightRatio]);\r\n return this;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._contentContainer = element.append(\"div\")\r\n .attr(\"class\", \"container\")\r\n ;\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n const context = this;\r\n\r\n element.style(\"padding\", this.surfacePadding() + \"px\");\r\n\r\n const content = this._contentContainer.selectAll(\".content.id\" + this.id()).data(this.widgets(), function (d) { return d.id(); });\r\n content.enter().append(\"div\")\r\n .attr(\"class\", \"content id\" + this.id())\r\n .each(function (widget, idx) {\r\n widget.target(this);\r\n })\r\n .merge(content)\r\n .each(function (widget, idx) {\r\n const clientSize = {\r\n width: context.clientWidth(),\r\n height: context.clientHeight()\r\n };\r\n const widgetSize = context.widgetSize(idx, clientSize);\r\n const widgetPosition = context.widgetPosition(idx, clientSize, widgetSize);\r\n this.style.top = widgetPosition.y + \"px\";\r\n this.style.left = widgetPosition.x + \"px\";\r\n widget\r\n .resize(widgetSize)\r\n .render()\r\n ;\r\n })\r\n ;\r\n content.exit()\r\n .each(function (widget, idx) {\r\n widget\r\n .target(null)\r\n ;\r\n })\r\n .remove()\r\n ;\r\n content.order();\r\n }\r\n\r\n widgetSize(idx, clientSize) {\r\n if (this._widgetPlacements[idx] === \"default\") {\r\n return {\r\n width: clientSize.width * this._widgetRatios[idx][0],\r\n height: clientSize.height * this._widgetRatios[idx][1]\r\n };\r\n } else {\r\n return {\r\n width: clientSize.width * this._widgetRatios[idx][0],\r\n height: clientSize.height * this._widgetRatios[idx][1]\r\n };\r\n }\r\n }\r\n widgetPosition(idx, clientSize, widgetSize) {\r\n switch (this._widgetPlacements[idx]) {\r\n default:\r\n return {\r\n x: 0,\r\n y: 0\r\n };\r\n case \"top\":\r\n return {\r\n x: (clientSize.width / 2) - (widgetSize.width / 2),\r\n y: 0\r\n };\r\n case \"bottom\":\r\n return {\r\n x: (clientSize.width / 2) - (widgetSize.width / 2),\r\n y: clientSize.height - widgetSize.height\r\n };\r\n case \"left\":\r\n return {\r\n x: 0,\r\n y: (clientSize.height / 2) - (widgetSize.height / 2)\r\n };\r\n case \"right\":\r\n return {\r\n x: clientSize.width - widgetSize.width,\r\n y: (clientSize.height / 2) - (widgetSize.height / 2)\r\n };\r\n case \"center\":\r\n return {\r\n x: (clientSize.width / 2) - (widgetSize.width / 2),\r\n y: (clientSize.height / 2) - (widgetSize.height / 2)\r\n };\r\n }\r\n }\r\n\r\n surfacePadding: { (): number; (_: string): Layered; };\r\n widgets: { (): any[]; (_: any[]): Layered; };\r\n}\r\nLayered.prototype._class += \" layout_Layered\";\r\n\r\nLayered.prototype.publish(\"surfacePadding\", 0, \"number\", \"Padding\");\r\nLayered.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\r\n","import { HTMLWidget } from \"@hpcc-js/common\";\r\n\r\nexport class Popup extends HTMLWidget {\r\n _surfaceButtons;\r\n _originalPosition;\r\n\r\n constructor() {\r\n super();\r\n this._tag = \"div\";\r\n this._surfaceButtons = [];\r\n }\r\n\r\n updateState(visible) {\r\n visible = visible || !this.popupState();\r\n this.popupState(visible).render();\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this.widget()\r\n .target(domNode)\r\n ;\r\n this._originalPosition = this.position();\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n element\r\n .style(\"visibility\", this.popupState() ? null : \"hidden\")\r\n .style(\"opacity\", this.popupState() ? null : 0)\r\n .style(\"width\", this.shrinkWrap() ? this.widget().width() + \"px\" : this._size.width + \"px\")\r\n .style(\"height\", this.shrinkWrap() ? this.widget().height() + \"px\" : this._size.height + \"px\")\r\n ;\r\n if (this.widget().size().height === 0) {\r\n this.widget().resize(this.size());\r\n }\r\n }\r\n\r\n postUpdate(domNode, element) {\r\n let left;\r\n let top;\r\n switch (this.centerPopup()) {\r\n case \"container\":\r\n if (this._placeholderElement) {\r\n left = parseInt(this._placeholderElement.style(\"width\")) / 2 - this.widget().width() / 2;\r\n top = parseInt(this._placeholderElement.style(\"height\")) / 2 - this.widget().height() / 2;\r\n }\r\n this.position(\"absolute\");\r\n break;\r\n\r\n case \"window\":\r\n left = window.innerWidth / 2 - this.widget().width() / 2;\r\n top = window.innerHeight / 2 - this.widget().height() / 2;\r\n this.position(\"fixed\");\r\n break;\r\n\r\n default:\r\n left = 0;\r\n top = 0;\r\n this.position(this._originalPosition);\r\n break;\r\n }\r\n\r\n this.pos({ x: left, y: top });\r\n\r\n super.postUpdate(domNode, element);\r\n\r\n element\r\n .style(\"position\", this.position())\r\n .style(\"left\", this.left() + \"px\")\r\n .style(\"right\", this.right() + \"px\")\r\n .style(\"top\", this.top() + \"px\")\r\n .style(\"bottom\", this.bottom() + \"px\")\r\n ;\r\n }\r\n\r\n exit(domNode, element) {\r\n if (this.widget()) {\r\n this.widget().target(null);\r\n }\r\n super.exit(domNode, element);\r\n }\r\n\r\n click(obj) {\r\n }\r\n\r\n popupState: { (): boolean; (_: boolean): Popup; };\r\n shrinkWrap: { (): boolean; (_: boolean): Popup; };\r\n centerPopup: { (): string; (_: string): Popup; };\r\n top: { (): number; (_: number): Popup; };\r\n bottom: { (): number; (_: number): Popup; };\r\n left: { (): number; (_: number): Popup; };\r\n right: { (): number; (_: number): Popup; };\r\n position: { (): string; (_: string): Popup; };\r\n\r\n widget: { (): any; (_: any): Popup; };\r\n}\r\nPopup.prototype._class += \" layout_Popup\";\r\n\r\nPopup.prototype.publish(\"popupState\", false, \"boolean\", \"State of the popup, visible (true) or hidden (false)\", null, {});\r\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, {});\r\nPopup.prototype.publish(\"centerPopup\", \"none\", \"set\", \"Center the widget in its container element (target) or in the window\", [\"none\", \"container\", \"window\"], {});\r\nPopup.prototype.publish(\"top\", null, \"number\", \"Top position property of popup\", null, {});\r\nPopup.prototype.publish(\"bottom\", null, \"number\", \"Bottom position property of popup\", null, {});\r\nPopup.prototype.publish(\"left\", null, \"number\", \"Left position property of popup\", null, {});\r\nPopup.prototype.publish(\"right\", null, \"number\", \"Right position property of popup\", null, {});\r\nPopup.prototype.publish(\"position\", \"relative\", \"set\", \"Value of the 'position' property\", [\"absolute\", \"relative\", \"fixed\", \"static\", \"initial\", \"inherit\"], { tags: [\"Private\"] });\r\n\r\nPopup.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\r\n","import { HTMLWidget, Text } from \"@hpcc-js/common\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { Surface } from \"./Surface\";\r\n\r\nimport \"../src/Tabbed.css\";\r\n\r\nexport class Tabbed extends HTMLWidget {\r\n _tabContainer;\r\n _contentContainer;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._tag = \"div\";\r\n }\r\n\r\n clearTabs() {\r\n this.labels([]);\r\n this.widgets([]);\r\n return this;\r\n }\r\n\r\n addTab(widget, label, isActive?, callback?) {\r\n const widgetSize = widget.size();\r\n if (widgetSize.width === 0 && widgetSize.height === 0) {\r\n widget.size({ width: \"100%\", height: \"100%\" });\r\n }\r\n const labels = this.labels();\r\n const widgets = this.widgets();\r\n if (isActive) {\r\n this.activeTabIdx(this.widgets().length);\r\n }\r\n labels.push(label);\r\n const surface = new Surface().widget(widget ? widget : new Text().text(\"No widget defined for tab\"));\r\n widgets.push(surface);\r\n this.labels(labels);\r\n this.widgets(widgets);\r\n if (callback) {\r\n callback(surface);\r\n }\r\n return this;\r\n }\r\n\r\n widgetSize(widgetDiv) {\r\n const width = this.clientWidth();\r\n let height = this.clientHeight();\r\n\r\n const tcBox = this._tabContainer.node().getBoundingClientRect();\r\n if (typeof (tcBox.height) !== \"undefined\") {\r\n height -= tcBox.height;\r\n }\r\n return { width, height };\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._tabContainer = element.append(\"div\");\r\n this._contentContainer = element.append(\"div\");\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n const context = this;\r\n\r\n element.style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null);\r\n\r\n const tabs = this._tabContainer.selectAll(\".tab-button.id\" + this.id()).data(this.showTabs() ? this.labels() : [], function (d) { return d; });\r\n tabs.enter().append(\"span\")\r\n .attr(\"class\", \"tab-button id\" + this.id())\r\n .style(\"cursor\", \"pointer\")\r\n .on(\"click\", function (d, idx) {\r\n context.click(context.widgets()[idx].widget(), d, idx);\r\n context\r\n .activeTabIdx(idx)\r\n .render()\r\n ;\r\n }).merge(tabs)\r\n .classed(\"active\", function (d, idx) { return context.activeTabIdx() === idx; })\r\n .text(function (d) { return d; })\r\n ;\r\n tabs.exit().remove();\r\n\r\n const content = this._contentContainer.selectAll(\".tab-content.id\" + this.id()).data(this.widgets(), function (d) { return d.id(); });\r\n content.enter().append(\"div\")\r\n .attr(\"class\", \"tab-content id\" + this.id())\r\n .each(function (widget, idx) {\r\n widget.target(this);\r\n }).merge(content)\r\n .classed(\"active\", function (d, idx) { return context.activeTabIdx() === idx; })\r\n .style(\"display\", function (d, idx) { return context.activeTabIdx() === idx ? \"block\" : \"none\"; })\r\n .each(function (surface, idx) {\r\n surface.visible(context.activeTabIdx() === idx);\r\n if (context.activeTabIdx() === idx) {\r\n const wSize = context.widgetSize(d3Select(this));\r\n surface\r\n .surfaceBorderWidth(context.showTabs() ? null : 0)\r\n .surfacePadding(context.showTabs() ? null : 0)\r\n .resize(wSize)\r\n ;\r\n }\r\n })\r\n ;\r\n content.exit()\r\n .each(function (widget, idx) {\r\n widget\r\n .target(null)\r\n ;\r\n })\r\n .remove();\r\n\r\n switch (this.tabLocation()) {\r\n case \"bottom\":\r\n this._tabContainer\r\n .attr(\"class\", \"on_bottom\")\r\n .style(\"top\", (this._contentContainer.node().offsetHeight + this.surfacePadding()) + \"px\")\r\n .style(\"position\", \"absolute\")\r\n ;\r\n this._contentContainer\r\n .style(\"top\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null)\r\n .style(\"position\", \"absolute\")\r\n ;\r\n break;\r\n default:\r\n this._tabContainer\r\n .attr(\"class\", \"on_top\")\r\n .style(\"top\", null)\r\n .style(\"position\", \"relative\")\r\n ;\r\n this._contentContainer\r\n .style(\"top\", (this._tabContainer.node().offsetHeight + this.surfacePadding()) + \"px\")\r\n .style(\"position\", \"absolute\")\r\n ;\r\n break;\r\n }\r\n }\r\n\r\n click(widget, column, idx) {\r\n }\r\n\r\n showTabs: { (): boolean; (_: boolean): Tabbed; };\r\n surfacePadding: { (): number; (_: number): Tabbed; };\r\n surfacePadding_default: { (): number; (_: number): Tabbed; };\r\n surfacePadding_exists: () => boolean;\r\n activeTabIdx: { (): number; (_: number): Tabbed; };\r\n\r\n labels: { (): string[]; (_: string[]): Tabbed; };\r\n tabLocation: { (): string; (_: string): Tabbed; };\r\n widgets: { (): any[]; (_: any[]): Tabbed; };\r\n}\r\nTabbed.prototype._class += \" layout_Tabbed\";\r\n\r\nTabbed.prototype.publish(\"showTabs\", true, \"boolean\", \"Show Tabs\", null, {});\r\nTabbed.prototype.publish(\"surfacePadding\", 4, \"number\", \"Padding\");\r\nTabbed.prototype.publish(\"activeTabIdx\", 0, \"number\", \"Index of active tab\", null, {});\r\n\r\nTabbed.prototype.publish(\"labels\", [], \"array\", \"Array of tab labels sharing an index with \", null, { tags: [\"Private\"] });\r\nTabbed.prototype.publish(\"tabLocation\", \"top\", \"set\", \"Position the tabs at the bottom of the widget\", [\"top\", \"bottom\"], { tags: [\"Private\"] });\r\nTabbed.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\r\n","import { HTMLWidget } from \"@hpcc-js/common\";\r\nimport { select as d3Select } from \"d3-selection\";\r\n\r\nimport \"../src/Toolbar.css\";\r\n\r\nfunction Toolbar() {\r\n HTMLWidget.call(this);\r\n\r\n this._tag = \"div\";\r\n}\r\nToolbar.prototype = Object.create(HTMLWidget.prototype);\r\nToolbar.prototype.constructor = Toolbar;\r\nToolbar.prototype._class += \" layout_Toolbar\";\r\n\r\nToolbar.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\r\n\r\nToolbar.prototype.publish(\"fontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\r\nToolbar.prototype.publish(\"fontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\r\nToolbar.prototype.publish(\"fontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\r\nToolbar.prototype.publish(\"fontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\r\nToolbar.prototype.publish(\"backgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\r\n\r\nToolbar.prototype.publish(\"responsive\", true, \"boolean\", \"Adapts to pixel width\", null, { tags: [\"Basic\"] });\r\n\r\nToolbar.prototype.publish(\"widgets\", [], \"widgetArray\", \"Child widgets of the toolbar\", null, { tags: [\"Basic\"] });\r\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\"] });\r\n\r\nToolbar.prototype.enter = function (domNode, element) {\r\n HTMLWidget.prototype.enter.apply(this, arguments);\r\n};\r\n\r\nToolbar.prototype.update = function (domNode, element) {\r\n HTMLWidget.prototype.update.apply(this, arguments);\r\n const context = this;\r\n\r\n element\r\n .attr(\"title\", context.title())\r\n .style(\"background-color\", this.backgroundColor())\r\n ;\r\n\r\n const title = element.selectAll(\"div.toolbar-title\")\r\n .data(this.title() ? [this.title()] : []);\r\n title.enter().append(\"div\")\r\n .classed(\"toolbar-title\", true)\r\n .append(\"span\")\r\n ;\r\n title.selectAll(\"div.toolbar-title > span\")\r\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\r\n .style(\"color\", this.fontColor_exists() ? this.fontColor() : null)\r\n .style(\"font-family\", this.fontFamily_exists() ? this.fontFamily() : null)\r\n .style(\"font-weight\", this.fontBold_exists() ? (this.fontBold() ? \"bold\" : \"normal\") : null)\r\n .style(\"background-color\", this.backgroundColor_exists() ? this.backgroundColor() : null)\r\n .text(context.title())\r\n ;\r\n title.exit().remove();\r\n\r\n const childWidgets = element.selectAll(\"div.toolbar-child\")\r\n .data(this.widgets() !== null ? this.widgets() : [], function (d) { return d.id(); });\r\n\r\n childWidgets.enter().insert(\"div\", \"div.toolbar-title\")\r\n .each(function (d, i) {\r\n const widgetClass = context.widgetClasses()[i] ? context.widgetClasses()[i] + \" toolbar-child\" : \"toolbar-child\";\r\n d3Select(this).classed(widgetClass, true);\r\n d.target(this);\r\n });\r\n childWidgets.exit().each(function (d) {\r\n d.target(null);\r\n }).remove();\r\n childWidgets.order();\r\n};\r\n\r\nToolbar.prototype.render = function (callback) {\r\n const context = this;\r\n HTMLWidget.prototype.render.call(this, function (w) {\r\n const toolbarBBox = context.element().node().getBoundingClientRect();\r\n let minX = toolbarBBox.left + toolbarBBox.width;\r\n context.element().selectAll(\"div.toolbar-child\")\r\n .each(function (d, i) {\r\n const childBBox = this.getBoundingClientRect();\r\n if (minX > childBBox.left)\r\n minX = childBBox.left;\r\n })\r\n ;\r\n context.element().select(\".toolbar-title\")\r\n .style(\"width\", (minX - toolbarBBox.left - 4) + \"px\")\r\n ;\r\n if (callback) {\r\n callback(w);\r\n }\r\n });\r\n};\r\n\r\nToolbar.prototype.exit = function (domNode, element) {\r\n HTMLWidget.prototype.exit.apply(this, arguments);\r\n this.widgets().forEach(function (w) {\r\n w.target(null);\r\n });\r\n};\r\n\r\nexport {\r\n Toolbar\r\n};\r\n","import { FlexGrid } from \"./FlexGrid\";\r\n\r\nexport class VerticalList extends FlexGrid {\r\n constructor() {\r\n super();\r\n this.orientation_default(\"vertical\");\r\n this.flexWrap_default(\"nowrap\");\r\n }\r\n}\r\nVerticalList.prototype._class += \" layout_VerticalList\";\r\n\r\nexport interface VerticalList {\r\n orientation_default(_: \"horizontal\" | \"vertical\");\r\n flexWrap_default(_: \"nowrap\" | \"wrap\" | \"wrap-reverse\");\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__spreadArray","to","from","pack","ar","l","slice","concat","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","SuppressedError","AbsoluteSurface","_super","_this","_tag","enter","domNode","element","update","xPos","yPos","width","clientWidth","height","clientHeight","units","widgetX","widgetY","widgetWidth","Number","widgetHeight","opacity","widgets","selectAll","_id","data","widget","append","attr","each","target","merge","resize","exit","remove","HTMLWidget","_class","publish","tags","Accordion","_isClosed","pushListItem","prepend","protect","contentArr","content","_protected","unshift","clearListItems","arr","collapseClick","classed","context","defaultCollapsed","titleSpan","iconDiv","ul","icon","FAChar","size","node","on","render","text","title","rows","li","_target","wSize","cSize","text_colorFill","titleFontColor","char","closedIcon","openIcon","Surface","_surfaceButtons","widgetSize","titleDiv","widgetDiv","calcHeight","calcFrameHeight","calcFrameWidth","element2","surfaceShadow","surfaceBorderWidth_exists","surfaceBorderWidth","surfaceBorderColor","surfaceBorderRadius_exists","surfaceBorderRadius","surfaceBackgroundColor","titles","insert","surfaceTitleAlignment","surfaceTitleFontColor","surfaceTitleFontSize_exists","surfaceTitleFontSize","surfaceTitleFontFamily","surfaceTitleFontBold","surfaceTitleBackgroundColor","surfaceTitlePadding_exists","surfaceTitlePadding","altText_exists","altText","surfaceButtons","select","buttonAnnotations","button","idx","el","d3Select","class","id","padding","font","click","_d","parentElement","classID","split","surfacePadding_exists","surfacePadding","obj","optional","disable","w","Cell","_indicateTheseIds","indicateTheseIds","onMouseEnter","onMouseLeave","indicatorOpacity","indicatorBorderColor","indicatorGlowColor","otherElement","otherWidget","datum","d3SelectAll","Border","lazyPostUpdate","Utility","debounce","postUpdate","_colCount","_rowCount","_colSize","_rowSize","_shrinkWrapBoxes","sectionTypes","watchWidget","undefined","_watch","context_1","monitor","paramId","newVal","oldVal","applyLayoutType","layoutObj","borderLayoutObject","forEach","cell","_fixedLeft","left","_fixedTop","top","_fixedWidth","_fixedHeight","_dragHandles","cellSpecificDragHandles","sectionType","layoutType","topSize","topPerc","bottomSize","bottomPerc","leftSize","leftPerc","rightSize","rightPerc","retObj","bcRect","getBoundingClientRect","bottom","right","SVGElement","parseFloat","getAttribute","indexOf","topPercentage","gutter","bottomPercentage","leftPercentage","rightPercentage","_sectionPlacementObject","px","r","c","clearContent","splice","contentWidget","hasContent","setContent","getCell","getContent","setLayoutOffsets","_offsetX","_element","_offsetY","dragStart","handle","event","d3Event","sourceEvent","stopPropagation","_dragCell","_dragCellStartSize","handleElm","_handleTop","_handleLeft","_dragPrevX","clientX","_dragPrevY","clientY","dragTick","xDelta","yDelta","_moveHandles","handle2","delta","handles","grabbedHandle","_cellSizes","topHeight","leftHeight","bottomHeight","rightHeight","rightWidth","leftWidth","handle3","dragEnd","event_1","getBBox","retVal","contentDiv","_size","_scrollBarWidth","Platform","getScrollbarWidth","_borderHandles","_sectionTypeArr","designMode","rowsUpdate","drag","d3Drag","_placeholderElement","getCellSizes","contentRect","rect","prevBox","currBox","lazyRender","WidgetDiv","div","_overlay","_overflowX","_overflowY","_div","overlay","overflowX","overflowY","_widget","availableHeight","availableWidth","renderPromise","visible","x","Border2","topElement","_bodyElement","centerElement","leftElement","rightElement","bottomElement","_topWA","_centerWA","_leftWA","_rightWA","_bottomWA","showTop","showRight","showBottom","showLeft","topOverflowX","rightOverflowX","bottomOverflowX","leftOverflowX","topOverflowY","rightOverflowY","bottomOverflowY","leftOverflowY","targetNull","center","swap","sectionA","sectionB","a","callback","topOverlay","topBBox","bottomBBox","_a","leftBBox","rightBBox","bottomHeight_exists","bodyWidth","bodyHeight","centerOverflowX","centerOverflowY","scrollCenterX","scrollCenterY","promises","all","Carousel","_prevActive","activeWidget","active","_root","widgetElements","transition","duration","transitionDuration","isDOMHidden","aw","w2","pi","Math","PI","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","constant","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","h","toString","d3SymbolCircle","draw","d3SymbolCross","tan30","tan30_2","d3SymbolDiamond","kr","kx","ky","d3SymbolStar","d3SymbolSquare","sqrt3","d3SymbolTriangle","k","d3SymbolWye","d3Symbol","circle","symbol","buffer","d3_identity","d3_reverse","mirror","d3_textWrapping","word","words","reverse","line","tspan","join","getComputedTextLength","helper","shape","shapes","shapeHeight","shapeWidth","shapeRadius","svg","labels","classPrefix","labelWidth","scale","ascending","cells","labelFormat","labelDelimiter","invertExtent","range","map","invert","d3_quantLegend","ticks","domain","increment","feature","d3_linearLegend","d3_ordinalLegend","gen","_typeof","customLabels","genLength","_i","d3_mergeLabels","cellFilter","filterCells","filter","dataValues","labelValues","orient","cellTrans","textTrans","labelAlign","dispatcher","cellDispatcher","d3_title","titleWidth","cellsSvg","yOffset","nodes","xOffset","d3_defaultLocale","format","d3_defaultDelimiter","Legend","owner","_disabled","_symbolTypeMap","cross","diamond","square","star","triangle","wye","_owner","_drawStartPos","_legendOrdinal","scaleLinear","shapePadding","useClass","locale","specifier","d3_defaultFormatSpecifier","labelOffset","labelWrap","legendDispatcher","dispatch","legend","d3_calcType","d3_filterCells","cellEnter","d3_addEvents","d3_drawShapes","d3_addText","textSize","shapeSize","cellSize","textAlign","max","sum","d3_placement","formatLocale","formatSpecifier","toLowerCase","textWrap","d3LegendColor","onClick","onOver","onOut","isDisabled","Database","Field","filteredFields","dataFamily","fields","filteredColumns","columns","filteredData","row","disabledCols_1","anyDisabled_1","col","disabled","isRainbow","getWidget","_palette","targetWidget","_targetWidget","_targetWidgetMonitor","key","newProp","oldProp","source","chart","getPalette","Palette","ordinal","rainbow","getPaletteType","fillColorFunc","fillColor","paletteID","name","switch","sel","palette","_g","calcMetaData","dataArr","total","maxLabelWidth","colLength","columns_1","fillColor_1","val_1","reduce","acc","showSeriesTotal","d3Format","rainbowFormat","steps","rainbowBins","weightMin","_dataMinWeight","weightMax","_dataMaxWeight","stepWeightDiff","mid","floor","parseInt","radius","radiusToSymbolSize","itemPadding","orientation","d3ScaleOrdinal","symbolType","labelMaxWidth","updateDisabled","legendCellsBbox","offsetX","offsetY","_containerSize","pos","legendTotal","showLegendTotal","totalText","totalOffsetX","totalOffsetY","enableOverflowScroll","enableOverflow","_boundingBox","_parentRelativeDiv","circleSize","pow","disabledIdx","refreshColumns","refreshData","instanceOfIHighlight","highlightColumn","onDblClick","rowData","rowIdx","onMouseOver","fitToContent","bbox","SVGWidget","Modal","closeModal","getRelativeTarget","relativeTarget","relativeTargetId","getElementById","locateAncestor","setModalSize","fixedHeight","fixedWidth","_modal","minHeight","minWidth","maxHeight","maxWidth","modalRect","headerRect","_modalHeader","_modalBody","setFadePosition","_fade","setModalPosition","fixedTop","fixedLeft","resizeBodySync","enableClickFadeToClose","showFade","header_h","titleFontSize","formattedTitle","_modalHeaderAnnotations","_modalHeaderCloseButton","html","show","_relativeTarget","title_exists","trim","ChartPanel","_legend","_progressBar","ProgressBar","_autoScale","_resolutions","tiny","small","_toggleInfo","ToggleButton","faChar","tooltip","selected","description","Text","origCloseFunc_1","_close","_toggleData","dataVisible","_buttonDownload","Button","downloadCSV","_buttonDownloadImage","downloadPNG","_toggleLegend","legendPosition","legendVisible","_spacer","Spacer","_titleBar","TitleBar","buttons","_carousel","_table","Table","_hideLegendToggleList","refreshFields","asDefault","highlight","_highlight","startProgress","start","finishProgress","finish","namePrefix","downloadTitle","nameSuffix","downloadTimestampSuffix","timestamp","downloadString","export","column","cssTag_1","cssTag","getResponsiveMode","enableAutoscaling","setOrigSize","_orig_size","JSON","parse","stringify","preUpdateTiny","preUpdateSmall","scale_x","scale_y","_scale","min","x_is_smaller","preUpdateRegular","widget_exists","chart_1","xAxisType","yAxisType","columnType","columnPattern","xAxisTypeTimePattern","yAxisTypeTimePattern","columnFormat","xAxisTickFormat","yAxisTickFormat","preUpdate","_prevLegendPosition","_prevdataVisible","_prevlegendVisible","_dataFamily","_prevChartDataFamily","highlightSize","highlightColor","_prevChart","widgetIconBar","IconBar","_prevButtons","hiddenButtons","dataButtonVisible","downloadButtonVisible","downloadImageButtonVisible","legendButtonVisible","enabled","titleVisible","titleOverlay","postUpdateTiny","postUpdateSmall","postUpdateRegular","titleIconFontSize","_node","containerRect","icon_top","parentRect","_prevPos","dblclick","vertex_click","more","vertex","vertex_dblclick","edge_click","edge","edge_dblclick","publishReset","publishProxy","tmpAny","FlexGrid","parentNode","cachedSizes","updateFlexParent","listItems","itemMinHeight","itemMinWidth","flexBasis","widgetsFlexBasis","flexGrow","widgetsFlexGrow","borderWidth","itemBorderColor","display","flexWrap","alignItems","alignContent","forceXScroll","disableScroll","forceYScroll","module","exports","GridList","items","options","_options","defaults","_adjustSizeOfItems","generateGrid","cloneItems","_items","lanes","direction","item","j","widthOfGrid","grid","output","border","_padNumber","_resetGrid","_markItemPositionToGrid","resizeGrid","currentColumn","_sortItemsByPosition","position","_getItemPosition","_updateItemPosition","findPositionForItem","_pullItemsToLeft","fixedRow","_itemFitsAtPosition","newCol","newRow","moveItemToPosition","newPosition","_resolveCollisions","resizeItem","_updateItemSize","getChangedItems","initialItems","idAttribute","changedItems","_getItemByAttribute","sort","item1","item2","position1","position2","bind","autoSize","_deleteItemPositionFromGrid","_setItemPosition","_ensureColumns","N","GridCol","_getItemsCollidingWithItem","collidingItems","_itemsAreColliding","_tryToResolveCollisionsLocally","leftOfItem","rightOfItem","aboveOfItem","belowOfItem","_gridList","collidingItem","collidingPosition","fixedItem","fixedPosition","_findLeftMostPositionForItem","tail","otherItem","otherPosition","nr","prefix","factory","_GridList","_GridList.default","Grid","_selectionBag","Selection","getDimensions","gridCol","gridColSpan","gridRow","gridRowSpan","rowSpan","colSpan","sortedContent","some","getWidgetCell","cellToGridItem","gridItemToCell","resetItemsPos","origItems","origItem","itemsMap","initGridList","gridList","snapping","snappingRows","snappingColumns","killGridList","_d3Drag","subject","cellWidth","cellHeight","dragItem","selectionBagClick","updateGrid","_d3DragResize","dragItemPos","round","_noRender","divItems","surfaceShadow_default","surfacePadding_default","surfaceBorderWidth_default","surfaceBackgroundColor_default","fitTo","dimensions","cellLaneRatio","laneWidth","__grid_watch","_renderCount","lanesBackground","selectionBagClear","showLanes","_createSelectionObject","selection","set","get","isEmpty","clear","postSelectionChange","selectionObj","ctrlKey","isSelected","applyLayout","layoutArr","vizActivation","elem","HorizontalList","orientation_default","flexWrap_default","Layered","_widgetPlacements","_widgetRatios","addLayer","placement","widthRatio","heightRatio","_contentContainer","clientSize","widgetPosition","order","Popup","updateState","popupState","_originalPosition","shrinkWrap","centerPopup","window","innerWidth","innerHeight","Tabbed","clearTabs","addTab","isActive","activeTabIdx","surface","tcBox","_tabContainer","tabs","showTabs","tabLocation","offsetHeight","Toolbar","backgroundColor","fontSize_exists","fontSize","fontColor_exists","fontColor","fontFamily_exists","fontFamily","fontBold_exists","fontBold","backgroundColor_exists","childWidgets","widgetClass","widgetClasses","toolbarBBox","minX","childBBox","VerticalList"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../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","../src/Legend.ts","../../../node_modules/d3-svg-legend/src/color.js","../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\";\nexport const PKG_VERSION = \"2.51.5\";\nexport const BUILD_VERSION = \"2.108.9\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\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 }\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\n .text()\n .split(/\\s+/)\n .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\n .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\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + dy + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst d3_mergeLabels = (gen = [], labels, domain, range, labelDelimiter) => {\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(\n labels({\n i,\n genLength,\n generatedLabels: gen,\n domain,\n range,\n labelDelimiter\n })\n )\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 } 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 {\n data: data,\n labels: labels,\n feature: d => scale(d)\n }\n}\n\nconst d3_quantLegend = (scale, labelFormat, labelDelimiter) => {\n const labels = scale.range().map(d => {\n const invert = scale.invertExtent(d)\n return (\n labelFormat(invert[0]) +\n \" \" +\n labelDelimiter +\n \" \" +\n labelFormat(invert[1])\n )\n })\n\n return {\n data: scale.range(),\n labels: labels,\n feature: d3_identity\n }\n}\n\nconst d3_ordinalLegend = scale => ({\n 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\nexport default {\n d3_drawShapes: (\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n path\n ) => {\n if (shape === \"rect\") {\n shapes.attr(\"height\", shapeHeight).attr(\"width\", shapeWidth)\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius)\n } else if (shape === \"line\") {\n shapes\n .attr(\"x1\", 0)\n .attr(\"x2\", shapeWidth)\n .attr(\"y1\", 0)\n .attr(\"y2\", 0)\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\n .selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .data(labels)\n .text(d3_identity)\n\n if (labelWidth) {\n svg\n .selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .call(d3_textWrapping, labelWidth)\n }\n\n return text\n },\n\n d3_calcType: function(\n scale,\n ascending,\n cells,\n labels,\n labelFormat,\n labelDelimiter\n ) {\n const type = scale.invertExtent\n ? d3_quantLegend(scale, labelFormat, labelDelimiter)\n : scale.ticks\n ? d3_linearLegend(scale, cells, labelFormat)\n : 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(\n type.labels,\n labels,\n scale.domain(),\n range,\n labelDelimiter\n )\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\n .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\n .on(\"mouseover.legend\", function(d) {\n d3_cellOver(dispatcher, d, this)\n })\n .on(\"mouseout.legend\", function(d) {\n d3_cellOut(dispatcher, d, this)\n })\n .on(\"click.legend\", function(d) {\n d3_cellClick(dispatcher, d, this)\n })\n },\n\n d3_title: (svg, title, classPrefix, titleWidth) => {\n if (title !== \"\") {\n const titleText = svg.selectAll(\"text.\" + classPrefix + \"legendTitle\")\n\n titleText\n .data([title])\n .enter()\n .append(\"text\")\n .attr(\"class\", classPrefix + \"legendTitle\")\n\n svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").text(title)\n\n if (titleWidth) {\n svg\n .selectAll(\"text.\" + classPrefix + \"legendTitle\")\n .call(d3_textWrapping, titleWidth)\n }\n\n const cellsSvg = svg.select(\".\" + classPrefix + \"legendCells\")\n const yOffset = svg\n .select(\".\" + classPrefix + \"legendTitle\")\n .nodes()\n .map(d => d.getBBox().height)[0],\n xOffset = -cellsSvg.nodes().map(function(d) {\n return d.getBBox().x\n })[0]\n cellsSvg.attr(\"transform\", \"translate(\" + xOffset + \",\" + yOffset + \")\")\n }\n },\n\n d3_defaultLocale: {\n format,\n formatPrefix\n },\n\n d3_defaultFormatSpecifier: \".01f\",\n\n d3_defaultDelimiter: \"to\"\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 }\n\n onMouseOver(rowData, 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 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 { 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 type { XYAxis } from \"@hpcc-js/chart\";\nimport { Table } from \"@hpcc-js/dgrid2\";\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 if (this._table && this.widget_exists() && this.widget().class().indexOf(\"chart_XYAxis\") >= 0) {\n const chart = this.widget() as XYAxis;\n this._table.columns().forEach((column, idx) => {\n switch (idx === 0 ? chart.xAxisType() : chart.yAxisType()) {\n case \"linear\":\n case \"log\":\n case \"pow\":\n this._table.columnType(column, \"number\");\n break;\n case \"time\":\n this._table.columnType(column, \"time\");\n break;\n case \"ordinal\":\n default:\n this._table.columnType(column, \"string\");\n }\n this._table.columnPattern(column, idx === 0 ? chart.xAxisTypeTimePattern() : chart.yAxisTypeTimePattern());\n this._table.columnFormat(column, idx === 0 ? chart.xAxisTickFormat() : chart.yAxisTickFormat());\n });\n }\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._legend.visible(this._prevlegendVisible && !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 && !this._prevdataVisible);\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 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 }\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"],"mappings":"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","ignoreList":[]}