@hpcc-js/composite 2.9.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1082 -1035
- package/dist/index.js.map +7 -1
- package/package.json +38 -41
- package/src/ChartPanel.ts +2 -4
- package/src/MegaChart.ts +1 -1
- package/src/MultiChart.ts +3 -3
- package/src/MultiChartSurface.ts +1 -1
- package/src/Persist.ts +1 -1
- package/src/__package__.ts +2 -2
- package/src/index.ts +7 -7
- package/types/ChartPanel.d.ts +2 -4
- package/types/Dermatology.d.ts +0 -1
- package/types/MegaChart.d.ts +4 -5
- package/types/MultiChart.d.ts +0 -1
- package/types/Persist.d.ts +0 -1
- package/types/Utility.d.ts +0 -1
- package/types/__package__.d.ts +2 -3
- package/types/index.d.ts +7 -8
- package/dist/index.es6.js +0 -1051
- package/dist/index.es6.js.map +0 -1
- package/dist/index.min.js +0 -2
- package/dist/index.min.js.map +0 -1
- package/types/ChartPanel.d.ts.map +0 -1
- package/types/Dermatology.d.ts.map +0 -1
- package/types/MegaChart.d.ts.map +0 -1
- package/types/MultiChart.d.ts.map +0 -1
- package/types/MultiChartSurface.d.ts +0 -5
- package/types/MultiChartSurface.d.ts.map +0 -1
- package/types/Persist.d.ts.map +0 -1
- package/types/Utility.d.ts.map +0 -1
- package/types/__package__.d.ts.map +0 -1
- package/types/index.d.ts.map +0 -1
- package/types-3.4/ChartPanel.d.ts +0 -19
- package/types-3.4/Dermatology.d.ts +0 -26
- package/types-3.4/MegaChart.d.ts +0 -155
- package/types-3.4/MultiChart.d.ts +0 -62
- package/types-3.4/MultiChartSurface.d.ts +0 -5
- package/types-3.4/Persist.d.ts +0 -7
- package/types-3.4/Utility.d.ts +0 -3
- package/types-3.4/__package__.d.ts +0 -4
- package/types-3.4/index.d.ts +0 -10
package/dist/index.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../src/Utility.ts","../src/MultiChart.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/ChartPanel.ts","../src/Dermatology.ts","../src/MegaChart.ts","../src/Persist.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/composite\";\nexport const PKG_VERSION = \"2.9.0\";\nexport const BUILD_VERSION = \"2.107.0\";\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\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\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 default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\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};\n","import { Utility } from \"@hpcc-js/common\";\n\ndeclare const require: any;\nexport function requireWidget(classID) {\n return new Promise(function (resolve, _reject) {\n const parsedClassID = Utility.parseClassID(classID);\n if (require) {\n require([parsedClassID.package], function (Package) {\n let Widget = null;\n if (Package && Package[parsedClassID.widgetID]) {\n Widget = Package[parsedClassID.widgetID];\n }\n resolve(parsedClassID.memberWidgetID ? (Widget.prototype ? Widget.prototype[parsedClassID.memberWidgetID] : Widget[parsedClassID.memberWidgetID]) : Widget);\n });\n }\n });\n}\n\nexport function requireWidgets(classIDs) {\n return Promise.all(classIDs.map(requireWidget));\n}\n","import { IGraph, INDChart } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget, Utility, Widget } from \"@hpcc-js/common\";\nimport { map as d3Map } from \"d3-collection\";\nimport { requireWidget } from \"./Utility\";\n\ndeclare const require: any;\nexport class MultiChart extends HTMLWidget {\n _allCharts = {};\n _chartTypeDefaults;\n _chartTypeProperties;\n _chartMonitor;\n _switchingTo;\n\n constructor() {\n super();\n INDChart.call(this);\n IGraph.call(this);\n\n this._tag = \"div\";\n\n this._allCharts = {};\n this._allChartTypes.forEach(function (item) {\n const newItem = JSON.parse(JSON.stringify(item));\n newItem.widget = null;\n this._allCharts[item.id] = newItem;\n this._allCharts[item.display] = newItem;\n this._allCharts[item.widgetClass] = newItem;\n }, this);\n this._chartTypeDefaults = {};\n this._chartTypeProperties = {};\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().fields();\n this.chart().fields(_);\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_, asDefault?: boolean): this;\n columns(_?, asDefault?: boolean) {\n const retVal = HTMLWidget.prototype.columns.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().columns();\n this.chart().columns(_, asDefault);\n }\n return retVal;\n }\n\n data(_?) {\n const retVal = HTMLWidget.prototype.data.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().data();\n this.chart().data(_);\n }\n return retVal;\n }\n\n hasOverlay() {\n return this.chart() && this.chart().hasOverlay();\n }\n\n visible(): boolean;\n visible(_: boolean): this;\n visible(_?: boolean): boolean | this {\n if (!arguments.length) return this.chart() && this.chart().visible();\n if (this.chart()) {\n this.chart().visible(_);\n }\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): object | this {\n if (!arguments.length) return this._chartTypeDefaults;\n this._chartTypeDefaults = _;\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): object | this {\n if (!arguments.length) return this._chartTypeProperties;\n this._chartTypeProperties = _;\n return this;\n }\n\n getChartDataFamily() {\n return this._allCharts[this.chartType()].family;\n }\n\n requireContent(chartType, callback) {\n const classInfo = Utility.parseClassID(this._allCharts[chartType].widgetClass);\n switch (classInfo.package) {\n case \"@hpcc-js/chart\":\n require([\"@hpcc-js/chart\"], mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n case \"@hpcc-js/dgrid\":\n require([\"@hpcc-js/dgrid\"], mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n default:\n requireWidget(this._allCharts[chartType].widgetClass).then(function (WidgetClass: any) {\n callback(new WidgetClass());\n });\n }\n }\n\n switchChart(callback) {\n if (this._switchingTo === this.chartType()) {\n if (callback) {\n callback(this);\n }\n return;\n } else if (this._switchingTo) {\n console.warn(\"Attempting switch to: \" + this.chartType() + \", before previous switch is complete (\" + this._switchingTo + \")\");\n }\n this._switchingTo = this.chartType();\n const oldContent = this.chart();\n const context = this;\n this.requireContent(this.chartType(), function (newContent) {\n if (newContent !== oldContent) {\n const size = context.size();\n newContent\n .fields(context.fields())\n .data(context.data())\n .size(size)\n ;\n\n context.chart(newContent);\n if (oldContent) {\n oldContent\n .size({ width: 1, height: 1 })\n .render()\n ;\n }\n }\n delete context._switchingTo;\n if (callback) {\n callback(this);\n }\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const content = element.selectAll(\".multiChart\").data(this.chart() ? [this.chart()] : [], function (d) { return d._id; });\n content.enter().append(\"div\")\n .attr(\"class\", \"multiChart\")\n .each(function (d) {\n d.target(this);\n })\n ;\n\n const currChart = this.chart();\n if (currChart) {\n for (const key in this._chartTypeDefaults) {\n if (currChart[key + \"_default\"]) {\n try {\n currChart[key + \"_default\"](this._chartTypeDefaults[key]);\n } catch (e) {\n console.warn(\"Exception Setting Default: \" + key);\n }\n } else {\n console.warn(\"Unknown Default: \" + key);\n }\n }\n this._chartTypeDefaults = {};\n for (const propKey in this._chartTypeProperties) {\n if (currChart[propKey]) {\n try {\n currChart[propKey](this._chartTypeProperties[propKey]);\n } catch (e) {\n console.warn(\"Exception Setting Property: \" + propKey);\n }\n } else {\n console.warn(\"Unknown Property: \" + propKey);\n }\n }\n this._chartTypeProperties = {};\n }\n\n const context = this;\n content\n .each(function (d) { d.resize(context.size()); })\n ;\n\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n if (this.chart()) {\n this.chart().target(null);\n }\n super.exit(domNode, element);\n }\n\n render(_callback?) {\n if (this.chartType() && (!this.chart() || (this.chart().classID() !== this._allCharts[this.chartType()].widgetClass))) {\n const context = this;\n const args = arguments;\n this.switchChart(function () {\n HTMLWidget.prototype.render.apply(context, args);\n });\n return this;\n }\n return HTMLWidget.prototype.render.apply(this, arguments);\n }\n}\nMultiChart.prototype._class += \" composite_MultiChart\";\nMultiChart.prototype.implements(INDChart.prototype);\nMultiChart.prototype.implements(IGraph.prototype);\nexport interface ChartMeta {\n id: string;\n display: string;\n widgetClass: string;\n widgetPath?: string;\n}\nexport interface MultiChart {\n _otherChartTypes: ChartMeta[];\n _graphChartTypes: ChartMeta[];\n _1DChartTypes: ChartMeta[];\n _2DChartTypes: ChartMeta[];\n _NDChartTypes: ChartMeta[];\n _mapChartTypes: ChartMeta[];\n _anyChartTypes: ChartMeta[];\n _allChartTypes: ChartMeta[];\n _allMap;\n _allFamilies: string[];\n _allChartTypesMap;\n _allChartTypesByClass;\n\n hideRowOnLegendClick(): boolean;\n hideRowOnLegendClick(_: boolean): this;\n chartType(): string;\n chartType(_: string): this;\n chart(): Widget;\n chart(_: Widget): this;\n chart_access(): Widget;\n chart_access(_: Widget): this;\n\n click(_row, _column, _selected): void;\n dblclick(_row, _column, _selected): void;\n vertex_click(row, column, selected, more): void;\n vertex_dblclick(row, column, selected, more): void;\n edge_click(row, column, selected, more): void;\n edge_dblclick(row, column, selected, more): void;\n}\n\nMultiChart.prototype._otherChartTypes = [\n { id: \"FORM\", display: \"Form\", widgetClass: \"form_FieldForm\" }\n].map(function (item: any) { item.family = \"other\"; return item; });\nMultiChart.prototype._graphChartTypes = [\n { id: \"GRAPH\", display: \"Graph\", widgetClass: \"graph_Graph\" },\n { id: \"ADJACENCY_GRAPH\", display: \"Graph\", widgetClass: \"graph_AdjacencyGraph\" },\n { id: \"GRAPHC\", display: \"GraphC\", widgetClass: \"graph_GraphC\" }\n].map(function (item: any) { item.family = \"GRAPH\"; return item; });\nMultiChart.prototype._1DChartTypes = [\n].map(function (item: any) { item.family = \"1D\"; return item; });\nMultiChart.prototype._2DChartTypes = [\n { id: \"SUMMARY\", display: \"Summary\", widgetClass: \"chart_Summary\" },\n { id: \"BUBBLE\", display: \"Bubble\", widgetClass: \"chart_Bubble\" },\n { id: \"PIE\", display: \"Pie\", widgetClass: \"chart_Pie\" },\n { id: \"WORD_CLOUD\", display: \"Word Cloud\", widgetClass: \"other_WordCloud\" }\n].map(function (item: any) { item.family = \"2D\"; return item; });\nMultiChart.prototype._NDChartTypes = [\n { id: \"COLUMN\", display: \"Column\", widgetClass: \"chart_Column\" },\n { id: \"BAR\", display: \"Bar\", widgetClass: \"chart_Bar\" },\n { id: \"LINE\", display: \"Line\", widgetClass: \"chart_Line\" },\n { id: \"AREA\", display: \"Area\", widgetClass: \"chart_Area\" },\n { id: \"STEP\", display: \"Step\", widgetClass: \"chart_Step\" },\n { id: \"SCATTER\", display: \"Scatter\", widgetClass: \"chart_Scatter\" },\n { id: \"HEXBIN\", display: \"Hex Bin\", widgetClass: \"chart_HexBin\" }\n].map(function (item: any) { item.family = \"ND\"; return item; });\nMultiChart.prototype._mapChartTypes = [\n { id: \"CHORO_USSTATES\", display: \"US State Choropleth\", widgetClass: \"map_ChoroplethStates\" },\n { id: \"CHORO_USCOUNTIES\", display: \"US County Choropleth\", widgetClass: \"map_ChoroplethCounties\" },\n { id: \"CHORO_COUNTRIES\", display: \"Country Choropleth\", widgetClass: \"map_ChoroplethCountries\" },\n { id: \"GMAP_CHORO_USCOUNTIES\", display: \"Google Map US County Choropleth\", widgetClass: \"map_GMapCounties\" },\n { id: \"GOOGLE_MAP\", display: \"Google Map\", widgetClass: \"map_GMapLayered\" },\n { id: \"OPENSTREET\", display: \"Open Street Map\", widgetClass: \"map_OpenStreet\" }\n].map(function (item: any) { item.family = \"map\"; return item; });\nMultiChart.prototype._anyChartTypes = [\n { id: \"TABLE\", display: \"Table\", widgetClass: \"dgrid_Table\" },\n { id: \"TABLE_LEGACY\", display: \"Table (legacy)\", widgetClass: \"other_Table\" },\n { id: \"TABLE_NESTED\", display: \"Nested Table\", widgetClass: \"other_NestedTable\" },\n { id: \"TABLE_CALENDAR\", display: \"Table driven Calendar Heat Map\", widgetClass: \"other_CalendarHeatMap\" },\n { id: \"TABLE_BULLET\", display: \"Table driven bullet chart\", widgetClass: \"chart_Bullet\" },\n { id: \"TABLE_SELECT\", display: \"Table driven select\", widgetClass: \"other_Select\" },\n { id: \"TABLE_AUTOCOMPLETE\", display: \"Table driven auto complete\", widgetClass: \"other_AutoCompleteText\" },\n { id: \"TABLE_OPPORTUNITY\", display: \"Table driven opportunity widget\", widgetClass: \"graph_Opportunity\" },\n { id: \"TABLE_TREE\", display: \"Table driven tree\", widgetClass: \"tree_Dendrogram\" },\n { id: \"TABLE_TREEMAP\", display: \"Table driven Treemap\", widgetClass: \"tree_Treemap\" },\n { id: \"TABLE_SANKEY\", display: \"Table driven Sankey\", widgetClass: \"graph_Sankey\" },\n { id: \"TABLE_GMAP_PIN\", display: \"Table driven Google Map (pins)\", widgetClass: \"map_GMapPin\" },\n { id: \"TABLE_GMAP_PINLINE\", display: \"Table driven Google Map (pins/lines)\", widgetClass: \"map_GMapPinLine\" },\n { id: \"TABLE_XML_TREE\", display: \"Table driven XML Tree\", widgetClass: \"tree_Indented\" }\n].map(function (item: any) { item.family = \"any\"; return item; });\nMultiChart.prototype._allChartTypes =\n MultiChart.prototype._otherChartTypes.concat(\n MultiChart.prototype._graphChartTypes.concat(\n MultiChart.prototype._1DChartTypes.concat(\n MultiChart.prototype._2DChartTypes.concat(\n MultiChart.prototype._NDChartTypes.concat(\n MultiChart.prototype._mapChartTypes.concat(\n MultiChart.prototype._anyChartTypes\n ))))));\nMultiChart.prototype._allMap = d3Map(MultiChart.prototype._allChartTypes, function (item: any) { return item.family; });\nMultiChart.prototype._allFamilies = MultiChart.prototype._allMap.keys();\nMultiChart.prototype._allChartTypesMap = {};\nMultiChart.prototype._allChartTypesByClass = {};\nMultiChart.prototype._allChartTypes.forEach(function (item) {\n item.widgetPath = Utility.widgetPath(item.widgetClass);\n MultiChart.prototype._allChartTypesMap[item.id] = item;\n MultiChart.prototype._allChartTypesByClass[item.widgetClass] = item;\n});\n\nMultiChart.prototype.publishReset();\nMultiChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chartType\", \"BUBBLE\", \"set\", \"Chart Type\", MultiChart.prototype._allChartTypes.map(function (item) { return item.id; }), { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chart\", null, \"widget\", \"Chart\", null, { tags: [\"Basic\"] });\n\nconst _origChart = MultiChart.prototype.chart;\nMultiChart.prototype.chart = function (_?) {\n const retVal = _origChart.apply(this, arguments);\n if (arguments.length) {\n const context = this;\n if (this._allChartTypesByClass[_.classID()]) {\n this.chartType(this._allChartTypesByClass[_.classID()].id);\n } else {\n console.warn(\"Unknown Class ID: \" + _.classID());\n }\n _.click = function (_row, _column, _selected) {\n context.click.apply(context, arguments);\n };\n _.dblclick = function (_row, _column, _selected) {\n context.dblclick.apply(context, arguments);\n };\n _.vertex_click = function (row, column, selected, more) {\n context.vertex_click.apply(context, arguments);\n };\n _.vertex_dblclick = function (row, column, selected, more) {\n context.vertex_dblclick.apply(context, arguments);\n };\n _.edge_click = function (row, column, selected, more) {\n context.edge_click.apply(context, arguments);\n };\n _.edge_dblclick = function (row, column, selected, more) {\n context.edge_dblclick.apply(context, arguments);\n };\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n this._chartMonitor = _.monitor(function (key, newVal, oldVal) {\n context.broadcast(key, newVal, oldVal, _);\n });\n }\n return retVal;\n};\n","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, Widget } from \"@hpcc-js/common\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { MultiChart } from \"./MultiChart\";\n\nimport \"../src/ChartPanel.css\";\n\nclass Summary extends HTMLWidget {\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.append(\"p\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element.select(\"p\").text(this.text());\n }\n}\ninterface Summary {\n text(): string;\n text(_: string): this;\n}\nSummary.prototype.publish(\"text\", \"\", \"string\");\n\nexport class MultiChartPanel extends ChartPanel {\n\n _widget: MultiChart;\n\n constructor() {\n super();\n this.widget(new MultiChart().chartType(\"COLUMN\"));\n }\n\n multiChart(): MultiChart {\n return this._widget;\n }\n\n chartType(): string;\n chartType(_: string): this;\n chartType(_?: string): string | this {\n if (!arguments.length) return this._widget.chartType();\n this._widget.chartType(_);\n return this;\n }\n\n chart(): Widget;\n chart(_: Widget): this;\n chart(_?: Widget): Widget | this {\n if (!arguments.length) return this._widget.chart();\n this._widget.chart(_);\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeDefaults();\n this._widget.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeProperties();\n this._widget.chartTypeProperties(_);\n return this;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._widget instanceof MultiChart) {\n this._legend.dataFamily(this._widget.getChartDataFamily());\n }\n super.update(domNode, element);\n }\n}\nMultiChartPanel.prototype._class += \" composite_MultiChartPanel\";\n","import { OnOff } from \"@hpcc-js/form\";\nimport { Border, Toolbar } from \"@hpcc-js/layout\";\nimport { PropertyEditor } from \"@hpcc-js/other\";\n\nimport \"../src/Dermatology.css\";\n\nexport class Dermatology extends Border {\n _toolbar;\n _propEditor;\n _showProperties;\n _propsButton;\n _prevWidget;\n\n constructor() {\n super();\n\n this._toolbar = new Toolbar()\n .title(\"Dermatology\")\n ;\n this._propEditor = new PropertyEditor()\n .show_settings(true)\n ;\n }\n\n showProperties(_?) {\n if (!arguments.length) return this._showProperties;\n this._showProperties = _;\n this\n .rightPercentage(0)\n .rightSize(this._showProperties ? 360 : 0)\n .setContent(\"right\", this._showProperties ? this._propEditor : null)\n ;\n const widget = this.widget();\n if (widget && widget.designMode) {\n widget.designMode(this._showProperties);\n }\n return this;\n }\n\n toggleProperties() {\n return this.showProperties(!this.showProperties());\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this\n .topPercentage(0)\n .topSize(0)\n .setContent(\"top\", this._toolbar)\n ;\n this.getCell(\"top\").surfaceShadow(true);\n\n const context = this;\n this._propsButton = new OnOff()\n .id(this.id() + \"_props\")\n .value(\"Properties\")\n .on(\"click\", function () {\n context\n .toggleProperties()\n .render()\n ;\n })\n ;\n this._toolbar.widgets([this._propsButton]);\n }\n\n update(domNode, element) {\n this\n .topPercentage(0)\n .topSize(this.showToolbar() ? 32 : 0)\n ;\n\n super.update(domNode, element);\n\n const widget = this.widget();\n element.style(\"background-color\", widget && widget.surfaceShadow ? null : \"white\");\n }\n\n render(callback) {\n const widget = this.widget();\n if (widget !== this._prevWidget) {\n if (widget && widget.surfaceShadow) {\n widget.surfaceBackgroundColor_default(\"white\");\n }\n this.setContent(\"center\", widget);\n this._propEditor.widget(widget);\n this._prevWidget = widget;\n }\n return super.render(callback);\n }\n\n showToolbar: { (): boolean; (_: boolean): Dermatology };\n showToolbar_exists: () => boolean;\n widget: { (): any; (_: any): Dermatology };\n widget_exists: () => boolean;\n}\nDermatology.prototype._class += \" composite_Dermatology\";\n\nDermatology.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nDermatology.prototype.publish(\"widget\", null, \"widget\", \"Widget\");\n","import { Database, Text, Utility } from \"@hpcc-js/common\";\nimport { Button, Input, Select } from \"@hpcc-js/form\";\nimport { Border, Grid, Toolbar } from \"@hpcc-js/layout\";\nimport { Html, Legend } from \"@hpcc-js/other\";\nimport { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { MultiChart } from \"./MultiChart\";\n\nimport \"../src/MegaChart.css\";\n\nexport class MegaChart extends Border {\n _chart = new MultiChart();\n _toolbar = new Toolbar();\n _valueTitle = new Text();\n _domainTitle = new Text();\n _legend: Legend = new Legend();\n _csvButton;\n _infoButton;\n _maximizeButton;\n _legendButton;\n _chartTypeSelect;\n _prevLegendPosition;\n _prevShowToolbar;\n _1DChartTypes;\n _2DChartTypes;\n _NDChartTypes;\n _anyChartTypes;\n _allChartTypes;\n _contentClasses;\n _dataCount;\n\n constructor() {\n super();\n this._tag = \"div\";\n const context = this;\n this._chart.click = function () {\n context.click.apply(context, arguments);\n };\n this._chart.dblclick = function () {\n context.dblclick.apply(context, arguments);\n };\n this._chart.vertex_click = function () {\n context.vertex_click.apply(context, arguments);\n };\n this._chart.vertex_dblclick = function () {\n context.vertex_dblclick.apply(context, arguments);\n };\n this._chart.edge_click = function () {\n context.edge_click.apply(context, arguments);\n };\n this._chart.edge_dblclick = function () {\n context.edge_dblclick.apply(context, arguments);\n };\n }\n\n toolbarWidgets(_?) {\n if (!arguments.length) return this._toolbar.widgets();\n this._toolbar.widgets(_);\n return this;\n }\n\n chartTypeDefaults(_?) {\n if (!arguments.length) return this._chart.chartTypeDefaults();\n this._chart.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(_?) {\n if (!arguments.length) return this._chart.chartTypeProperties();\n this._chart.chartTypeProperties(_);\n return this;\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n if (!arguments.length) return this._chart.fields();\n this._chart.fields(_);\n return this;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._chart.columns();\n this._chart.columns(_, asDefault);\n return this;\n }\n\n data(_?) {\n if (!arguments.length) return this._chart.data();\n this._chart.data(_);\n return this;\n }\n\n downloadCSV() {\n Utility.downloadString(\"CSV\", this._chart.export(\"CSV\"));\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.topShrinkWrap(false).topPercentage(0).topSize(30);\n this._dataCount = new Html()\n .classed({ \"composite_MegaChart-dataCount\": true })\n .id(this.id() + \"_dataCount\")\n .html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\")\n .overflowX(\"visible\")\n .overflowY(\"visible\")\n ;\n\n this._csvButton = new Button()\n .classed({ \"composite_MegaChart-CSV\": true })\n .id(this.id() + \"_csv\")\n .value(\"CSV\")\n ;\n this._csvButton.click = function (a) {\n context.downloadCSV();\n };\n\n this._infoButton = new Button()\n .classed({ \"composite_MegaChart-Info\": true })\n .id(this.id() + \"_info\")\n .value(this.infoIcon())\n ;\n\n this._maximizeButton = new Button()\n .classed({ \"composite_MegaChart-Maximize\": true })\n .id(this.id() + \"_maximize\")\n .value(\"\\uf2d0\")\n ;\n this._maximizeButton.click = function (buttonWidget) {\n const target = context.target() as any;\n let node = target;\n const isMaximized = d3Select(target).classed(\"__hpccisMaximized\");\n\n // Find the layout_Grid ancestor\n const parentGrid = context.locateAncestor(\"layout_Grid\");\n if (parentGrid) {\n node = parentGrid.element().node();\n } else {\n node = document.body;\n }\n\n const targetElement = d3Select(context.target()) as any;\n if (isMaximized) {\n // Restore from maximized to natural size/position\n const targetParentBox = target.parentElement.getBoundingClientRect();\n const targetPaddingTop = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const targetPaddingLeft = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const targetPaddingRight = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const targetPaddingBottom = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement.transition()// .duration(3000)\n .style(\"top\", targetParentBox.top + \"px\")\n .style(\"left\", targetParentBox.left + \"px\")\n .style(\"width\", (targetParentBox.width - targetPaddingLeft - targetPaddingRight) + \"px\")\n .style(\"height\", (targetParentBox.height - targetPaddingTop - targetPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"position\", target.__old_position);\n targetElement.style(\"z-index\", target.__old_zindex);\n targetElement.style(\"background-color\", target.__old_backgroundColor);\n targetElement.style(\"box-shadow\", target.__old_boxshadow);\n context\n .resize({\n width: targetParentBox.width - targetPaddingLeft - targetPaddingRight,\n height: targetParentBox.height - targetPaddingTop - targetPaddingBottom\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d0\").render();\n });\n } else {\n // Maximize this MegaChart\n target.__old_position = target.style.position;\n target.__old_zindex = target.style.zIndex;\n target.__old_boxshadow = target.style.boxShadow;\n target.__old_backgroundColor = context.element().style(\"background-color\");\n const grid = d3Select(node).datum() as Grid;\n const gridTarget = grid.target();\n const gridBox = grid ? gridTarget.getBoundingClientRect() : node.getBoundingClientRect();\n const gridPaddingTop = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const gridPaddingLeft = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const gridPaddingRight = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const gridPaddingBottom = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement\n .style(\"position\", \"fixed\")\n .style(\"z-index\", 999999)\n .style(\"box-shadow\", \"0 8px 8px 0 rgba(0,0,0,.14),0 12px 4px -8px rgba(0,0,0,.2),0 4px 20px 0 rgba(0,0,0,.12)\")\n .style(\"background-color\", target.__old_backgroundColor)\n .transition()// .duration(3000)\n .style(\"top\", (gridBox.top + gridPaddingTop) + \"px\")\n .style(\"left\", (gridBox.left + gridPaddingLeft) + \"px\")\n .style(\"width\", (gridBox.width - gridPaddingLeft - gridPaddingRight) + \"px\")\n .style(\"height\", (gridBox.height - gridPaddingTop - gridPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"background-color\", context.maximizedBackgroundColor());\n context\n .resize({\n width: (gridBox.width - gridPaddingLeft - gridPaddingRight),\n height: (gridBox.height - gridPaddingTop - gridPaddingBottom)\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d1\").render();\n });\n }\n\n d3Select(target).classed(\"__hpccisMaximized\", !isMaximized);\n };\n\n this._legendButton = new Input()\n .classed({ \"composite_MegaChart-legend\": true })\n .id(this.id() + \"_legend\")\n .type(\"checkbox\")\n .inlineLabel(\"Legend: \")\n ;\n this._legendButton.click = function (a) {\n context.render();\n };\n\n this._chartTypeSelect = new Select()\n .classed({ \"composite_MegaChart-chartType\": true })\n .id(this.id() + \"_chartType\")\n .selectOptions(this._allChartTypes.map(function (a) { return [a.id, a.display]; }))\n .value(this.chartType())\n ;\n this._chartTypeSelect.change = function (a) {\n context.chartType(a.value()).render();\n };\n\n this.setContent(\"center\", this._chart);\n\n this._legend\n .targetWidget(this._chart)\n .orientation([\"top\", \"bottom\"].indexOf(this.legendPosition()) !== -1 ? \"horizontal\" : \"vertical\")\n .fixedSize(true)\n ;\n\n this._prevLegendPosition = this.legendPosition();\n\n if (this.valueAxisTitle()) {\n this.setContent(\"left\", this._valueTitle.rotation(-90)).leftShrinkWrap(true);\n }\n if (this.domainAxisTitle()) {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n\n if (this.legendPosition() !== \"none\") {\n this.setContent(this.legendPosition(), this._legend)[this.legendPosition() + \"ShrinkWrap\"](true);\n }\n }\n\n update(domNode, element) {\n function showHideButton(twArr2, button, show) {\n if (show && twArr2.indexOf(button) === -1) {\n twArr2.push(button);\n } else if (!show) {\n const idx = twArr2.indexOf(button);\n if (idx >= 0) {\n twArr2.splice(idx, 1);\n }\n }\n }\n\n if (this._chart && typeof this._chart.hideRowOnLegendClick === \"function\") {\n this._chart.hideRowOnLegendClick(this.hideRowOnLegendClick());\n }\n\n this._dataCount.html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\");\n\n this._chartTypeSelect.value(this.chartType());\n const twArr = this.toolbarWidgets();\n showHideButton(twArr, this._csvButton, this.showCSV());\n showHideButton(twArr, this._maximizeButton, this.showMaximize());\n showHideButton(twArr, this._legendButton, this.toolbarShowLegend());\n showHideButton(twArr, this._chartTypeSelect, this.showChartSelect());\n showHideButton(twArr, this._infoButton, this.showInfoButton());\n showHideButton(twArr, this._dataCount, this.showCount());\n this.toolbarWidgets(twArr);\n\n if (this._prevShowToolbar !== this.showToolbar()) {\n this.setContent(\"top\", this.showToolbar() ? this._toolbar : null);\n this._prevShowToolbar = this.showToolbar();\n }\n\n // TODO: Proxy + themes not working...\n this._toolbar\n .fontSize(this.titleFontSize())\n .fontColor(this.titleFontColor())\n .fontFamily(this.titleFontFamily())\n .fontBold(this.titleFontBold())\n .backgroundColor(this.titleBackgroundColor())\n ;\n\n this._chart\n .data(this.data());\n\n if (this._chart.chartType() !== this.chartType()) {\n this._chart.chartType(this.chartType());\n }\n\n let legendPosition = this.legendPosition();\n if (this.toolbarShowLegend() && !this._legendButton.checked()) {\n legendPosition = \"none\";\n }\n if (this._prevLegendPosition !== legendPosition) {\n if (this._prevLegendPosition !== \"none\") {\n this.clearContent(this._prevLegendPosition);\n }\n this._prevLegendPosition = legendPosition;\n if (legendPosition !== \"none\") {\n this._legend = new Legend().targetWidget(this.getContent(\"center\").fixedSize(true));\n this.setContent(legendPosition, this._legend);\n this._legend.orientation([\"top\", \"bottom\"].indexOf(legendPosition) !== -1 ? \"horizontal\" : \"vertical\");\n }\n }\n this._contentClasses = this.getContentClasses();\n\n if (this.valueAxisTitle() && this._contentClasses.left !== \"common_Text\") {\n if (legendPosition !== \"left\") {\n this.setContent(\"left\", this._valueTitle.rotation(-90));\n }\n }\n if (this.domainAxisTitle() && this._contentClasses.bottom !== \"common_Text\") {\n if (legendPosition !== \"bottom\") {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n }\n\n this._legend.dataFamily(this._chart.getChartDataFamily());\n\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getContentClasses() {\n const obj: any = {};\n const t = this.getContent(\"top\");\n const r = this.getContent(\"right\");\n const b = this.getContent(\"bottom\");\n const l = this.getContent(\"left\");\n obj.top = t !== null ? t.classID() : undefined;\n obj.right = r !== null ? r.classID() : undefined;\n obj.bottom = b !== null ? b.classID() : undefined;\n obj.left = l !== null ? l.classID() : undefined;\n return obj;\n }\n\n serializeState() {\n const state: any = {\n title: this.title(),\n data: this.data()\n };\n const chart = this.chart();\n if (chart) {\n if (chart.serializeState) {\n state.chart = chart.serializeState();\n delete state.chart.data;\n }\n }\n return state;\n }\n\n deserializeState(state) {\n if (state) {\n this\n .title(state.title)\n .data(state.data)\n ;\n const chart = this.chart();\n if (chart && state.chart) {\n if (chart.serializeState) {\n chart.deserializeState(state.chart);\n }\n }\n }\n return this;\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n vertex_click(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex click: \" + more.vertex.id());\n }\n }\n\n vertex_dblclick(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex double click: \" + more.vertex.id());\n }\n }\n\n edge_click(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge click: \" + more.edge.id());\n }\n }\n\n edge_dblclick(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge double click: \" + more.edge.id());\n }\n }\n\n hideRowOnLegendClick: { (): boolean; (_: boolean): MegaChart };\n hideRowOnLegendClick_exists: () => boolean;\n showToolbar: { (): boolean; (_: boolean): MegaChart };\n showToolbar_exists: () => boolean;\n titleFontSize: { (): number; (_: number): MegaChart };\n titleFontSize_exists: () => boolean;\n titleFontColor: { (): string; (_: string): MegaChart };\n titleFontColor_exists: () => boolean;\n titleFontFamily: { (): string; (_: string): MegaChart };\n titleFontFamily_exists: () => boolean;\n titleFontBold: { (): boolean; (_: boolean): MegaChart };\n titleFontBold_exists: () => boolean;\n titleBackgroundColor: { (): string; (_: string): MegaChart };\n titleBackgroundColor_exists: () => boolean;\n maximizedBackgroundColor: { (): string; (_: string): MegaChart };\n maximizedBackgroundColor_exists: () => boolean;\n showChartSelect: { (): boolean; (_: boolean): MegaChart };\n showChartSelect_exists: () => boolean;\n showCSV: { (): boolean; (_: boolean): MegaChart };\n showCSV_exists: () => boolean;\n showCount: { (): boolean; (_: boolean): MegaChart };\n showCount_exists: () => boolean;\n showMaximize: { (): boolean; (_: boolean): MegaChart };\n showMaximize_exists: () => boolean;\n toolbarShowLegend: { (): boolean; (_: boolean): MegaChart };\n toolbarShowLegend_exists: () => boolean;\n showInfoButton: { (): boolean; (_: boolean): MegaChart };\n showInfoButton_exists: () => boolean;\n infoIcon: { (): string; (_: string): MegaChart };\n infoIcon_exists: () => boolean;\n legendPosition: { (): string; (_: string): MegaChart };\n legendPosition_exists: () => boolean;\n\n title: { (): string; (_: string): MegaChart };\n title_exists: () => boolean;\n\n domainAxisTitle: { (): string; (_: string): MegaChart };\n domainAxisTitle_exists: () => boolean;\n valueAxisTitle: { (): string; (_: string): MegaChart };\n valueAxisTitle_exists: () => boolean;\n\n chartType: { (): string; (_: string): MegaChart };\n chartType_exists: () => boolean;\n chart: { (): any; (_: any): MegaChart };\n chart_exists: () => boolean;\n}\nMegaChart.prototype._class += \" composite_MegaChart\";\n\nMegaChart.prototype._1DChartTypes = MultiChart.prototype._1DChartTypes;\nMegaChart.prototype._2DChartTypes = MultiChart.prototype._2DChartTypes;\nMegaChart.prototype._NDChartTypes = MultiChart.prototype._NDChartTypes;\nMegaChart.prototype._anyChartTypes = MultiChart.prototype._anyChartTypes;\nMegaChart.prototype._allChartTypes = MultiChart.prototype._allChartTypes;\n\nMegaChart.prototype.publishReset();\n\nMegaChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showToolbar\", true, \"boolean\", \"Enable/Disable Toolbar widget\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"title\", \"_toolbar\", \"title\");\nMegaChart.prototype.publish(\"ddlParamsFormat\", \"\", \"string\", \"DDL Param Format '{fname}, {lname}'\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleBackgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\nMegaChart.prototype.publish(\"maximizedBackgroundColor\", \"#FFFFFF\", \"html-color\", \"Background Color while maximized\", null, { tags: [\"Intermediate\"], optional: true });\n\nMegaChart.prototype.publish(\"showChartSelect\", true, \"boolean\", \"Show/Hide the chartType dropdown in the toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCSV\", true, \"boolean\", \"Show/Hide CSV button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCount\", false, \"boolean\", \"Show/Hide Data Count\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showMaximize\", false, \"boolean\", \"Show/Hide Maximize button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"toolbarShowLegend\", false, \"boolean\", \"Show/Hide Legend button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showInfoButton\", false, \"boolean\", \"Show/Hide Info button in toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"infoIcon\", \"\\uf05a\", \"string\", \"Help Icon\", null, { tags: [\"Basic\"] });\n\nMegaChart.prototype.publish(\"legendPosition\", \"none\", \"set\", \"Position of the Legend widget\", [\"none\", \"top\", \"right\", \"bottom\", \"left\"], { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"legendFormat\", \"_legend\", \"rainbowFormat\");\nMegaChart.prototype.publishProxy(\"legendBins\", \"_legend\", \"rainbowBins\");\n\nMegaChart.prototype.publishProxy(\"domainAxisTitle\", \"_domainTitle\", \"text\");\nMegaChart.prototype.publishProxy(\"valueAxisTitle\", \"_valueTitle\", \"text\");\n\nMegaChart.prototype.publishProxy(\"chartType\", \"_chart\", \"chartType\");\nMegaChart.prototype.publishProxy(\"chart\", \"_chart\", \"chart\");\n","import { Platform, Utility, Widget } from \"@hpcc-js/common\";\nimport { Persist } from \"@hpcc-js/other\";\nimport { requireWidget } from \"./Utility\";\n\nexport function retrofit_114_serialization(state, replacement_version) {\n replacement_version = !replacement_version || replacement_version === \"1.14.2-dev\" ? \"1.18.0\" : replacement_version;\n if (!state.__version) return state;\n const state_version_obj = Utility.parseVersionString(state.__version);\n const target_version_obj = Utility.parseVersionString(replacement_version);\n if (state_version_obj.major === 1 && state_version_obj.minor === 14) {\n console.info(\"Upgrading old persist from \" + state.__version + \" to \" + replacement_version);\n let _json_str = JSON.stringify(state);\n _json_str = _json_str.split('\"' + state.__version).join('\"' + replacement_version);\n\n const ret_obj = JSON.parse(_json_str);\n if (ret_obj.__properties && ret_obj.__properties.content) {\n ret_obj.__properties.content.forEach(function (n) {// FOR EACH top tier layout_Cell\n if (JSON.stringify(n).split(\"graph_Graph\").length > 1 && target_version_obj.minor >= 16) {\n n.__properties.widget.__id = n.__properties.widget.__properties.widget.__id;\n n.__properties.widget.__class = \"composite_MegaChart\";\n n.__properties.widget.__properties.showCSV = false;\n n.__properties.widget.__properties.chartType = \"GRAPH\";\n n.__properties.widget.__properties.chart = n.__properties.widget.__properties.widget;\n delete n.__properties.widget.__properties.chart.__id;\n delete n.__properties.widget.__properties.widget;\n }\n if (\"undefined\" === typeof n.__properties.fields) {\n n.__properties.fields = [];\n }\n });\n }\n return ret_obj;\n } else {\n return state;\n }\n}\n\nexport function deserializeFromObject(widget, state) {\n const promises = [];\n Persist.widgetPropertyWalker(widget, null, (w, item) => {\n w[item.id + \"_reset\"]();\n if (state.__properties[item.id] !== undefined) {\n switch (item.type) {\n case \"widget\":\n const widgetKey = item.id;\n promises.push(create(state.__properties[item.id]).then((w2: any) => {\n w2._owner = w;\n w[widgetKey](w2);\n return w2;\n }));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgetArrayKey = item.id;\n const widgetStateArray = state.__properties[item.id];\n if (widgetStateArray.length) {\n const arrPromises = [];\n for (const widgetState of widgetStateArray) {\n arrPromises.push(create(widgetState).then((widgetItem: any) => {\n widgetItem._owner = w;\n return widgetItem;\n }));\n }\n promises.push(Promise.all(arrPromises).then(widgetArray => {\n w[widgetArrayKey](widgetArray);\n }));\n }\n break;\n default:\n w[item.id](state.__properties[item.id]);\n break;\n }\n }\n });\n return Promise.all(promises).then(widgets => {\n if (state.__data) {\n for (const key in state.__data) {\n if (state.__data.HasOwnProperty(key)) {\n switch (key) {\n case \"data\":\n widget.data(state.__data[key]);\n break;\n default:\n console.warn(\"Unexpected __data item: \" + key);\n widget[key](state.__data[key]);\n break;\n }\n }\n }\n }\n if (state.__state) {\n if (widget.deserializeState) {\n widget.deserializeState(state.__state);\n } else if (state.__state.data && widget.data) {\n widget.data(state.__state.data);\n }\n }\n return widget;\n });\n}\n\nexport function deserialize(widget, state) {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && widget._id !== state.__id) {\n console.warn(\"Deserialize: IDs do not match - \" + widget._id);\n }\n deserializeFromObject(widget, state);\n}\n\nexport function create(state: any): Promise<Widget> {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n state = retrofit_114_serialization(state, Platform.version());\n return requireWidget(state.__class).then((WidgetClass: any) => {\n const widget = new WidgetClass();\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && state.__id.indexOf(\"_pe\") !== 0) {\n widget._id = state.__id;\n }\n return deserializeFromObject(widget, state);\n }).catch(function (e) {\n console.error(\"Persist.create: ***exception***\");\n console.error(e);\n });\n}\n\nexport function clone(widget) {\n create(Persist.serializeToObject(widget, undefined, true, true));\n}\n"],"names":["Utility","INDChart","IGraph","HTMLWidget","d3Map","ChartPanel","Toolbar","PropertyEditor","OnOff","Border","Text","Legend","Html","Button","d3Select","Input","Select","Persist","Platform"],"mappings":"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","x_google_ignoreList":[1,4]}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/__package__.ts", "../src/ChartPanel.ts", "../../../node_modules/grid-list/src/gridList.js", "../../layout/src/__package__.ts", "../../layout/src/AbsoluteSurface.ts", "../../layout/src/AbsoluteSurface.css", "../../layout/src/Accordion.ts", "../../layout/src/Accordion.css", "../../layout/src/Border.ts", "../../layout/src/Cell.ts", "../../layout/src/Surface.ts", "../../layout/src/Surface.css", "../../layout/src/Cell.css", "../../layout/src/Border.css", "../../layout/src/Border2.ts", "../../layout/src/Border2.css", "../../layout/src/Carousel.ts", "../../layout/src/Carousel.css", "../../layout/src/ChartPanel.ts", "../../layout/src/Legend.ts", "../../../node_modules/d3-path/src/path.js", "../../../node_modules/d3-shape/src/constant.js", "../../../node_modules/d3-shape/src/math.js", "../../../node_modules/d3-shape/src/symbol/circle.js", "../../../node_modules/d3-shape/src/symbol/cross.js", "../../../node_modules/d3-shape/src/symbol/diamond.js", "../../../node_modules/d3-shape/src/symbol/star.js", "../../../node_modules/d3-shape/src/symbol/square.js", "../../../node_modules/d3-shape/src/symbol/triangle.js", "../../../node_modules/d3-shape/src/symbol/wye.js", "../../../node_modules/d3-shape/src/symbol.js", "../../../node_modules/d3-svg-legend/src/legend.js", "../../../node_modules/d3-svg-legend/src/color.js", "../../../node_modules/d3-svg-legend/src/size.js", "../../../node_modules/d3-svg-legend/src/symbol.js", "../../../node_modules/d3-svg-legend/src/helpers.js", "../../../node_modules/d3-svg-legend/index.js", "../../layout/src/Modal.ts", "../../layout/src/Modal.css", "../../layout/src/ChartPanel.css", "../../layout/src/FlexGrid.ts", "../../layout/src/FlexGrid.css", "../../layout/src/Grid.ts", "../../layout/src/Grid.css", "../../layout/src/HorizontalList.ts", "../../layout/src/Layered.ts", "../../layout/src/Layered.css", "../../layout/src/Popup.ts", "../../layout/src/Tabbed.ts", "../../layout/src/Tabbed.css", "../../layout/src/Toolbar.ts", "../../layout/src/Toolbar.css", "../../layout/src/VerticalList.ts", "../../dgrid2/src/__package__.ts", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/preact/hooks/src/index.js", "../../../node_modules/preact/compat/src/util.js", "../../../node_modules/preact/compat/src/PureComponent.js", "../../../node_modules/preact/compat/src/memo.js", "../../../node_modules/preact/compat/src/forwardRef.js", "../../../node_modules/preact/compat/src/Children.js", "../../../node_modules/preact/compat/src/suspense.js", "../../../node_modules/preact/compat/src/suspense-list.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/compat/src/portals.js", "../../../node_modules/preact/compat/src/render.js", "../../../node_modules/preact/compat/src/index.js", "../../dgrid2/src/table.ts", "../../../node_modules/clsx/dist/clsx.mjs", "../../../node_modules/preact/jsx-runtime/src/utils.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/jsx-runtime/src/index.js", "../../../node_modules/react-data-grid/src/utils/colSpanUtils.ts", "../../../node_modules/react-data-grid/src/utils/domUtils.ts", "../../../node_modules/react-data-grid/src/utils/eventUtils.ts", "../../../node_modules/react-data-grid/src/utils/keyboardUtils.ts", "../../../node_modules/react-data-grid/src/utils/renderMeasuringCells.tsx", "../../../node_modules/react-data-grid/src/utils/selectedCellUtils.ts", "../../../node_modules/react-data-grid/src/style/cell.ts", "../../../node_modules/react-data-grid/src/utils/styleUtils.ts", "../../../node_modules/react-data-grid/src/utils/index.ts", "../../../node_modules/react-data-grid/src/cellRenderers/renderCheckbox.tsx", "../../../node_modules/react-data-grid/src/cellRenderers/renderToggleGroup.tsx", "../../../node_modules/react-data-grid/src/cellRenderers/renderValue.tsx", "../../../node_modules/react-data-grid/src/DataGridDefaultRenderersProvider.ts", "../../../node_modules/react-data-grid/src/cellRenderers/SelectCellFormatter.tsx", "../../../node_modules/react-data-grid/src/hooks/useRowSelection.ts", "../../../node_modules/react-data-grid/src/Columns.tsx", "../../../node_modules/react-data-grid/src/hooks/useCalculatedColumns.ts", "../../../node_modules/react-data-grid/src/hooks/useLayoutEffect.ts", "../../../node_modules/react-data-grid/src/hooks/useColumnWidths.ts", "../../../node_modules/react-data-grid/src/hooks/useGridDimensions.ts", "../../../node_modules/react-data-grid/src/hooks/useLatestFunc.ts", "../../../node_modules/react-data-grid/src/hooks/useRovingTabIndex.ts", "../../../node_modules/react-data-grid/src/hooks/useViewportColumns.ts", "../../../node_modules/react-data-grid/src/hooks/useViewportRows.ts", "../../../node_modules/react-data-grid/src/DragHandle.tsx", "../../../node_modules/react-data-grid/src/EditCell.tsx", "../../../node_modules/react-data-grid/src/GroupedColumnHeaderCell.tsx", "../../../node_modules/react-data-grid/src/renderHeaderCell.tsx", "../../../node_modules/react-data-grid/src/HeaderCell.tsx", "../../../node_modules/react-data-grid/src/style/row.ts", "../../../node_modules/react-data-grid/src/HeaderRow.tsx", "../../../node_modules/react-data-grid/src/GroupedColumnHeaderRow.tsx", "../../../node_modules/react-data-grid/src/Cell.tsx", "../../../node_modules/react-data-grid/src/Row.tsx", "../../../node_modules/react-data-grid/src/ScrollToCell.tsx", "../../../node_modules/react-data-grid/src/sortStatus.tsx", "../../../node_modules/react-data-grid/src/style/core.ts", "../../../node_modules/react-data-grid/src/SummaryCell.tsx", "../../../node_modules/react-data-grid/src/SummaryRow.tsx", "../../../node_modules/react-data-grid/src/DataGrid.tsx", "../../../node_modules/react-data-grid/src/GroupCell.tsx", "../../../node_modules/react-data-grid/src/GroupRow.tsx", "../../../node_modules/react-data-grid/src/TreeDataGrid.tsx", "../../../node_modules/react-data-grid/src/editors/textEditor.tsx", "../../dgrid2/src/reactTable.tsx", "../../dgrid2/src/hooks.ts", "../../../node_modules/react-data-grid/lib/styles.css", "../../dgrid2/src/table.css", "../src/MultiChart.ts", "../src/Utility.ts", "../src/ChartPanel.css", "../src/Dermatology.ts", "../src/Dermatology.css", "../src/MegaChart.ts", "../src/MegaChart.css", "../src/Persist.ts"],
|
|
4
|
+
"sourcesContent": ["export const PKG_NAME = \"@hpcc-js/composite\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n", "import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { MultiChart } from \"./MultiChart.ts\";\n\nimport \"../src/ChartPanel.css\";\n\nclass Summary extends HTMLWidget {\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.append(\"p\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element.select(\"p\").text(this.text());\n }\n}\ninterface Summary {\n text(): string;\n text(_: string): this;\n}\nSummary.prototype.publish(\"text\", \"\", \"string\");\n\nexport class MultiChartPanel extends ChartPanel<MultiChart> {\n\n constructor() {\n super();\n this.widget(new MultiChart().chartType(\"COLUMN\"));\n }\n\n multiChart(): MultiChart {\n return this._widget;\n }\n\n chartType(): string;\n chartType(_: string): this;\n chartType(_?: string): string | this {\n if (!arguments.length) return this._widget.chartType();\n this._widget.chartType(_);\n return this;\n }\n\n chart(): Widget;\n chart(_: Widget): this;\n chart(_?: Widget): Widget | this {\n if (!arguments.length) return this._widget.chart();\n this._widget.chart(_);\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeDefaults();\n this._widget.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeProperties();\n this._widget.chartTypeProperties(_);\n return this;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._widget instanceof MultiChart) {\n this._legend.dataFamily(this._widget.getChartDataFamily());\n }\n super.update(domNode, element);\n }\n}\nMultiChartPanel.prototype._class += \" composite_MultiChartPanel\";\n", "(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", "export const PKG_NAME = \"@hpcc-js/layout\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\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}\nAbsoluteSurface.prototype._class += \" layout_AbsoluteSurface\";\n\nexport interface AbsoluteSurface {\n units(): string;\n units(_: string): this;\n widgetX(): number;\n widgetX(_: number): this;\n widgetY(): number;\n widgetY(_: number): this;\n widgetWidth(): string;\n widgetWidth(_: string): this;\n widgetHeight(): string;\n widgetHeight(_: string): this;\n widget(): any;\n widget(_: any): this;\n opacity(): number;\n opacity(_: number): this;\n}\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", "(function(){\n if (!document.getElementById('e4246716')) {\n var e = document.createElement('style');\n e.id = 'e4246716';\n e.textContent = `.layout_AbsoluteSurface {\n pointer-events: none !important;\n}\n\n.layout_AbsoluteSurface > .placeholder {\n position: relative;\n overflow: hidden;\n pointer-events: all;\n}\n`;\n document.head.appendChild(e);\n }\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}\nAccordion.prototype._class += \" layout_Accordion\";\n\nexport interface Accordion {\n content(): any[];\n content(_: any[]): this;\n title(): string;\n title(_: string): this;\n openIcon(): string;\n openIcon(_: string): this;\n closedIcon(): string;\n closedIcon(_: string): this;\n titleFontColor(): string;\n titleFontColor(_: string): this;\n titleBackgroundColor(): string;\n titleBackgroundColor(_: string): this;\n\n defaultCollapsed(): boolean;\n defaultCollapsed(_: boolean): this;\n}\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", "(function(){\n if (!document.getElementById('d5b8185a')) {\n var e = document.createElement('style');\n e.id = 'd5b8185a';\n e.textContent = `.layout_Accordion > ul{\n position:relative;\n}\n.layout_Accordion.open > span {\n font-style:italic;\n}\n.layout_Accordion.closed > ul {\n height: 0px;\n overflow: hidden;\n}\n.layout_Accordion.open > ul{\n display:block;\n}\n.layout_Accordion > .collapsible-icon,\n.layout_Accordion > .collapsible-title{\n cursor:pointer;\n box-sizing: border-box;\n}\n.layout_Accordion > .collapsible-title{\n display:block;\n width:100%;\n}\n.layout_Accordion > .collapsible-title{\n font-size: 13px;\n color:#FFF;\n padding:4px 8px;\n height:26px;\n -webkit-box-shadow: inset 0px -1px 1px 0px rgba(0,0,0,0.2);\n -moz-box-shadow: inset 0px -1px 1px 0px rgba(0,0,0,0.2);\n box-shadow: inset 0px -1px 1px 0px rgba(0,0,0,0.2);\n}\n.layout_Accordion li{ \n background-color:#FFFFFF; \n}\n.layout_Accordion > ul, \n.layout_Accordion > .collapsible-title{ \n background-color:#333; \n}\n.layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion > .collapsible-title{ \n background-color:#555; \n}\n.layout_Accordion .layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion .layout_Accordion > .collapsible-title{ \n background-color:#777; \n}\n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > .collapsible-title{ \n background-color:#999; \n}\n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > .collapsible-title{ \n background-color:#BBB; \n}\n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > .collapsible-title{ \n background-color:#CCC; \n}\n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion > .collapsible-title{ \n background-color:#DDD; \n}\n.layout_Accordion > ul, \n.layout_Accordion > span{ \n padding-left:0px;\n}\n.layout_Accordion .layout_Accordion > ul, \n.layout_Accordion .layout_Accordion > span{ \n padding-left: 12px;\n}\n\n.layout_Accordion > .collapsible-title:before{\n padding: 4px 8px 4px 8px;\n position: absolute;\n left: 0;\n top: 0;\n}\n.layout_Accordion > .collapsible-icon{\n position:absolute;\n top:0px;\n right:0px;\n width:24px;\n height:24px;\n color:#FFF;\n}`;\n document.head.appendChild(e);\n }\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.ts\";\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}\nBorder.prototype._class += \" layout_Border\";\n\nexport interface Border {\n designMode(): boolean;\n designMode(_: boolean): this;\n\n content(): any[];\n content(_: any[]): this;\n\n gutter(): number;\n gutter(_: number): this;\n\n topShrinkWrap(): boolean;\n topShrinkWrap(_: boolean): this;\n leftShrinkWrap(): boolean;\n leftShrinkWrap(_: boolean): this;\n rightShrinkWrap(): boolean;\n rightShrinkWrap(_: boolean): this;\n bottomShrinkWrap(): boolean;\n bottomShrinkWrap(_: boolean): this;\n\n topSize(): number;\n topSize(_: number): this;\n leftSize(): number;\n leftSize(_: number): this;\n rightSize(): number;\n rightSize(_: number): this;\n bottomSize(): number;\n bottomSize(_: number): this;\n\n topPercentage(): number;\n topPercentage(_: number): this;\n leftPercentage(): number;\n leftPercentage(_: number): this;\n rightPercentage(): number;\n rightPercentage(_: number): this;\n bottomPercentage(): number;\n bottomPercentage(_: number): this;\n\n surfacePadding(): number;\n surfacePadding(_: number): this;\n\n sectionTypes(): any[];\n sectionTypes(_: any[]): this;\n}\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 { Widget } from \"@hpcc-js/common\";\nimport { select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport { Surface } from \"./Surface.ts\";\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}\nCell.prototype._class += \" layout_Cell\";\n\nexport interface Cell {\n gridRow(): number;\n gridRow(_: number): this;\n gridCol(): number;\n gridCol(_: number): this;\n gridRowSpan(): number;\n gridRowSpan(_: number): this;\n gridColSpan(): number;\n gridColSpan(_: number): this;\n\n indicatorGlowColor(): string;\n indicatorGlowColor(_: string): this;\n indicatorBorderColor(): string;\n indicatorBorderColor(_: string): this;\n indicatorOpacity(): number;\n indicatorOpacity(_: number): this;\n}\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 { 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 // Events ---\n click(obj) {\n }\n}\nSurface.prototype._class += \" layout_Surface\";\n\nexport interface Surface {\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 title(): string;\n title(_: string): this;\n altText(): string;\n altText(_: string): this;\n altText_exists(): boolean;\n surfaceTitlePadding(): number;\n surfaceTitlePadding(_: number): this;\n surfaceTitlePadding_exists(): boolean;\n surfaceTitleFontSize(): number;\n surfaceTitleFontSize(_: number): this;\n surfaceTitleFontSize_exists(): boolean;\n surfaceTitleFontColor(): string;\n surfaceTitleFontColor(_: string): this;\n surfaceTitleFontFamily(): string;\n surfaceTitleFontFamily(_: string): this;\n surfaceTitleFontBold(): boolean;\n surfaceTitleFontBold(_: boolean): this;\n surfaceTitleBackgroundColor(): string;\n surfaceTitleBackgroundColor(_: string): this;\n surfaceTitleAlignment(): string;\n surfaceTitleAlignment(_: string): this;\n\n surfaceShadow(): boolean;\n surfaceShadow(_: boolean): this;\n surfacePadding(): string;\n surfacePadding(_: string): this;\n surfacePadding_exists(): boolean;\n surfaceBackgroundColor(): string;\n surfaceBackgroundColor(_: string): this;\n surfaceBorderWidth(): number;\n surfaceBorderWidth(_: number): this;\n surfaceBorderWidth_exists(): boolean;\n surfaceBorderColor(): string;\n surfaceBorderColor(_: string): this;\n surfaceBorderRadius(): number;\n surfaceBorderRadius(_: number): this;\n surfaceBorderRadius_exists(): boolean;\n\n buttonAnnotations(): any[];\n buttonAnnotations(_: any[]): this;\n\n widget(): Widget;\n widget(_: Widget): this;\n}\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", "(function(){\n if (!document.getElementById('41033346')) {\n var e = document.createElement('style');\n e.id = '41033346';\n e.textContent = `.layout_Surface {\n box-sizing: border-box;\n margin: 0px;\n border: 1px solid #e5e5e5;\n overflow:hidden;\n height: 100%;\n width: 100%;\n}\n\n.layout_Surface.shadow2 {\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)\n}\n\n.layout_Surface > h3 {\n margin: 0px;\n padding: 2px;\n background-color: #e5e5e5;\n}\n.layout_Surface .html-button-container {\n position: absolute;\n right: 0px;\n top:3px;\n}\n\n.layout_Surface > div {\n padding: 8px;\n}\n\n.layout_Surface .html-button-container .surface-button {\n margin-right: 5px;\n}\n.layout_Surface .html-button-container .surface-button i {\n opacity: 0.8;\n}\n\n.layout_Surface .html-button-container .surface-button:hover { opacity: 1; }\n.layout_Surface .html-button-container .surface-button:active { opacity: 0.5; }\n\ndiv[draggable=true].hideDragCellContent.content-icon:before{\n content: \"\\f080\";\n font-family: FontAwesome;\n position: absolute;\n top: calc(50% - 74px);\n left: calc(50% - 56px);\n font-size: 100px;\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Line:before{\n content:\"\\f201\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Pie:before{\n top: calc(50% - 72px);\n left: calc(50% - 45px);\n content:\"\\f200\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Area:before{\n content:\"\\f1fe\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Gauge:before{\n content:\"\\f0e4\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Table:before{\n content:\"\\f0ce\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Form:before{\n content:\"\\f11c\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Grid:before,\ndiv[draggable=true].hideDragCellContent.content-icon-Graph:before,\ndiv[draggable=true].hideDragCellContent.content-icon-Border:before,\ndiv[draggable=true].hideDragCellContent.content-icon-Tabbed:before,\ndiv[draggable=true].hideDragCellContent.content-icon-Accordion:before,\ndiv[draggable=true].hideDragCellContent.content-icon-MultiChart:before,\ndiv[draggable=true].hideDragCellContent.content-icon-MultiChartSurface:before{\n content:\"\\f247\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-ChoroplethStates:before,\ndiv[draggable=true].hideDragCellContent.content-icon-ChoroplethStatesHeat:before,\ndiv[draggable=true].hideDragCellContent.content-icon-ChoroplethCounties:before,\ndiv[draggable=true].hideDragCellContent.content-icon-ChoroplethCountries:before,\ndiv[draggable=true].hideDragCellContent.content-icon-GMap:before,\ndiv[draggable=true].hideDragCellContent.content-icon-GMapHeat:before,\ndiv[draggable=true].hideDragCellContent.content-icon-GMapGraph:before{\n content:\"\\f278\";\n}\ndiv[draggable=true].hideDragCellContent.content-icon-Text:before,\ndiv[draggable=true].hideDragCellContent.content-icon-TextBox:before,\ndiv[draggable=true].hideDragCellContent.content-icon-FAChar:before{\n content:\"\\f278\";\n}\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('bc383397')) {\n var e = document.createElement('style');\n e.id = 'bc383397';\n e.textContent = `.layout_Cell .update-indicator {\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n left: 0px;\n padding: 0px;\n z-index: 1000;\n border-width: 0px;\n border-style: solid;\n pointer-events: none;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('df37b09f')) {\n var e = document.createElement('style');\n e.id = 'df37b09f';\n e.textContent = `.layout_Border{\n width: 100%;\n height: 100%;\n}\n.layout_Border > .border-content{\n width: 100%;\n height: 100%;\n position:relative;\n}\n.layout_Border > .borderHandle{\n width: 6px;\n height: 6px;\n background-color: #444;\n opacity: 0.3;\n position:absolute;\n visibility:hidden;\n}\n.layout_Border.design-mode > .borderHandle{\n visibility:visible;\n}\n.layout_Border > .borderHandle:hover{\n background-color: #666;\n}\n.layout_Border > .borderHandle.borderHandleDisabled{\n display:none;\n}\n.layout_Border > .borderHandle_top,\n.layout_Border > .borderHandle_bottom\n{\n cursor:ns-resize;\n}\n.layout_Border > .borderHandle_left,\n.layout_Border > .borderHandle_right\n{\n cursor:ew-resize;\n}\n.layout_Border .cell {\n border-radius: 5px;\n border: 1px solid #e5e5e5;\n display: inline-block;\n overflow: hidden;\n}\n\n.layout_Border .cell h2 {\n margin: 0px;\n padding-top: 4px;\n -webkit-margin: 0px;\n text-align: center;\n}\n\n.layout_Border .layout_BorderCell.over {\n border: 2px dashed #000;\n}\n.layout_Border .dragItem { \n z-index: -1;\n opacity:0.33;\n}\n\n.layout_Border .notDragItem { \n z-index: -1;\n opacity: 1;\n}\n.layout_Border div[draggable=true] { \n opacity: 0.75;\n cursor: default;\n}\n\n.layout_Border div[draggable=true] .dragHandle {\n opacity: 1.0;\n}\n\n.layout_Border div[draggable=true] .dragHandle_n,\n.layout_Border div[draggable=true] .dragHandle_e,\n.layout_Border div[draggable=true] .dragHandle_s,\n.layout_Border div[draggable=true] .dragHandle_w{\n background-color:#AAA;\n}\n\n.layout_Border div[draggable=true] .dragHandle_nw,\n.layout_Border div[draggable=true] .dragHandle_ne,\n.layout_Border div[draggable=true] .dragHandle_se,\n.layout_Border div[draggable=true] .dragHandle_sw { \n background-color:#333;\n}\n\n.layout_Border div[draggable=true] .dragHandle_nw { \n cursor:nw-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_n { \n cursor:n-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_ne { \n cursor:ne-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_e { \n cursor:e-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_se { \n cursor:se-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_s { \n cursor:s-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_sw { \n cursor:sw-resize;\n}\n\n.layout_Border div[draggable=true] .dragHandle_w { \n cursor:w-resize;\n}\n\n.layout_Border div[draggable=false] > div > .dragHandle {\n display:none;\n}\n\n.layout_Border .grid-drop-target{\n position:fixed;\n box-sizing:border-box;\n border:2px dashed #7f8c8d;\n border-radius:0px;\n background: repeating-linear-gradient(\n -45deg,\n rgba(0, 0, 0, 0),\n rgba(0, 0, 0, 0) 4px,\n rgba(100, 100, 100, 0.1) 4px,\n rgba(100, 100, 100, 0.1) 8px\n );\n}\n\n.layout_Border .grid-drop-target.drop-target-over{\n border:2px dashed #179BD7;\n background: repeating-linear-gradient(\n -45deg,\n rgba(0, 0, 0, 0),\n rgba(0, 0, 0, 0) 6px,\n rgba(17, 155, 215, 0.1) 6px,\n rgba(17, 155, 215, 0.1) 12px\n );\n}`;\n document.head.appendChild(e);\n }\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", "(function(){\n if (!document.getElementById('23362289')) {\n var e = document.createElement('style');\n e.id = '23362289';\n e.textContent = `.layout_Border2 {\n display: flex;\n flex-direction: column;\n}\n.layout_Border2 > .body {\n margin: 0;\n padding: 0;\n display: flex;\n flex-flow: row;\n}\n\n.layout_Border2 > .body > .center {\n flex: 1;\n}\n\n.layout_Border2 > .header {\n display: block;\n}\n\n.layout_Border2 > .footer {\n display: block;\n}\n`;\n document.head.appendChild(e);\n }\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", "(function(){\n if (!document.getElementById('17c1eb84')) {\n var e = document.createElement('style');\n e.id = '17c1eb84';\n e.textContent = `.layout_Carousel > div {\n position: relative;\n overflow: hidden;\n}\n\n.layout_Carousel > div > .carouselItem {\n position: absolute;\n}`;\n document.head.appendChild(e);\n }\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.ts\";\nimport { Carousel } from \"./Carousel.ts\";\nimport { Legend } from \"./Legend.ts\";\nimport { Modal } from \"./Modal.ts\";\n\nimport \"../src/ChartPanel.css\";\n\nexport class ChartPanel<T extends Widget = Widget> 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: T;\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 unknown 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<T extends Widget = Widget> {\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(): T;\n widget(_: T): 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 { 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.ts\";\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", "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\u2019re 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 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 helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\nimport { sum, max } from \"d3-array\"\n\nexport default function size() {\n let scale = scaleLinear(),\n shape = \"rect\",\n shapeWidth = 15,\n shapePadding = 2,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\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 if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\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.selectAll(\n \"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\"\n )\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\n shapes\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes = shapes.merge(shapes)\n\n //creates shape\n if (shape === \"line\") {\n helper.d3_drawShapes(shape, shapes, 0, shapeWidth)\n shapes.attr(\"stroke-width\", type.feature)\n } else {\n helper.d3_drawShapes(\n shape,\n shapes,\n type.feature,\n type.feature,\n type.feature,\n path\n )\n }\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\n const textSize = text.nodes().map(d => d.getBBox()),\n shapeSize = shapes.nodes().map((d, i) => {\n const bbox = d.getBBox()\n const stroke = scale(type.data[i])\n\n if (shape === \"line\" && orient === \"horizontal\") {\n bbox.height = bbox.height + stroke\n } else if (shape === \"line\" && orient === \"vertical\") {\n bbox.width = bbox.width\n }\n return bbox\n })\n\n const maxH = max(shapeSize, d => d.height + d.y),\n maxW = max(shapeSize, d => d.width + d.x)\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 const y =\n shape == \"circle\" || shape == \"line\" ? shapeSize[0].height / 2 : 0\n cellTrans = (d, i) => {\n const height = sum(cellSize.slice(0, i))\n\n return `translate(0, ${y + height + i * shapePadding})`\n }\n\n textTrans = (d, i) => `translate( ${maxW + labelOffset},\n ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\n } else if (orient === \"horizontal\") {\n cellTrans = (d, i) => {\n const width = sum(shapeSize.slice(0, i), d => d.width)\n const y = shape == \"circle\" || shape == \"line\" ? maxH / 2 : 0\n return `translate(${width + i * shapePadding}, ${y})`\n }\n\n const offset = shape == \"line\" ? maxH / 2 : maxH\n textTrans = (d, i) => {\n return `translate( ${shapeSize[i].width * textAlign + shapeSize[i].x},\n ${offset + labelOffset})`\n }\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 (_ == \"rect\" || _ == \"circle\" || _ == \"line\") {\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.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.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.on = function() {\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value\n }\n\n return legend\n}\n", "import helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\nimport { sum, max } from \"d3-array\"\n\nexport default function symbol() {\n let scale = scaleLinear(),\n shape = \"path\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 5,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\n title = \"\",\n locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelAlign = \"middle\",\n labelOffset = 10,\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap,\n orient = \"vertical\",\n ascending = false,\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 if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\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.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\")\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher)\n\n //remove old shapes\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 shapes = shapes.merge(shapes)\n\n helper.d3_drawShapes(\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n type.feature\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\n const maxH = max(shapeSize, d => d.height),\n maxW = max(shapeSize, d => d.width)\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) => Math.max(maxH, d.height))\n\n cellTrans = (d, i) => {\n const height = sum(cellSize.slice(0, i))\n return `translate(0, ${height + i * shapePadding} )`\n }\n textTrans = (d, i) => `translate( ${maxW + labelOffset},\n ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\n } else if (orient === \"horizontal\") {\n cellTrans = (d, i) => `translate( ${i * (maxW + shapePadding)},0)`\n textTrans = (d, i) => `translate( ${shapeSize[i].width * textAlign +\n shapeSize[i].x},\n ${maxH + labelOffset})`\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign)\n helper.d3_title(svg, title, classPrefix, titleWidth)\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.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.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.on = function() {\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value\n }\n\n return legend\n}\n", "export const thresholdLabels = function({\n i,\n genLength,\n generatedLabels,\n labelDelimiter\n}) {\n if (i === 0) {\n const values = generatedLabels[i].split(` ${labelDelimiter} `)\n return `Less than ${values[1]}`\n } else if (i === genLength - 1) {\n const values = generatedLabels[i].split(` ${labelDelimiter} `)\n return `${values[0]} or more`\n }\n return generatedLabels[i]\n}\n\nexport default {\n thresholdLabels\n}\n", "import legendColor from './src/color'\nimport legendSize from './src/size'\nimport legendSymbol from './src/symbol'\nimport legendHelpers from './src/helpers'\n\nexport { legendColor, legendSize, legendSymbol, legendHelpers }\n\nexport default {\n legendColor,\n legendSize,\n legendSymbol,\n legendHelpers\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", "(function(){\n if (!document.getElementById('810b6dee')) {\n var e = document.createElement('style');\n e.id = '810b6dee';\n e.textContent = `.layout_Modal-header {\n background-color: rgb(63,81,181);\n overflow: hidden;\n}\n.layout_Modal-body {\n background-color: #ffffff;\n overflow-y: scroll;\n overflow-x: hidden;\n}\n.layout_Modal-title {\n position: absolute;\n}\n.layout_Modal-annotations {\n position: absolute;\n}\n.layout_Modal-closeButton {\n cursor: pointer;\n}\n.layout_Modal-closeButton:hover {\n opacity: 0.7;\n}\n.layout_Modal-closeButton:active {\n opacity: 0.5;\n}\n.layout_Modal-fade {\n position: fixed;\n background-color: #000;\n opacity: 0.5;\n z-index: 10000;\n}\n.layout_Modal-content {\n position: fixed;\n background-color: #ffffff;\n z-index: 10100;\n}\n.layout_Modal-fade-hidden {\n display: none;\n}\n.layout_Modal-fadeClickable {\n cursor: pointer;\n}`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('0b83f800')) {\n var e = document.createElement('style');\n e.id = '0b83f800';\n e.textContent = `.layout_ChartPanel .series.highlight {\n stroke-width: 2px;\n opacity: 1;\n}\n\n.layout_ChartPanel .series.lowlight {\n opacity: 0.3!important;\n}\n`;\n document.head.appendChild(e);\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(){\n if (!document.getElementById('1c68d178')) {\n var e = document.createElement('style');\n e.id = '1c68d178';\n e.textContent = `.layout_FlexGrid{\n display: flex;\n}\n.FlexGrid-list-item{\n overflow: hidden;\n border-style: solid;\n flex-grow: 1;\n}`;\n document.head.appendChild(e);\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.ts\";\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", "(function(){\n if (!document.getElementById('71cbabbe')) {\n var e = document.createElement('style');\n e.id = '71cbabbe';\n e.textContent = `.layout_Grid > .ddCell {\n position: absolute;\n}\n\n.layout_Grid > .laneBackground {\n position: absolute;\n border-style: solid;\n border-width: 1px;\n background: whitesmoke;\n}\n\n.layout_Grid > .lane {\n position: absolute;\n border-style: none;\n opacity: 0.25;\n border-radius: 0px;\n pointer-events: none;\n}\n\n.layout_Grid > .ddCell.draggable {\n border-style: solid;\n border-width: 1px;\n background-color: ghostwhite;\n border-radius: 0px;\n cursor:move;\n}\n\n.layout_Grid > .ddCell.draggable > .resizeHandle {\n bottom: 0px;\n right: 0px;\n width: 8px;\n height: 8px;\n border-style: none;\n position: absolute;\n cursor:nwse-resize;\n}\n\n.layout_Grid > .ddCell.draggable .resizeHandleDisplay {\n bottom: 2px;\n right: 2px;\n width: 4px;\n height: 4px;\n border-style: solid;\n border-left-width: 0px;\n border-top-width: 0px;\n border-right-width: 2px;\n border-bottom-width: 2px;\n border-color: darkGray;\n background-color:none;\n position: absolute;\n}\n\n.layout_Grid > .ddCell.draggable .resizeHandleDisplay:hover {\n border-color: orange;\n}\n\n.layout_Grid > .dragging {\n border-style: solid;\n border-width: 1px;\n border-color: gray;\n border-radius: 0px;\n position: absolute;\n background: repeating-linear-gradient( -45deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 4px, rgba(100, 100, 100, 0.1) 4px, rgba(100, 100, 100, 0.1) 8px );\n}\n\n.layout_Grid > .resizing {\n border-style: solid;\n border-width: 1px;\n border-color: gray;\n background-color: orange;\n border-radius: 0px;\n position: absolute;\n opacity:0.3;\n background: repeating-linear-gradient( -45deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 4px, orange 4px, orange 8px );\n}\n\n.layout_Grid > .ddCell.draggable .common_Widget.selected {\n border-style: solid;\n border-width: 1px;\n border-color: red;\n background-color: gray;\n border-radius: 0px;\n position: absolute;\n background: repeating-linear-gradient( -45deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 4px, rgba(100, 0, 0, 0.1) 4px, rgba(100, 0, 0, 0.1) 8px );\n}\n\n.layout_Grid #drag-me::before {\n content: \"#\" attr(id);\n font-weight: bold;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { FlexGrid } from \"./FlexGrid.ts\";\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}\nLayered.prototype._class += \" layout_Layered\";\n\nexport interface Layered {\n surfacePadding(): number;\n surfacePadding(_: number): this;\n widgets(): any;\n widgets(_: any): this;\n}\n\nLayered.prototype.publish(\"surfacePadding\", 0, \"number\", \"Padding\");\nLayered.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n", "(function(){\n if (!document.getElementById('ed0ab859')) {\n var e = document.createElement('style');\n e.id = 'ed0ab859';\n e.textContent = `.layout_Layered {\n pointer-events: none;\n}\n.layout_Layered > .container > .content {\n position: absolute;\n}\n.layout_Layered > .container > .content > div > .common_Widget,\n.layout_Layered > .container > .content > div > svg > .common_Widget {\n pointer-events: all;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget, Widget } 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}\nPopup.prototype._class += \" layout_Popup\";\n\nexport interface Popup {\n popupState(): boolean;\n popupState(_: boolean): this;\n shrinkWrap(): boolean;\n shrinkWrap(_: boolean): this;\n centerPopup(): \"none\" | \"container\" | \"window\";\n centerPopup(_: \"none\" | \"container\" | \"window\"): this;\n top(): number;\n top(_: number): this;\n bottom(): number;\n bottom(_: number): this;\n left(): number;\n left(_: number): this;\n right(): number;\n right(_: number): this;\n position(): string;\n position(_: string): this;\n\n widget(): Widget;\n widget(_: Widget): this;\n}\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, Widget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Surface } from \"./Surface.ts\";\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}\nTabbed.prototype._class += \" layout_Tabbed\";\n\nexport interface Tabbed {\n showTabs(): boolean;\n showTabs(_: boolean): this;\n surfacePadding(): number;\n surfacePadding(_: number): this;\n surfacePadding_exists(): boolean;\n activeTabIdx(): number;\n activeTabIdx(_: number): this;\n\n labels(): string[];\n labels(_: string[]): this;\n tabLocation(): \"top\" | \"bottom\";\n tabLocation(_: \"top\" | \"bottom\"): this;\n widgets(): any[];\n widgets(_: any[]): this;\n}\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", "(function(){\n if (!document.getElementById('6b6715fa')) {\n var e = document.createElement('style');\n e.id = '6b6715fa';\n e.textContent = `.layout_Tabbed .tab-button {\n position: relative;\n top: 1px;\n display: inline-block;\n border-left: 1px solid #ddd;\n border-top: 1px solid #ddd;\n border-right: 1px solid #ddd;\n background-color: transparent;\n margin-right: 4px;\n padding: 2px;\n padding-bottom: 4px;\n background-color: #ccc;\n}\n\n.layout_Tabbed .tab-button.active {\n background-color: white;\n z-index:999;\n}\n.layout_Tabbed .on_bottom .tab-button {\n border-bottom: 1px solid #ddd;\n border-top: none;\n top: -1px;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Toolbar.css\";\n\nexport class Toolbar extends HTMLWidget {\n\n constructor() {\n super();\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 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\n render(callback?: (w: Widget) => void): this {\n const context = this;\n return super.render(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\n exit(domNode, element) {\n this.widgets().forEach(function (w) {\n w.target(null);\n });\n super.exit(domNode, element);\n }\n}\nToolbar.prototype._class += \" layout_Toolbar\";\n\nexport interface Toolbar {\n title(): string;\n title(_: string): this;\n\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n fontColor(): string;\n fontColor(_: string): this;\n fontColor_exists(): boolean;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontFamily_exists(): boolean;\n fontBold(): boolean;\n fontBold(_: boolean): this;\n fontBold_exists(): boolean;\n backgroundColor(): string;\n backgroundColor(_: string): this;\n backgroundColor_exists(): boolean;\n\n responsive(): boolean;\n responsive(_: boolean): this;\n\n widgets(): any[];\n widgets(_: any[]): this;\n widgetClasses(): string[];\n widgetClasses(_: string[]): this;\n}\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", "(function(){\n if (!document.getElementById('67787f94')) {\n var e = document.createElement('style');\n e.id = '67787f94';\n e.textContent = `.layout_Toolbar {\n height:100%;\n background-color:#dddddd;\n white-space: nowrap;\n overflow: hidden;\n}\n.layout_Toolbar .toolbar-title {\n display: inline-block;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n\n margin-left:4px;\n font-weight:bold;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.layout_Toolbar .toolbar-title span {\n}\n.layout_Toolbar .toolbar-child {\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n\n float:right;\n margin-left:4px;\n margin-right:4px;\n line-height:16px;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { FlexGrid } from \"./FlexGrid.ts\";\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", "export const PKG_NAME = \"@hpcc-js/dgrid2\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {preact.ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor == undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {Component} a\n * @param {Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/i, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname === 'onFocusOut' ||\n\t\t\tname === 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == 'http://www.w3.org/2000/svg') {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == null) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Set<Component> | null} */\n\t\t\t\tlet subs = new Set();\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\t\tsubs = null;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.add(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tif (subs) {\n\t\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR, INSERT_VNODE, MATCHED } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\tnewParentVNode._nextDom = oldDom;\n\tconstructNewChildrenArray(newParentVNode, renderResult, oldChildren);\n\toldDom = newParentVNode._nextDom;\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == null) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (\n\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\tchildVNode._nextDom !== undefined\n\t\t) {\n\t\t\t// Since Fragments or components that return Fragment like VNodes can\n\t\t\t// contain multiple DOM nodes as the same level, continue the diff from\n\t\t\t// the sibling of last DOM child of this child VNode\n\t\t\toldDom = childVNode._nextDom;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because it\n\t\t// is only used by `diffChildren` to determine where to resume the diff\n\t\t// after diffing Components and Fragments. Once we store it the nextDOM\n\t\t// local var, we can clean up the property. Also prevents us hanging on to\n\t\t// DOM nodes that may have been unmounted.\n\t\tchildVNode._nextDom = undefined;\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\t// TODO: With new child diffing algo, consider alt ways to diff Fragments.\n\t// Such as dropping oldDom and moving fragments in place\n\t//\n\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t// _nextDom property to the nextSibling of its last child DOM node.\n\t//\n\t// `oldDom` contains the correct value here because if the last child\n\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t// node's nextSibling.\n\tnewParentVNode._nextDom = oldDom;\n\tnewParentVNode._dom = firstChildDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(newParentVNode, renderResult, oldChildren) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tconst newChildrenLength = renderResult.length;\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === undefined && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t// we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t// this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) === 0) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType === 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\tlet shouldSearch =\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) === 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) === 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import {\n\tEMPTY_OBJ,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\twhile (oldDom && oldDom.nodeType === 8 && oldDom.nextSibling) {\n\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t}\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\troot._nextDom = undefined;\n\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType === 'svg') namespace = 'http://www.w3.org/2000/svg';\n\telse if (nodeType === 'math')\n\t\tnamespace = 'http://www.w3.org/1998/Math/MathML';\n\telse if (!namespace) namespace = 'http://www.w3.org/1999/xhtml';\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value === !!nodeType &&\n\t\t\t\t(nodeType ? value.localName === nodeType : value.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, null, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType === 'foreignObject'\n\t\t\t\t\t? 'http://www.w3.org/1999/xhtml'\n\t\t\t\t\t: namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType === 'progress' && inputValue == null) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType === 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== undefined && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != null) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._component = vnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to render into\n * @param {PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? null\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {VNode} [oldVNode]\n * @param {ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {Component} */\n\tlet component,\n\t\t/** @type {ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "import { options as _options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\n// Cast to use internal Options type\nconst options = /** @type {import('./internal').Options} */ (_options);\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\nlet oldRoot = options._root;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._root = (vnode, parentDom) => {\n\tif (vnode && parentDom._children && parentDom._children._mask) {\n\t\tvnode._mask = parentDom._children._mask;\n\t}\n\n\tif (oldRoot) oldRoot(vnode, parentDom);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingArgs = hookItem._nextValue = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentIndex = 0;\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\n// TODO: Improve typing of commitQueue parameter\n/** @type {(vnode: import('./internal').VNode, commitQueue: any) => void} */\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\n\treturn hooks._list[index];\n}\n\n/**\n * @template {unknown} S\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} [initialState]\n * @returns {[S, (state: S) => void]}\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @template {unknown} S\n * @template {unknown} A\n * @param {import('./index').Reducer<S, A>} reducer\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ S, (state: S) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\t/** @type {(x: import('./internal').HookState) => x is import('./internal').ReducerHookState} */\n\t\t\t\tconst isStateHook = x => !!x._component;\n\t\t\t\tconst stateHooks =\n\t\t\t\t\thookState._component.__hooks._list.filter(isStateHook);\n\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\n/** @type {(initialValue: unknown) => unknown} */\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @template {unknown} T\n * @param {() => T} factory\n * @param {unknown[]} args\n * @returns {T}\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState<T>} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = factory();\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {unknown[]} args\n * @returns {() => void}\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(\n\t\t\tformatter ? formatter(value) : /** @type {any}*/ (value)\n\t\t);\n\t}\n}\n\n/**\n * @param {(error: unknown, errorInfo: import('preact').ErrorInfo) => void} cb\n * @returns {[unknown, () => void]}\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/** @type {() => string} */\nexport function useId() {\n\t/** @type {import('./internal').IdHookState} */\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n * @returns {void}\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').HookState} hook\n * @returns {void}\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n * @returns {void}\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {unknown[]} oldArgs\n * @param {unknown[]} newArgs\n * @returns {boolean}\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\n/**\n * @template Arg\n * @param {Arg} arg\n * @param {(arg: Arg) => any} f\n * @returns {any}\n */\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n", "import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p, c) {\n\tthis.props = p;\n\tthis.context = c;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function (props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n", "import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n", "import { options } from 'preact';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tif (!('ref' in props)) return fn(props, null);\n\n\t\tlet ref = props.ref;\n\t\tdelete props.ref;\n\t\tconst result = fn(props, ref);\n\t\tprops.ref = ref;\n\t\treturn result;\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n", "import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n", "import { Component, createElement, options, Fragment } from 'preact';\nimport { MODE_HYDRATE } from '../../src/constants';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function (error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function (vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._flags & MODE_HYDRATE) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode && originalParent) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.appendChild(vnode._dom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function (promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tif (\n\t\t!c._pendingSuspensionCount++ &&\n\t\t!(suspendingVNode._flags & MODE_HYDRATE)\n\t) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function () {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function (props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._flags &= ~MODE_HYDRATE;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n", "import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function (child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function (props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate =\n\tSuspenseList.prototype.componentDidMount = function () {\n\t\t// Iterate through all children after mounting for two reasons:\n\t\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t\t// The nodes can now be completely consumed from the linked list.\n\t\t// 2. Handle nodes that might have gotten resolved between render and\n\t\t// componentDidMount.\n\t\tthis._map.forEach((node, child) => {\n\t\t\tresolve(this, child, node);\n\t\t});\n\t};\n", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function () {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\tif (!_this._temp) {\n\t\t_this._container = container;\n\n\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t_this._temp = {\n\t\t\tnodeType: 1,\n\t\t\tparentNode: container,\n\t\t\tchildNodes: [],\n\t\t\tcontains: () => true,\n\t\t\tappendChild(child) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.appendChild(child);\n\t\t\t},\n\t\t\tinsertBefore(child, before) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.appendChild(child);\n\t\t\t},\n\t\t\tremoveChild(child) {\n\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t_this._container.removeChild(child);\n\t\t\t}\n\t\t};\n\t}\n\n\t// Render our wrapping element into temp.\n\trender(\n\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t_this._temp\n\t);\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n", "import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tuseEffect,\n\tuseId,\n\tuseImperativeHandle,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseReducer,\n\tuseRef,\n\tuseState\n} from 'preact/hooks';\nimport {\n\tuseDeferredValue,\n\tuseInsertionEffect,\n\tuseSyncExternalStore,\n\tuseTransition\n} from './index';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS =\n\t/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\nconst ON_ANI = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;\nconst CAMEL_REPLACE = /[A-Z0-9]/g;\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/\n\t\t: /fil|che|ra/\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nconst classNameDescriptorNonEnumberable = {\n\tenumerable: false,\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nfunction handleDomVNode(vnode) {\n\tlet props = vnode.props,\n\t\ttype = vnode.type,\n\t\tnormalizedProps = {};\n\n\tlet isNonDashedType = type.indexOf('-') === -1;\n\tfor (let i in props) {\n\t\tlet value = props[i];\n\n\t\tif (\n\t\t\t(i === 'value' && 'defaultValue' in props && value == null) ||\n\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t(IS_DOM && i === 'children' && type === 'noscript') ||\n\t\t\ti === 'class' ||\n\t\t\ti === 'className'\n\t\t) {\n\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t// a default value\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet lowerCased = i.toLowerCase();\n\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\ti = 'value';\n\t\t} else if (i === 'download' && value === true) {\n\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t// value will be used as the file name and the file will be called\n\t\t\t// \"true\" upon downloading it.\n\t\t\tvalue = '';\n\t\t} else if (lowerCased === 'translate' && value === 'no') {\n\t\t\tvalue = false;\n\t\t} else if (lowerCased[0] === 'o' && lowerCased[1] === 'n') {\n\t\t\tif (lowerCased === 'ondoubleclick') {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\tlowerCased === 'onchange' &&\n\t\t\t\t(type === 'input' || type === 'textarea') &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\tlowerCased = i = 'oninput';\n\t\t\t} else if (lowerCased === 'onfocus') {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (lowerCased === 'onblur') {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (ON_ANI.test(i)) {\n\t\t\t\ti = lowerCased;\n\t\t\t}\n\t\t} else if (isNonDashedType && CAMEL_PROPS.test(i)) {\n\t\t\ti = i.replace(CAMEL_REPLACE, '-$&').toLowerCase();\n\t\t} else if (value === null) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\t// Add support for onInput and onChange, see #3561\n\t\t// if we have an oninput prop already change it to oninputCapture\n\t\tif (lowerCased === 'oninput') {\n\t\t\ti = lowerCased;\n\t\t\tif (normalizedProps[i]) {\n\t\t\t\ti = 'oninputCapture';\n\t\t\t}\n\t\t}\n\n\t\tnormalizedProps[i] = value;\n\t}\n\n\t// Add support for array select values: <select multiple value={[]} />\n\tif (\n\t\ttype == 'select' &&\n\t\tnormalizedProps.multiple &&\n\t\tArray.isArray(normalizedProps.value)\n\t) {\n\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tchild.props.selected =\n\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t});\n\t}\n\n\t// Adding support for defaultValue in select tag\n\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tif (normalizedProps.multiple) {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t} else {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (props.class && !props.className) {\n\t\tnormalizedProps.class = props.class;\n\t\tObject.defineProperty(\n\t\t\tnormalizedProps,\n\t\t\t'className',\n\t\t\tclassNameDescriptorNonEnumberable\n\t\t);\n\t} else if (props.className && !props.class) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t} else if (props.class && props.className) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t}\n\n\tvnode.props = normalizedProps;\n}\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\t// only normalize props on Element nodes\n\tif (typeof vnode.type === 'string') {\n\t\thandleDomVNode(vnode);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function (vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\nconst oldDiffed = options.diffed;\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = function (vnode) {\n\tif (oldDiffed) {\n\t\toldDiffed(vnode);\n\t}\n\n\tconst props = vnode.props;\n\tconst dom = vnode._dom;\n\n\tif (\n\t\tdom != null &&\n\t\tvnode.type === 'textarea' &&\n\t\t'value' in props &&\n\t\tprops.value !== dom.value\n\t) {\n\t\tdom.value = props.value == null ? '' : props.value;\n\t}\n\n\tcurrentComponent = null;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t},\n\t\t\tuseCallback,\n\t\t\tuseContext,\n\t\t\tuseDebugValue,\n\t\t\tuseDeferredValue,\n\t\t\tuseEffect,\n\t\t\tuseId,\n\t\t\tuseImperativeHandle,\n\t\t\tuseInsertionEffect,\n\t\t\tuseLayoutEffect,\n\t\t\tuseMemo,\n\t\t\t// useMutableSource, // experimental-only and replaced by uSES, likely not worth supporting\n\t\t\tuseReducer,\n\t\t\tuseRef,\n\t\t\tuseState,\n\t\t\tuseSyncExternalStore,\n\t\t\tuseTransition\n\t\t}\n\t}\n};\n", "import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '18.3.1'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Check if the passed element is a Fragment node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isFragment(element) {\n\treturn isValidElement(element) && element.type === Fragment;\n}\n\n/**\n * Check if the passed element is a Memo node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isMemo(element) {\n\treturn (\n\t\t!!element &&\n\t\t!!element.displayName &&\n\t\t(typeof element.displayName === 'string' ||\n\t\t\telement.displayName instanceof String) &&\n\t\telement.displayName.startsWith('Memo(')\n\t);\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n// compat to react-is\nexport const isElement = isValidElement;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n * @typedef {{ _value: any; _getSnapshot: () => any }} Store\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\t/**\n\t * @typedef {{ _instance: Store }} StoreRef\n\t * @type {[StoreRef, (store: StoreRef) => void]}\n\t */\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (didSnapshotChange(_instance)) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\n/** @type {(inst: Store) => boolean} */\nfunction didSnapshotChange(inst) {\n\tconst latestGetSnapshot = inst._getSnapshot;\n\tconst prevValue = inst._value;\n\ttry {\n\t\tconst nextValue = latestGetSnapshot();\n\t\treturn !is(prevValue, nextValue);\n\t} catch (error) {\n\t\treturn true;\n\t}\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n", "\uFEFFimport * as React from \"react\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { render, unmountComponentAtNode } from \"react-dom\";\nimport { ReactTable } from \"./reactTable.tsx\";\n\nimport \"./table.css\";\n\nexport type ColumnType = \"boolean\" | \"number\" | \"string\" | \"time\";\n\nexport class Table extends HTMLWidget {\n\n protected _div;\n\n constructor() {\n super();\n }\n\n columnType(column: string): ColumnType;\n columnType(column: string, type: ColumnType): this;\n columnType(column: string, type?: ColumnType): ColumnType | this {\n if (arguments.length === 1) return this.columnTypes()[column];\n this.columnTypes({ ...this.columnTypes(), [column]: type });\n return this;\n }\n\n columnPattern(column: string): string;\n columnPattern(column: string, pattern: string): this;\n columnPattern(column: string, pattern?: string): string | this {\n if (arguments.length === 1) return this.columnPatterns()[column];\n this.columnPatterns({ ...this.columnPatterns(), [column]: pattern });\n return this;\n }\n\n columnFormat(column: string): string;\n columnFormat(column: string, format: string): this;\n columnFormat(column: string, format?: string): string | this {\n if (arguments.length === 1) return this.columnFormats()[column];\n this.columnFormats({ ...this.columnFormats(), [column]: format });\n return this;\n }\n\n private _prevRow;\n private _prevColumn;\n onRowClickCallback(row, column) {\n if (this._prevRow && JSON.stringify(this._prevRow) !== JSON.stringify(row)) {\n this.click(this._prevRow, this._prevColumn ?? \"\", false);\n }\n if (row) {\n this.click(row, column, true);\n }\n this._prevRow = row;\n this._prevColumn = column;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._div = element\n .append(\"div\")\n .style(\"display\", \"grid\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._div.style(\"width\", this.width() + \"px\");\n this._div.style(\"height\", this.height() + \"px\");\n render(React.createElement(ReactTable, { table: this }), this._div.node());\n }\n\n exit(domNode, element) {\n unmountComponentAtNode(this._div.node());\n this._div.remove();\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, col, sel) {\n }\n}\nTable.prototype._class += \" dgrid2_Table\";\n\nexport interface Table {\n noDataMessage(): string;\n noDataMessage(_: string): this;\n darkMode(): boolean;\n darkMode(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n columnTypes(): { [column: string]: ColumnType };\n columnTypes(_: { [column: string]: ColumnType }): this;\n columnPatterns(): { [column: string]: string };\n columnPatterns(_: { [column: string]: string }): this;\n columnFormats(): { [column: string]: string };\n columnFormats(_: { [column: string]: string }): this;\n}\n\nTable.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\nTable.prototype.publish(\"darkMode\", false, \"boolean\", \"Dark Mode\");\nTable.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\nTable.prototype.publish(\"columnTypes\", {}, \"object\", \"Column Types (\\\"boolean\\\" | \\\"number\\\" | \\\"string\\\" | \\\"time\\\"\");\nTable.prototype.publish(\"columnPatterns\", {}, \"object\", \"Column Patterns\");\nTable.prototype.publish(\"columnFormats\", {}, \"object\", \"Column Formats\");\n\n", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "const ENCODED_ENTITIES = /[\"&<]/;\n\n/** @param {string} str */\nexport function encodeEntities(str) {\n\t// Skip all work for strings with no entities needing encoding:\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '"';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '<';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out += str.slice(last, i);\n\t\tout += ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out += str.slice(last, i);\n\treturn out;\n}\n", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in props) {\n\t\tref = props.ref;\n\t\tdelete props.ref;\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + str + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities(value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n", "import type { CalculatedColumn, ColSpanArgs } from '../types';\n\nexport function getColSpan<R, SR>(\n column: CalculatedColumn<R, SR>,\n lastFrozenColumnIndex: number,\n args: ColSpanArgs<R, SR>\n): number | undefined {\n const colSpan = typeof column.colSpan === 'function' ? column.colSpan(args) : 1;\n if (\n Number.isInteger(colSpan) &&\n colSpan! > 1 &&\n // ignore colSpan if it spans over both frozen and regular columns\n (!column.frozen || column.idx + colSpan! - 1 <= lastFrozenColumnIndex)\n ) {\n return colSpan!;\n }\n return undefined;\n}\n", "import type { Maybe } from '../types';\n\nexport function stopPropagation(event: React.SyntheticEvent) {\n event.stopPropagation();\n}\n\nexport function scrollIntoView(element: Maybe<Element>) {\n element?.scrollIntoView({ inline: 'nearest', block: 'nearest' });\n}\n", "import type { CellEvent } from '../types';\n\nexport function createCellEvent<E extends React.SyntheticEvent<HTMLDivElement>>(\n event: E\n): CellEvent<E> {\n let defaultPrevented = false;\n const cellEvent = {\n ...event,\n preventGridDefault() {\n defaultPrevented = true;\n },\n isGridDefaultPrevented() {\n return defaultPrevented;\n }\n };\n\n Object.setPrototypeOf(cellEvent, Object.getPrototypeOf(event));\n\n return cellEvent;\n}\n", "// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\nconst nonInputKeys = new Set([\n // Special keys\n 'Unidentified',\n // Modifier keys\n 'Alt',\n 'AltGraph',\n 'CapsLock',\n 'Control',\n 'Fn',\n 'FnLock',\n 'Meta',\n 'NumLock',\n 'ScrollLock',\n 'Shift',\n // Whitespace keys\n 'Tab',\n // Navigation keys\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'End',\n 'Home',\n 'PageDown',\n 'PageUp',\n // Editing\n 'Insert',\n // UI keys\n 'ContextMenu',\n 'Escape',\n 'Pause',\n 'Play',\n // Device keys\n 'PrintScreen',\n // Function keys\n 'F1',\n // 'F2', /!\\ specifically allowed, do not edit\n 'F3',\n 'F4',\n 'F5',\n 'F6',\n 'F7',\n 'F8',\n 'F9',\n 'F10',\n 'F11',\n 'F12'\n]);\n\nexport function isCtrlKeyHeldDown(e: React.KeyboardEvent): boolean {\n return (e.ctrlKey || e.metaKey) && e.key !== 'Control';\n}\n\nexport function isDefaultCellInput(event: React.KeyboardEvent<HTMLDivElement>): boolean {\n const vKey = 86;\n if (isCtrlKeyHeldDown(event) && event.keyCode !== vKey) return false;\n return !nonInputKeys.has(event.key);\n}\n\n/**\n * By default, the following navigation keys are enabled while an editor is open, under specific conditions:\n * - Tab:\n * - The editor must be an <input>, a <textarea>, or a <select> element.\n * - The editor element must be the only immediate child of the editor container/a label.\n */\nexport function onEditorNavigation({ key, target }: React.KeyboardEvent<HTMLDivElement>): boolean {\n if (\n key === 'Tab' &&\n (target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement)\n ) {\n return (\n target.closest('.rdg-editor-container')?.querySelectorAll('input, textarea, select')\n .length === 1\n );\n }\n return false;\n}\n", "import { css } from '@linaria/core';\n\nimport type { CalculatedColumn } from '../types';\n\nconst measuringCellClassname = css`\n @layer rdg.MeasuringCell {\n contain: strict;\n grid-row: 1;\n visibility: hidden;\n }\n`;\n\nexport function renderMeasuringCells<R, SR>(viewportColumns: readonly CalculatedColumn<R, SR>[]) {\n return viewportColumns.map(({ key, idx, minWidth, maxWidth }) => (\n <div\n key={key}\n className={measuringCellClassname}\n style={{ gridColumnStart: idx + 1, minWidth, maxWidth }}\n data-measuring-cell-key={key}\n />\n ));\n}\n", "import type {\n CalculatedColumn,\n CalculatedColumnParent,\n CellNavigationMode,\n Maybe,\n Position\n} from '../types';\nimport { getColSpan } from './colSpanUtils';\n\ninterface IsSelectedCellEditableOpts<R, SR> {\n selectedPosition: Position;\n columns: readonly CalculatedColumn<R, SR>[];\n rows: readonly R[];\n}\n\nexport function isSelectedCellEditable<R, SR>({\n selectedPosition,\n columns,\n rows\n}: IsSelectedCellEditableOpts<R, SR>): boolean {\n const column = columns[selectedPosition.idx];\n const row = rows[selectedPosition.rowIdx];\n return isCellEditableUtil(column, row);\n}\n\n// https://github.com/vercel/next.js/issues/56480\nexport function isCellEditableUtil<R, SR>(column: CalculatedColumn<R, SR>, row: R): boolean {\n return (\n column.renderEditCell != null &&\n (typeof column.editable === 'function' ? column.editable(row) : column.editable) !== false\n );\n}\n\ninterface GetNextSelectedCellPositionOpts<R, SR> {\n moveUp: boolean;\n moveNext: boolean;\n cellNavigationMode: CellNavigationMode;\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly R[];\n topSummaryRows: Maybe<readonly SR[]>;\n bottomSummaryRows: Maybe<readonly SR[]>;\n minRowIdx: number;\n mainHeaderRowIdx: number;\n maxRowIdx: number;\n currentPosition: Position;\n nextPosition: Position;\n lastFrozenColumnIndex: number;\n isCellWithinBounds: (position: Position) => boolean;\n}\n\nfunction getSelectedCellColSpan<R, SR>({\n rows,\n topSummaryRows,\n bottomSummaryRows,\n rowIdx,\n mainHeaderRowIdx,\n lastFrozenColumnIndex,\n column\n}: Pick<\n GetNextSelectedCellPositionOpts<R, SR>,\n 'rows' | 'topSummaryRows' | 'bottomSummaryRows' | 'lastFrozenColumnIndex' | 'mainHeaderRowIdx'\n> & {\n rowIdx: number;\n column: CalculatedColumn<R, SR>;\n}) {\n const topSummaryRowsCount = topSummaryRows?.length ?? 0;\n if (rowIdx === mainHeaderRowIdx) {\n return getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' });\n }\n\n if (\n topSummaryRows &&\n rowIdx > mainHeaderRowIdx &&\n rowIdx <= topSummaryRowsCount + mainHeaderRowIdx\n ) {\n return getColSpan(column, lastFrozenColumnIndex, {\n type: 'SUMMARY',\n row: topSummaryRows[rowIdx + topSummaryRowsCount]\n });\n }\n\n if (rowIdx >= 0 && rowIdx < rows.length) {\n const row = rows[rowIdx];\n return getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n }\n\n if (bottomSummaryRows) {\n return getColSpan(column, lastFrozenColumnIndex, {\n type: 'SUMMARY',\n row: bottomSummaryRows[rowIdx - rows.length]\n });\n }\n\n return undefined;\n}\n\nexport function getNextSelectedCellPosition<R, SR>({\n moveUp,\n moveNext,\n cellNavigationMode,\n columns,\n colSpanColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n minRowIdx,\n mainHeaderRowIdx,\n maxRowIdx,\n currentPosition: { idx: currentIdx, rowIdx: currentRowIdx },\n nextPosition,\n lastFrozenColumnIndex,\n isCellWithinBounds\n}: GetNextSelectedCellPositionOpts<R, SR>): Position {\n let { idx: nextIdx, rowIdx: nextRowIdx } = nextPosition;\n const columnsCount = columns.length;\n\n const setColSpan = (moveNext: boolean) => {\n // If a cell within the colspan range is selected then move to the\n // previous or the next cell depending on the navigation direction\n for (const column of colSpanColumns) {\n const colIdx = column.idx;\n if (colIdx > nextIdx) break;\n const colSpan = getSelectedCellColSpan({\n rows,\n topSummaryRows,\n bottomSummaryRows,\n rowIdx: nextRowIdx,\n mainHeaderRowIdx,\n lastFrozenColumnIndex,\n column\n });\n\n if (colSpan && nextIdx > colIdx && nextIdx < colSpan + colIdx) {\n nextIdx = colIdx + (moveNext ? colSpan : 0);\n break;\n }\n }\n };\n\n const getParentRowIdx = (parent: CalculatedColumnParent<R, SR>) => {\n return parent.level + mainHeaderRowIdx;\n };\n\n const setHeaderGroupColAndRowSpan = () => {\n if (moveNext) {\n // find the parent at the same row level\n const nextColumn = columns[nextIdx];\n let parent = nextColumn.parent;\n while (parent !== undefined) {\n const parentRowIdx = getParentRowIdx(parent);\n if (nextRowIdx === parentRowIdx) {\n nextIdx = parent.idx + parent.colSpan;\n break;\n }\n parent = parent.parent;\n }\n } else if (moveUp) {\n // find the first reachable parent\n const nextColumn = columns[nextIdx];\n let parent = nextColumn.parent;\n let found = false;\n while (parent !== undefined) {\n const parentRowIdx = getParentRowIdx(parent);\n if (nextRowIdx >= parentRowIdx) {\n nextIdx = parent.idx;\n nextRowIdx = parentRowIdx;\n found = true;\n break;\n }\n parent = parent.parent;\n }\n\n // keep the current position if there is no parent matching the new row position\n if (!found) {\n nextIdx = currentIdx;\n nextRowIdx = currentRowIdx;\n }\n }\n };\n\n if (isCellWithinBounds(nextPosition)) {\n setColSpan(moveNext);\n\n if (nextRowIdx < mainHeaderRowIdx) {\n setHeaderGroupColAndRowSpan();\n }\n }\n\n if (cellNavigationMode === 'CHANGE_ROW') {\n const isAfterLastColumn = nextIdx === columnsCount;\n const isBeforeFirstColumn = nextIdx === -1;\n\n if (isAfterLastColumn) {\n const isLastRow = nextRowIdx === maxRowIdx;\n if (!isLastRow) {\n nextIdx = 0;\n nextRowIdx += 1;\n }\n } else if (isBeforeFirstColumn) {\n const isFirstRow = nextRowIdx === minRowIdx;\n if (!isFirstRow) {\n nextRowIdx -= 1;\n nextIdx = columnsCount - 1;\n }\n setColSpan(false);\n }\n }\n\n if (nextRowIdx < mainHeaderRowIdx) {\n // Find the last reachable parent for the new rowIdx\n // This check is needed when navigating to a column\n // that does not have a parent matching the new rowIdx\n const nextColumn = columns[nextIdx];\n let parent = nextColumn.parent;\n const nextParentRowIdx = nextRowIdx;\n nextRowIdx = mainHeaderRowIdx;\n while (parent !== undefined) {\n const parentRowIdx = getParentRowIdx(parent);\n if (parentRowIdx >= nextParentRowIdx) {\n nextRowIdx = parentRowIdx;\n nextIdx = parent.idx;\n }\n parent = parent.parent;\n }\n }\n\n return { idx: nextIdx, rowIdx: nextRowIdx };\n}\n\ninterface CanExitGridOpts {\n maxColIdx: number;\n minRowIdx: number;\n maxRowIdx: number;\n selectedPosition: Position;\n shiftKey: boolean;\n}\n\nexport function canExitGrid({\n maxColIdx,\n minRowIdx,\n maxRowIdx,\n selectedPosition: { rowIdx, idx },\n shiftKey\n}: CanExitGridOpts): boolean {\n // Exit the grid if we're at the first or last cell of the grid\n const atLastCellInRow = idx === maxColIdx;\n const atFirstCellInRow = idx === 0;\n const atLastRow = rowIdx === maxRowIdx;\n const atFirstRow = rowIdx === minRowIdx;\n\n return shiftKey ? atFirstCellInRow && atFirstRow : atLastCellInRow && atLastRow;\n}\n", "import { css } from '@linaria/core';\n\nexport const cell = css`\n @layer rdg.Cell {\n /* max-content does not work with size containment\n * dynamically switching between different containment styles incurs a heavy relayout penalty\n * Chromium bug: at odd zoom levels or subpixel positioning,\n * layout/paint/style containment can make cell borders disappear\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1326946\n */\n position: relative; /* needed for absolute positioning to work */\n padding-block: 0;\n padding-inline: 8px;\n border-inline-end: 1px solid var(--rdg-border-color);\n border-block-end: 1px solid var(--rdg-border-color);\n grid-row-start: var(--rdg-grid-row-start);\n align-content: center;\n background-color: inherit;\n\n white-space: nowrap;\n overflow: clip;\n text-overflow: ellipsis;\n outline: none;\n\n &[aria-selected='true'] {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n }\n`;\n\nexport const cellClassname = `rdg-cell ${cell}`;\n\nexport const cellFrozen = css`\n @layer rdg.Cell {\n position: sticky;\n /* Should have a higher value than 0 to show up above unfrozen cells */\n z-index: 1;\n\n /* Add box-shadow on the last frozen cell */\n &:nth-last-child(1 of &) {\n box-shadow: var(--rdg-cell-frozen-box-shadow);\n }\n }\n`;\n\nexport const cellFrozenClassname = `rdg-cell-frozen ${cellFrozen}`;\n", "import type { CSSProperties } from 'react';\nimport clsx from 'clsx';\n\nimport type { CalculatedColumn, CalculatedColumnOrColumnGroup } from '../types';\nimport { cellClassname, cellFrozenClassname } from '../style/cell';\n\nexport function getRowStyle(rowIdx: number): CSSProperties {\n return { '--rdg-grid-row-start': rowIdx } as unknown as CSSProperties;\n}\n\nexport function getHeaderCellStyle<R, SR>(\n column: CalculatedColumnOrColumnGroup<R, SR>,\n rowIdx: number,\n rowSpan: number\n): React.CSSProperties {\n const gridRowEnd = rowIdx + 1;\n const paddingBlockStart = `calc(${rowSpan - 1} * var(--rdg-header-row-height))`;\n\n if (column.parent === undefined) {\n return {\n insetBlockStart: 0,\n gridRowStart: 1,\n gridRowEnd,\n paddingBlockStart\n };\n }\n\n return {\n insetBlockStart: `calc(${rowIdx - rowSpan} * var(--rdg-header-row-height))`,\n gridRowStart: gridRowEnd - rowSpan,\n gridRowEnd,\n paddingBlockStart\n };\n}\n\nexport function getCellStyle<R, SR>(\n column: CalculatedColumn<R, SR>,\n colSpan = 1\n): React.CSSProperties {\n const index = column.idx + 1;\n return {\n gridColumnStart: index,\n gridColumnEnd: index + colSpan,\n insetInlineStart: column.frozen ? `var(--rdg-frozen-left-${column.idx})` : undefined\n };\n}\n\nexport function getCellClassname<R, SR>(\n column: CalculatedColumn<R, SR>,\n ...extraClasses: Parameters<typeof clsx>\n): string {\n return clsx(\n cellClassname,\n {\n [cellFrozenClassname]: column.frozen\n },\n ...extraClasses\n );\n}\n", "import type { CalculatedColumn, CalculatedColumnOrColumnGroup } from '../types';\n\nexport * from './colSpanUtils';\nexport * from './domUtils';\nexport * from './eventUtils';\nexport * from './keyboardUtils';\nexport * from './renderMeasuringCells';\nexport * from './selectedCellUtils';\nexport * from './styleUtils';\n\nexport const { min, max, floor, sign, abs } = Math;\n\nexport function assertIsValidKeyGetter<R, K extends React.Key>(\n keyGetter: unknown\n): asserts keyGetter is (row: R) => K {\n if (typeof keyGetter !== 'function') {\n throw new Error('Please specify the rowKeyGetter prop to use selection');\n }\n}\n\nexport function clampColumnWidth<R, SR>(\n width: number,\n { minWidth, maxWidth }: CalculatedColumn<R, SR>\n): number {\n width = max(width, minWidth);\n\n // ignore maxWidth if it less than minWidth\n if (typeof maxWidth === 'number' && maxWidth >= minWidth) {\n return min(width, maxWidth);\n }\n\n return width;\n}\n\nexport function getHeaderCellRowSpan<R, SR>(\n column: CalculatedColumnOrColumnGroup<R, SR>,\n rowIdx: number\n) {\n return column.parent === undefined ? rowIdx : column.level - column.parent.level;\n}\n", "import { css } from '@linaria/core';\n\nimport type { RenderCheckboxProps } from '../types';\n\nconst checkbox = css`\n @layer rdg.CheckboxInput {\n display: block;\n margin: auto;\n inline-size: 20px;\n block-size: 20px;\n\n &:focus-visible {\n outline: 2px solid var(--rdg-checkbox-focus-color);\n outline-offset: -3px;\n }\n\n &:enabled {\n cursor: pointer;\n }\n }\n`;\n\nconst checkboxClassname = `rdg-checkbox-input ${checkbox}`;\n\nexport function renderCheckbox({ onChange, indeterminate, ...props }: RenderCheckboxProps) {\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange(e.target.checked, (e.nativeEvent as MouseEvent).shiftKey);\n }\n\n return (\n <input\n ref={(el) => {\n if (el) {\n el.indeterminate = indeterminate === true;\n }\n }}\n type=\"checkbox\"\n className={checkboxClassname}\n onChange={handleChange}\n {...props}\n />\n );\n}\n", "import { css } from '@linaria/core';\n\nimport type { RenderGroupCellProps } from '../types';\n\nconst groupCellContent = css`\n @layer rdg.GroupCellContent {\n outline: none;\n }\n`;\n\nconst groupCellContentClassname = `rdg-group-cell-content ${groupCellContent}`;\n\nconst caret = css`\n @layer rdg.GroupCellCaret {\n margin-inline-start: 4px;\n stroke: currentColor;\n stroke-width: 1.5px;\n fill: transparent;\n vertical-align: middle;\n\n > path {\n transition: d 0.1s;\n }\n }\n`;\n\nconst caretClassname = `rdg-caret ${caret}`;\n\nexport function renderToggleGroup<R, SR>(props: RenderGroupCellProps<R, SR>) {\n return <ToggleGroup {...props} />;\n}\n\nexport function ToggleGroup<R, SR>({\n groupKey,\n isExpanded,\n tabIndex,\n toggleGroup\n}: RenderGroupCellProps<R, SR>) {\n function handleKeyDown({ key }: React.KeyboardEvent<HTMLSpanElement>) {\n if (key === 'Enter') {\n toggleGroup();\n }\n }\n\n const d = isExpanded ? 'M1 1 L 7 7 L 13 1' : 'M1 7 L 7 1 L 13 7';\n\n return (\n <span className={groupCellContentClassname} tabIndex={tabIndex} onKeyDown={handleKeyDown}>\n {groupKey as string}\n <svg viewBox=\"0 0 14 8\" width=\"14\" height=\"8\" className={caretClassname} aria-hidden>\n <path d={d} />\n </svg>\n </span>\n );\n}\n", "import type { RenderCellProps } from '../types';\n\nexport function renderValue<R, SR>(props: RenderCellProps<R, SR>) {\n try {\n return props.row[props.column.key as keyof R] as React.ReactNode;\n } catch {\n return null;\n }\n}\n", "import { createContext, useContext } from 'react';\n\nimport type { Maybe, Renderers } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DataGridDefaultRenderersContext = createContext<Maybe<Renderers<any, any>>>(undefined);\n\nexport const DataGridDefaultRenderersProvider = DataGridDefaultRenderersContext.Provider;\n\nexport function useDefaultRenderers<R, SR>(): Maybe<Renderers<R, SR>> {\n return useContext(DataGridDefaultRenderersContext);\n}\n", "import type { RenderCheckboxProps } from '../types';\nimport { useDefaultRenderers } from '../DataGridDefaultRenderersProvider';\n\ntype SharedInputProps = Pick<\n RenderCheckboxProps,\n 'disabled' | 'tabIndex' | 'aria-label' | 'aria-labelledby' | 'indeterminate' | 'onChange'\n>;\n\ninterface SelectCellFormatterProps extends SharedInputProps {\n value: boolean;\n}\n\nexport function SelectCellFormatter({\n value,\n tabIndex,\n indeterminate,\n disabled,\n onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n}: SelectCellFormatterProps) {\n const renderCheckbox = useDefaultRenderers()!.renderCheckbox!;\n\n return renderCheckbox({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n tabIndex,\n indeterminate,\n disabled,\n checked: value,\n onChange\n });\n}\n", "import { createContext, useContext } from 'react';\n\nimport type { SelectHeaderRowEvent, SelectRowEvent } from '../types';\n\nexport interface RowSelectionContextValue {\n readonly isRowSelected: boolean;\n readonly isRowSelectionDisabled: boolean;\n}\n\nconst RowSelectionContext = createContext<RowSelectionContextValue | undefined>(undefined);\n\nexport const RowSelectionProvider = RowSelectionContext.Provider;\n\nconst RowSelectionChangeContext = createContext<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((selectRowEvent: SelectRowEvent<any>) => void) | undefined\n>(undefined);\n\nexport const RowSelectionChangeProvider = RowSelectionChangeContext.Provider;\n\nexport function useRowSelection() {\n const rowSelectionContext = useContext(RowSelectionContext);\n const rowSelectionChangeContext = useContext(RowSelectionChangeContext);\n\n if (rowSelectionContext === undefined || rowSelectionChangeContext === undefined) {\n throw new Error('useRowSelection must be used within DataGrid cells');\n }\n\n return {\n isRowSelectionDisabled: rowSelectionContext.isRowSelectionDisabled,\n isRowSelected: rowSelectionContext.isRowSelected,\n onRowSelectionChange: rowSelectionChangeContext\n };\n}\n\nexport interface HeaderRowSelectionContextValue {\n readonly isRowSelected: boolean;\n readonly isIndeterminate: boolean;\n}\n\nconst HeaderRowSelectionContext = createContext<HeaderRowSelectionContextValue | undefined>(\n undefined\n);\n\nexport const HeaderRowSelectionProvider = HeaderRowSelectionContext.Provider;\n\nconst HeaderRowSelectionChangeContext = createContext<\n ((selectRowEvent: SelectHeaderRowEvent) => void) | undefined\n>(undefined);\n\nexport const HeaderRowSelectionChangeProvider = HeaderRowSelectionChangeContext.Provider;\n\nexport function useHeaderRowSelection() {\n const headerRowSelectionContext = useContext(HeaderRowSelectionContext);\n const headerRowSelectionChangeContext = useContext(HeaderRowSelectionChangeContext);\n\n if (headerRowSelectionContext === undefined || headerRowSelectionChangeContext === undefined) {\n throw new Error('useHeaderRowSelection must be used within DataGrid cells');\n }\n\n return {\n isIndeterminate: headerRowSelectionContext.isIndeterminate,\n isRowSelected: headerRowSelectionContext.isRowSelected,\n onRowSelectionChange: headerRowSelectionChangeContext\n };\n}\n", "import { useHeaderRowSelection, useRowSelection } from './hooks/useRowSelection';\nimport type { Column, RenderCellProps, RenderGroupCellProps, RenderHeaderCellProps } from './types';\nimport { SelectCellFormatter } from './cellRenderers';\n\nexport const SELECT_COLUMN_KEY = 'rdg-select-column';\n\nfunction HeaderRenderer(props: RenderHeaderCellProps<unknown>) {\n const { isIndeterminate, isRowSelected, onRowSelectionChange } = useHeaderRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select All\"\n tabIndex={props.tabIndex}\n indeterminate={isIndeterminate}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ checked: isIndeterminate ? false : checked });\n }}\n />\n );\n}\n\nfunction SelectFormatter(props: RenderCellProps<unknown>) {\n const { isRowSelectionDisabled, isRowSelected, onRowSelectionChange } = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select\"\n tabIndex={props.tabIndex}\n disabled={isRowSelectionDisabled}\n value={isRowSelected}\n onChange={(checked, isShiftClick) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick });\n }}\n />\n );\n}\n\nfunction SelectGroupFormatter(props: RenderGroupCellProps<unknown>) {\n const { isRowSelected, onRowSelectionChange } = useRowSelection();\n\n return (\n <SelectCellFormatter\n aria-label=\"Select Group\"\n tabIndex={props.tabIndex}\n value={isRowSelected}\n onChange={(checked) => {\n onRowSelectionChange({ row: props.row, checked, isShiftClick: false });\n }}\n />\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const SelectColumn: Column<any, any> = {\n key: SELECT_COLUMN_KEY,\n name: '',\n width: 35,\n minWidth: 35,\n maxWidth: 35,\n resizable: false,\n sortable: false,\n frozen: true,\n renderHeaderCell(props) {\n return <HeaderRenderer {...props} />;\n },\n renderCell(props) {\n return <SelectFormatter {...props} />;\n },\n renderGroupCell(props) {\n return <SelectGroupFormatter {...props} />;\n }\n};\n", "import { useMemo } from 'react';\n\nimport { clampColumnWidth, max, min } from '../utils';\nimport type { CalculatedColumn, CalculatedColumnParent, ColumnOrColumnGroup, Omit } from '../types';\nimport { renderValue } from '../cellRenderers';\nimport { SELECT_COLUMN_KEY } from '../Columns';\nimport type { DataGridProps } from '../DataGrid';\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P] extends ReadonlyArray<infer V> ? Mutable<V>[] : T[P];\n};\n\ninterface WithParent<R, SR> {\n readonly parent: MutableCalculatedColumnParent<R, SR> | undefined;\n}\n\ntype MutableCalculatedColumnParent<R, SR> = Omit<Mutable<CalculatedColumnParent<R, SR>>, 'parent'> &\n WithParent<R, SR>;\ntype MutableCalculatedColumn<R, SR> = Omit<Mutable<CalculatedColumn<R, SR>>, 'parent'> &\n WithParent<R, SR>;\n\ninterface ColumnMetric {\n width: number;\n left: number;\n}\n\nconst DEFAULT_COLUMN_WIDTH = 'auto';\nconst DEFAULT_COLUMN_MIN_WIDTH = 50;\n\ninterface CalculatedColumnsArgs<R, SR> {\n rawColumns: readonly ColumnOrColumnGroup<R, SR>[];\n defaultColumnOptions: DataGridProps<R, SR>['defaultColumnOptions'];\n viewportWidth: number;\n scrollLeft: number;\n getColumnWidth: (column: CalculatedColumn<R, SR>) => string | number;\n enableVirtualization: boolean;\n}\n\nexport function useCalculatedColumns<R, SR>({\n rawColumns,\n defaultColumnOptions,\n getColumnWidth,\n viewportWidth,\n scrollLeft,\n enableVirtualization\n}: CalculatedColumnsArgs<R, SR>) {\n const defaultWidth = defaultColumnOptions?.width ?? DEFAULT_COLUMN_WIDTH;\n const defaultMinWidth = defaultColumnOptions?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH;\n const defaultMaxWidth = defaultColumnOptions?.maxWidth ?? undefined;\n const defaultCellRenderer = defaultColumnOptions?.renderCell ?? renderValue;\n const defaultSortable = defaultColumnOptions?.sortable ?? false;\n const defaultResizable = defaultColumnOptions?.resizable ?? false;\n const defaultDraggable = defaultColumnOptions?.draggable ?? false;\n\n const { columns, colSpanColumns, lastFrozenColumnIndex, headerRowsCount } = useMemo((): {\n readonly columns: readonly CalculatedColumn<R, SR>[];\n readonly colSpanColumns: readonly CalculatedColumn<R, SR>[];\n readonly lastFrozenColumnIndex: number;\n readonly headerRowsCount: number;\n } => {\n let lastFrozenColumnIndex = -1;\n let headerRowsCount = 1;\n const columns: MutableCalculatedColumn<R, SR>[] = [];\n\n collectColumns(rawColumns, 1);\n\n function collectColumns(\n rawColumns: readonly ColumnOrColumnGroup<R, SR>[],\n level: number,\n parent?: MutableCalculatedColumnParent<R, SR>\n ) {\n for (const rawColumn of rawColumns) {\n if ('children' in rawColumn) {\n const calculatedColumnParent: MutableCalculatedColumnParent<R, SR> = {\n name: rawColumn.name,\n parent,\n idx: -1,\n colSpan: 0,\n level: 0,\n headerCellClass: rawColumn.headerCellClass\n };\n\n collectColumns(rawColumn.children, level + 1, calculatedColumnParent);\n continue;\n }\n\n const frozen = rawColumn.frozen ?? false;\n\n const column: MutableCalculatedColumn<R, SR> = {\n ...rawColumn,\n parent,\n idx: 0,\n level: 0,\n frozen,\n width: rawColumn.width ?? defaultWidth,\n minWidth: rawColumn.minWidth ?? defaultMinWidth,\n maxWidth: rawColumn.maxWidth ?? defaultMaxWidth,\n sortable: rawColumn.sortable ?? defaultSortable,\n resizable: rawColumn.resizable ?? defaultResizable,\n draggable: rawColumn.draggable ?? defaultDraggable,\n renderCell: rawColumn.renderCell ?? defaultCellRenderer\n };\n\n columns.push(column);\n\n if (frozen) {\n lastFrozenColumnIndex++;\n }\n\n if (level > headerRowsCount) {\n headerRowsCount = level;\n }\n }\n }\n\n columns.sort(({ key: aKey, frozen: frozenA }, { key: bKey, frozen: frozenB }) => {\n // Sort select column first:\n if (aKey === SELECT_COLUMN_KEY) return -1;\n if (bKey === SELECT_COLUMN_KEY) return 1;\n\n // Sort frozen columns second:\n if (frozenA) {\n if (frozenB) return 0;\n return -1;\n }\n if (frozenB) return 1;\n\n // TODO: sort columns to keep them grouped if they have a parent\n\n // Sort other columns last:\n return 0;\n });\n\n const colSpanColumns: CalculatedColumn<R, SR>[] = [];\n columns.forEach((column, idx) => {\n column.idx = idx;\n updateColumnParent(column, idx, 0);\n\n if (column.colSpan != null) {\n colSpanColumns.push(column);\n }\n });\n\n return {\n columns,\n colSpanColumns,\n lastFrozenColumnIndex,\n headerRowsCount\n };\n }, [\n rawColumns,\n defaultWidth,\n defaultMinWidth,\n defaultMaxWidth,\n defaultCellRenderer,\n defaultResizable,\n defaultSortable,\n defaultDraggable\n ]);\n\n const { templateColumns, layoutCssVars, totalFrozenColumnWidth, columnMetrics } = useMemo((): {\n templateColumns: readonly string[];\n layoutCssVars: Readonly<Record<string, string>>;\n totalFrozenColumnWidth: number;\n columnMetrics: ReadonlyMap<CalculatedColumn<R, SR>, ColumnMetric>;\n } => {\n const columnMetrics = new Map<CalculatedColumn<R, SR>, ColumnMetric>();\n let left = 0;\n let totalFrozenColumnWidth = 0;\n const templateColumns: string[] = [];\n\n for (const column of columns) {\n let width = getColumnWidth(column);\n\n if (typeof width === 'number') {\n width = clampColumnWidth(width, column);\n } else {\n // This is a placeholder width so we can continue to use virtualization.\n // The actual value is set after the column is rendered\n width = column.minWidth;\n }\n templateColumns.push(`${width}px`);\n columnMetrics.set(column, { width, left });\n left += width;\n }\n\n if (lastFrozenColumnIndex !== -1) {\n const columnMetric = columnMetrics.get(columns[lastFrozenColumnIndex])!;\n totalFrozenColumnWidth = columnMetric.left + columnMetric.width;\n }\n\n const layoutCssVars: Record<string, string> = {};\n\n for (let i = 0; i <= lastFrozenColumnIndex; i++) {\n const column = columns[i];\n layoutCssVars[`--rdg-frozen-left-${column.idx}`] = `${columnMetrics.get(column)!.left}px`;\n }\n\n return { templateColumns, layoutCssVars, totalFrozenColumnWidth, columnMetrics };\n }, [getColumnWidth, columns, lastFrozenColumnIndex]);\n\n const [colOverscanStartIdx, colOverscanEndIdx] = useMemo((): [number, number] => {\n if (!enableVirtualization) {\n return [0, columns.length - 1];\n }\n // get the viewport's left side and right side positions for non-frozen columns\n const viewportLeft = scrollLeft + totalFrozenColumnWidth;\n const viewportRight = scrollLeft + viewportWidth;\n // get first and last non-frozen column indexes\n const lastColIdx = columns.length - 1;\n const firstUnfrozenColumnIdx = min(lastFrozenColumnIndex + 1, lastColIdx);\n\n // skip rendering non-frozen columns if the frozen columns cover the entire viewport\n if (viewportLeft >= viewportRight) {\n return [firstUnfrozenColumnIdx, firstUnfrozenColumnIdx];\n }\n\n // get the first visible non-frozen column index\n let colVisibleStartIdx = firstUnfrozenColumnIdx;\n while (colVisibleStartIdx < lastColIdx) {\n const { left, width } = columnMetrics.get(columns[colVisibleStartIdx])!;\n // if the right side of the columnn is beyond the left side of the available viewport,\n // then it is the first column that's at least partially visible\n if (left + width > viewportLeft) {\n break;\n }\n colVisibleStartIdx++;\n }\n\n // get the last visible non-frozen column index\n let colVisibleEndIdx = colVisibleStartIdx;\n while (colVisibleEndIdx < lastColIdx) {\n const { left, width } = columnMetrics.get(columns[colVisibleEndIdx])!;\n // if the right side of the column is beyond or equal to the right side of the available viewport,\n // then it the last column that's at least partially visible, as the previous column's right side is not beyond the viewport.\n if (left + width >= viewportRight) {\n break;\n }\n colVisibleEndIdx++;\n }\n\n const colOverscanStartIdx = max(firstUnfrozenColumnIdx, colVisibleStartIdx - 1);\n const colOverscanEndIdx = min(lastColIdx, colVisibleEndIdx + 1);\n\n return [colOverscanStartIdx, colOverscanEndIdx];\n }, [\n columnMetrics,\n columns,\n lastFrozenColumnIndex,\n scrollLeft,\n totalFrozenColumnWidth,\n viewportWidth,\n enableVirtualization\n ]);\n\n return {\n columns,\n colSpanColumns,\n colOverscanStartIdx,\n colOverscanEndIdx,\n templateColumns,\n layoutCssVars,\n headerRowsCount,\n lastFrozenColumnIndex,\n totalFrozenColumnWidth\n };\n}\n\nfunction updateColumnParent<R, SR>(\n column: MutableCalculatedColumn<R, SR> | MutableCalculatedColumnParent<R, SR>,\n index: number,\n level: number\n) {\n if (level < column.level) {\n column.level = level;\n }\n\n if (column.parent !== undefined) {\n const { parent } = column;\n if (parent.idx === -1) {\n parent.idx = index;\n }\n parent.colSpan += 1;\n updateColumnParent(parent, index, level - 1);\n }\n}\n", "// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from 'react';\n\n// Silence silly warning\n// https://reactjs.org/link/uselayouteffect-ssr\nexport const useLayoutEffect = typeof window === 'undefined' ? useEffect : useOriginalLayoutEffect;\n", "import { useRef } from 'react';\nimport { flushSync } from 'react-dom';\n\nimport type { CalculatedColumn, StateSetter } from '../types';\nimport { useLayoutEffect } from './useLayoutEffect';\nimport type { DataGridProps } from '../DataGrid';\n\nexport function useColumnWidths<R, SR>(\n columns: readonly CalculatedColumn<R, SR>[],\n viewportColumns: readonly CalculatedColumn<R, SR>[],\n templateColumns: readonly string[],\n gridRef: React.RefObject<HTMLDivElement | null>,\n gridWidth: number,\n resizedColumnWidths: ReadonlyMap<string, number>,\n measuredColumnWidths: ReadonlyMap<string, number>,\n setResizedColumnWidths: StateSetter<ReadonlyMap<string, number>>,\n setMeasuredColumnWidths: StateSetter<ReadonlyMap<string, number>>,\n onColumnResize: DataGridProps<R, SR>['onColumnResize']\n) {\n const prevGridWidthRef = useRef(gridWidth);\n const columnsCanFlex: boolean = columns.length === viewportColumns.length;\n // Allow columns to flex again when...\n const ignorePreviouslyMeasuredColumns: boolean =\n // there is enough space for columns to flex and the grid was resized\n columnsCanFlex && gridWidth !== prevGridWidthRef.current;\n const newTemplateColumns = [...templateColumns];\n const columnsToMeasure: string[] = [];\n\n for (const { key, idx, width } of viewportColumns) {\n if (\n typeof width === 'string' &&\n (ignorePreviouslyMeasuredColumns || !measuredColumnWidths.has(key)) &&\n !resizedColumnWidths.has(key)\n ) {\n newTemplateColumns[idx] = width;\n columnsToMeasure.push(key);\n }\n }\n\n const gridTemplateColumns = newTemplateColumns.join(' ');\n\n useLayoutEffect(() => {\n prevGridWidthRef.current = gridWidth;\n updateMeasuredWidths(columnsToMeasure);\n });\n\n function updateMeasuredWidths(columnsToMeasure: readonly string[]) {\n if (columnsToMeasure.length === 0) return;\n\n setMeasuredColumnWidths((measuredColumnWidths) => {\n const newMeasuredColumnWidths = new Map(measuredColumnWidths);\n let hasChanges = false;\n\n for (const key of columnsToMeasure) {\n const measuredWidth = measureColumnWidth(gridRef, key);\n hasChanges ||= measuredWidth !== measuredColumnWidths.get(key);\n if (measuredWidth === undefined) {\n newMeasuredColumnWidths.delete(key);\n } else {\n newMeasuredColumnWidths.set(key, measuredWidth);\n }\n }\n\n return hasChanges ? newMeasuredColumnWidths : measuredColumnWidths;\n });\n }\n\n function handleColumnResize(column: CalculatedColumn<R, SR>, nextWidth: number | 'max-content') {\n const { key: resizingKey } = column;\n const newTemplateColumns = [...templateColumns];\n const columnsToMeasure: string[] = [];\n\n for (const { key, idx, width } of viewportColumns) {\n if (resizingKey === key) {\n const width = typeof nextWidth === 'number' ? `${nextWidth}px` : nextWidth;\n newTemplateColumns[idx] = width;\n } else if (columnsCanFlex && typeof width === 'string' && !resizedColumnWidths.has(key)) {\n newTemplateColumns[idx] = width;\n columnsToMeasure.push(key);\n }\n }\n\n gridRef.current!.style.gridTemplateColumns = newTemplateColumns.join(' ');\n const measuredWidth =\n typeof nextWidth === 'number' ? nextWidth : measureColumnWidth(gridRef, resizingKey)!;\n\n // TODO: remove\n // need flushSync to keep frozen column offsets in sync\n // we may be able to use `startTransition` or even `requestIdleCallback` instead\n flushSync(() => {\n setResizedColumnWidths((resizedColumnWidths) => {\n const newResizedColumnWidths = new Map(resizedColumnWidths);\n newResizedColumnWidths.set(resizingKey, measuredWidth);\n return newResizedColumnWidths;\n });\n updateMeasuredWidths(columnsToMeasure);\n });\n\n onColumnResize?.(column.idx, measuredWidth);\n }\n\n return {\n gridTemplateColumns,\n handleColumnResize\n } as const;\n}\n\nfunction measureColumnWidth(gridRef: React.RefObject<HTMLDivElement | null>, key: string) {\n const selector = `[data-measuring-cell-key=\"${CSS.escape(key)}\"]`;\n const measuringCell = gridRef.current?.querySelector(selector);\n return measuringCell?.getBoundingClientRect().width;\n}\n", "import { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\n\nimport { useLayoutEffect } from './useLayoutEffect';\n\nexport function useGridDimensions() {\n const gridRef = useRef<HTMLDivElement>(null);\n const [inlineSize, setInlineSize] = useState(1);\n const [blockSize, setBlockSize] = useState(1);\n const [horizontalScrollbarHeight, setHorizontalScrollbarHeight] = useState(0);\n\n useLayoutEffect(() => {\n const { ResizeObserver } = window;\n\n // don't break in Node.js (SSR), jsdom, and browsers that don't support ResizeObserver\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (ResizeObserver == null) return;\n\n const { clientWidth, clientHeight, offsetWidth, offsetHeight } = gridRef.current!;\n const { width, height } = gridRef.current!.getBoundingClientRect();\n const initialHorizontalScrollbarHeight = offsetHeight - clientHeight;\n const initialWidth = width - offsetWidth + clientWidth;\n const initialHeight = height - initialHorizontalScrollbarHeight;\n\n setInlineSize(initialWidth);\n setBlockSize(initialHeight);\n setHorizontalScrollbarHeight(initialHorizontalScrollbarHeight);\n\n const resizeObserver = new ResizeObserver((entries) => {\n const size = entries[0].contentBoxSize[0];\n const { clientHeight, offsetHeight } = gridRef.current!;\n\n // we use flushSync here to avoid flashing scrollbars\n flushSync(() => {\n setInlineSize(size.inlineSize);\n setBlockSize(size.blockSize);\n setHorizontalScrollbarHeight(offsetHeight - clientHeight);\n });\n });\n resizeObserver.observe(gridRef.current!);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return [gridRef, inlineSize, blockSize, horizontalScrollbarHeight] as const;\n}\n", "import { useCallback, useEffect, useRef } from 'react';\n\nimport type { Maybe } from '../types';\n\n// https://reactjs.org/docs/hooks-faq.html#what-can-i-do-if-my-effect-dependencies-change-too-often\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useLatestFunc<T extends Maybe<(...args: any[]) => any>>(fn: T): T {\n const ref = useRef(fn);\n\n useEffect(() => {\n ref.current = fn;\n });\n\n const callbackFn = useCallback((...args: Parameters<NonNullable<T>>) => {\n ref.current!(...args);\n }, []);\n\n // @ts-expect-error\n return fn ? callbackFn : fn;\n}\n", "import { useState } from 'react';\n\n// https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex\nexport function useRovingTabIndex(isSelected: boolean) {\n // https://www.w3.org/TR/wai-aria-practices-1.1/#gridNav_focus\n const [isChildFocused, setIsChildFocused] = useState(false);\n\n if (isChildFocused && !isSelected) {\n setIsChildFocused(false);\n }\n\n function onFocus(event: React.FocusEvent<HTMLDivElement>) {\n if (event.target !== event.currentTarget) {\n setIsChildFocused(true);\n }\n }\n\n const isFocusable = isSelected && !isChildFocused;\n\n return {\n tabIndex: isFocusable ? 0 : -1,\n childTabIndex: isSelected ? 0 : -1,\n onFocus: isSelected ? onFocus : undefined\n };\n}\n", "import { useMemo } from 'react';\n\nimport { getColSpan } from '../utils';\nimport type { CalculatedColumn, Maybe } from '../types';\n\ninterface ViewportColumnsArgs<R, SR> {\n columns: readonly CalculatedColumn<R, SR>[];\n colSpanColumns: readonly CalculatedColumn<R, SR>[];\n rows: readonly R[];\n topSummaryRows: Maybe<readonly SR[]>;\n bottomSummaryRows: Maybe<readonly SR[]>;\n colOverscanStartIdx: number;\n colOverscanEndIdx: number;\n lastFrozenColumnIndex: number;\n rowOverscanStartIdx: number;\n rowOverscanEndIdx: number;\n}\n\nexport function useViewportColumns<R, SR>({\n columns,\n colSpanColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n colOverscanStartIdx,\n colOverscanEndIdx,\n lastFrozenColumnIndex,\n rowOverscanStartIdx,\n rowOverscanEndIdx\n}: ViewportColumnsArgs<R, SR>) {\n // find the column that spans over a column within the visible columns range and adjust colOverscanStartIdx\n const startIdx = useMemo(() => {\n if (colOverscanStartIdx === 0) return 0;\n\n let startIdx = colOverscanStartIdx;\n\n const updateStartIdx = (colIdx: number, colSpan: number | undefined) => {\n if (colSpan !== undefined && colIdx + colSpan > colOverscanStartIdx) {\n startIdx = colIdx;\n return true;\n }\n return false;\n };\n\n for (const column of colSpanColumns) {\n // check header row\n const colIdx = column.idx;\n if (colIdx >= startIdx) break;\n if (updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' }))) {\n break;\n }\n\n // check viewport rows\n for (let rowIdx = rowOverscanStartIdx; rowIdx <= rowOverscanEndIdx; rowIdx++) {\n const row = rows[rowIdx];\n if (\n updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row }))\n ) {\n break;\n }\n }\n\n // check summary rows\n if (topSummaryRows != null) {\n for (const row of topSummaryRows) {\n if (\n updateStartIdx(\n colIdx,\n getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row })\n )\n ) {\n break;\n }\n }\n }\n\n if (bottomSummaryRows != null) {\n for (const row of bottomSummaryRows) {\n if (\n updateStartIdx(\n colIdx,\n getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row })\n )\n ) {\n break;\n }\n }\n }\n }\n\n return startIdx;\n }, [\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n colOverscanStartIdx,\n lastFrozenColumnIndex,\n colSpanColumns\n ]);\n\n return useMemo((): readonly CalculatedColumn<R, SR>[] => {\n const viewportColumns: CalculatedColumn<R, SR>[] = [];\n for (let colIdx = 0; colIdx <= colOverscanEndIdx; colIdx++) {\n const column = columns[colIdx];\n\n if (colIdx < startIdx && !column.frozen) continue;\n viewportColumns.push(column);\n }\n\n return viewportColumns;\n }, [startIdx, colOverscanEndIdx, columns]);\n}\n", "import { useMemo } from 'react';\n\nimport { floor, max, min } from '../utils';\n\ninterface ViewportRowsArgs<R> {\n rows: readonly R[];\n rowHeight: number | ((row: R) => number);\n clientHeight: number;\n scrollTop: number;\n enableVirtualization: boolean;\n}\n\nexport function useViewportRows<R>({\n rows,\n rowHeight,\n clientHeight,\n scrollTop,\n enableVirtualization\n}: ViewportRowsArgs<R>) {\n const { totalRowHeight, gridTemplateRows, getRowTop, getRowHeight, findRowIdx } = useMemo(() => {\n if (typeof rowHeight === 'number') {\n return {\n totalRowHeight: rowHeight * rows.length,\n gridTemplateRows: ` repeat(${rows.length}, ${rowHeight}px)`,\n getRowTop: (rowIdx: number) => rowIdx * rowHeight,\n getRowHeight: () => rowHeight,\n findRowIdx: (offset: number) => floor(offset / rowHeight)\n };\n }\n\n let totalRowHeight = 0;\n let gridTemplateRows = ' ';\n // Calcule the height of all the rows upfront. This can cause performance issues\n // and we can consider using a similar approach as react-window\n // https://github.com/bvaughn/react-window/blob/b0a470cc264e9100afcaa1b78ed59d88f7914ad4/src/VariableSizeList.js#L68\n const rowPositions = rows.map((row) => {\n const currentRowHeight = rowHeight(row);\n const position = { top: totalRowHeight, height: currentRowHeight };\n gridTemplateRows += `${currentRowHeight}px `;\n totalRowHeight += currentRowHeight;\n return position;\n });\n\n const validateRowIdx = (rowIdx: number) => {\n return max(0, min(rows.length - 1, rowIdx));\n };\n\n return {\n totalRowHeight,\n gridTemplateRows,\n getRowTop: (rowIdx: number) => rowPositions[validateRowIdx(rowIdx)].top,\n getRowHeight: (rowIdx: number) => rowPositions[validateRowIdx(rowIdx)].height,\n findRowIdx(offset: number) {\n let start = 0;\n let end = rowPositions.length - 1;\n while (start <= end) {\n const middle = start + floor((end - start) / 2);\n const currentOffset = rowPositions[middle].top;\n\n if (currentOffset === offset) return middle;\n\n if (currentOffset < offset) {\n start = middle + 1;\n } else if (currentOffset > offset) {\n end = middle - 1;\n }\n\n if (start > end) return end;\n }\n return 0;\n }\n };\n }, [rowHeight, rows]);\n\n let rowOverscanStartIdx = 0;\n let rowOverscanEndIdx = rows.length - 1;\n\n if (enableVirtualization) {\n const overscanThreshold = 4;\n const rowVisibleStartIdx = findRowIdx(scrollTop);\n const rowVisibleEndIdx = findRowIdx(scrollTop + clientHeight);\n rowOverscanStartIdx = max(0, rowVisibleStartIdx - overscanThreshold);\n rowOverscanEndIdx = min(rows.length - 1, rowVisibleEndIdx + overscanThreshold);\n }\n\n return {\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n totalRowHeight,\n gridTemplateRows,\n getRowTop,\n getRowHeight,\n findRowIdx\n };\n}\n", "import { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { getCellStyle } from './utils';\nimport type { CalculatedColumn, FillEvent, Position } from './types';\nimport type { DataGridProps, SelectCellState } from './DataGrid';\n\nconst cellDragHandle = css`\n @layer rdg.DragHandle {\n --rdg-drag-handle-size: 8px;\n z-index: 0;\n cursor: move;\n inline-size: var(--rdg-drag-handle-size);\n block-size: var(--rdg-drag-handle-size);\n background-color: var(--rdg-selection-color);\n place-self: end;\n\n &:hover {\n --rdg-drag-handle-size: 16px;\n border: 2px solid var(--rdg-selection-color);\n background-color: var(--rdg-background-color);\n }\n }\n`;\n\nconst cellDragHandleFrozenClassname = css`\n @layer rdg.DragHandle {\n z-index: 1;\n position: sticky;\n }\n`;\n\nconst cellDragHandleClassname = `rdg-cell-drag-handle ${cellDragHandle}`;\n\ninterface Props<R, SR> extends Pick<DataGridProps<R, SR>, 'rows' | 'onRowsChange'> {\n gridRowStart: number;\n column: CalculatedColumn<R, SR>;\n columnWidth: number | string;\n maxColIdx: number;\n isLastRow: boolean;\n selectedPosition: SelectCellState;\n latestDraggedOverRowIdx: React.MutableRefObject<number | undefined>;\n isCellEditable: (position: Position) => boolean;\n onClick: () => void;\n onFill: (event: FillEvent<R>) => R;\n setDragging: (isDragging: boolean) => void;\n setDraggedOverRowIdx: (overRowIdx: number | undefined) => void;\n}\n\nexport default function DragHandle<R, SR>({\n gridRowStart,\n rows,\n column,\n columnWidth,\n maxColIdx,\n isLastRow,\n selectedPosition,\n latestDraggedOverRowIdx,\n isCellEditable,\n onRowsChange,\n onFill,\n onClick,\n setDragging,\n setDraggedOverRowIdx\n}: Props<R, SR>) {\n const { idx, rowIdx } = selectedPosition;\n\n function handleMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n // keep the focus on the cell\n event.preventDefault();\n if (event.buttons !== 1) return;\n setDragging(true);\n window.addEventListener('mouseover', onMouseOver);\n window.addEventListener('mouseup', onMouseUp);\n\n function onMouseOver(event: MouseEvent) {\n // Trigger onMouseup in edge cases where we release the mouse button but `mouseup` isn't triggered,\n // for example when releasing the mouse button outside the iframe the grid is rendered in.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n if (event.buttons !== 1) onMouseUp();\n }\n\n function onMouseUp() {\n window.removeEventListener('mouseover', onMouseOver);\n window.removeEventListener('mouseup', onMouseUp);\n setDragging(false);\n handleDragEnd();\n }\n }\n\n function handleDragEnd() {\n const overRowIdx = latestDraggedOverRowIdx.current;\n if (overRowIdx === undefined) return;\n\n const startRowIndex = rowIdx < overRowIdx ? rowIdx + 1 : overRowIdx;\n const endRowIndex = rowIdx < overRowIdx ? overRowIdx + 1 : rowIdx;\n updateRows(startRowIndex, endRowIndex);\n setDraggedOverRowIdx(undefined);\n }\n\n function handleDoubleClick(event: React.MouseEvent<HTMLDivElement>) {\n event.stopPropagation();\n updateRows(rowIdx + 1, rows.length);\n }\n\n function updateRows(startRowIdx: number, endRowIdx: number) {\n const sourceRow = rows[rowIdx];\n const updatedRows = [...rows];\n const indexes: number[] = [];\n for (let i = startRowIdx; i < endRowIdx; i++) {\n if (isCellEditable({ rowIdx: i, idx })) {\n const updatedRow = onFill({ columnKey: column.key, sourceRow, targetRow: rows[i] });\n if (updatedRow !== rows[i]) {\n updatedRows[i] = updatedRow;\n indexes.push(i);\n }\n }\n }\n\n if (indexes.length > 0) {\n onRowsChange?.(updatedRows, { indexes, column });\n }\n }\n\n function getStyle(): React.CSSProperties {\n const colSpan = column.colSpan?.({ type: 'ROW', row: rows[rowIdx] }) ?? 1;\n const { insetInlineStart, ...style } = getCellStyle(column, colSpan);\n const marginEnd = 'calc(var(--rdg-drag-handle-size) * -0.5 + 1px)';\n const isLastColumn = column.idx + colSpan - 1 === maxColIdx;\n\n return {\n ...style,\n gridRowStart,\n marginInlineEnd: isLastColumn ? undefined : marginEnd,\n marginBlockEnd: isLastRow ? undefined : marginEnd,\n insetInlineStart: insetInlineStart\n ? `calc(${insetInlineStart} + ${columnWidth}px + var(--rdg-drag-handle-size) * -0.5 - 1px)`\n : undefined\n };\n }\n\n return (\n <div\n style={getStyle()}\n className={clsx(cellDragHandleClassname, column.frozen && cellDragHandleFrozenClassname)}\n onClick={onClick}\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n />\n );\n}\n", "import { useEffect, useRef } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useLatestFunc } from './hooks';\nimport { createCellEvent, getCellClassname, getCellStyle, onEditorNavigation } from './utils';\nimport type {\n CellKeyboardEvent,\n CellRendererProps,\n EditCellKeyDownArgs,\n Maybe,\n Omit,\n RenderEditCellProps\n} from './types';\n\n/*\n * To check for outside `mousedown` events, we listen to all `mousedown` events at their birth,\n * i.e. on the window during the capture phase, and at their death, i.e. on the window during the bubble phase.\n *\n * We schedule a check at the birth of the event, cancel the check when the event reaches the \"inside\" container,\n * and trigger the \"outside\" callback when the event bubbles back up to the window.\n *\n * The event can be `stopPropagation()`ed halfway through, so they may not always bubble back up to the window,\n * so an alternative check must be used. The check must happen after the event can reach the \"inside\" container,\n * and not before it run to completion. `requestAnimationFrame` is the best way we know how to achieve this.\n * Usually we want click event handlers from parent components to access the latest commited values,\n * so `mousedown` is used instead of `click`.\n *\n * We must also rely on React's event capturing/bubbling to handle elements rendered in a portal.\n */\n\nconst cellEditing = css`\n @layer rdg.EditCell {\n padding: 0;\n }\n`;\n\ntype SharedCellRendererProps<R, SR> = Pick<CellRendererProps<R, SR>, 'colSpan'>;\n\ninterface EditCellProps<R, SR>\n extends Omit<RenderEditCellProps<R, SR>, 'onRowChange' | 'onClose'>,\n SharedCellRendererProps<R, SR> {\n rowIdx: number;\n onRowChange: (row: R, commitChanges: boolean, shouldFocusCell: boolean) => void;\n closeEditor: (shouldFocusCell: boolean) => void;\n navigate: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n onKeyDown: Maybe<(args: EditCellKeyDownArgs<R, SR>, event: CellKeyboardEvent) => void>;\n}\n\nexport default function EditCell<R, SR>({\n column,\n colSpan,\n row,\n rowIdx,\n onRowChange,\n closeEditor,\n onKeyDown,\n navigate\n}: EditCellProps<R, SR>) {\n const frameRequestRef = useRef<number | undefined>(undefined);\n const commitOnOutsideClick = column.editorOptions?.commitOnOutsideClick !== false;\n\n // We need to prevent the `useEffect` from cleaning up between re-renders,\n // as `onWindowCaptureMouseDown` might otherwise miss valid mousedown events.\n // To that end we instead access the latest props via useLatestFunc.\n const commitOnOutsideMouseDown = useLatestFunc(() => {\n onClose(true, false);\n });\n\n useEffect(() => {\n if (!commitOnOutsideClick) return;\n\n function onWindowCaptureMouseDown() {\n frameRequestRef.current = requestAnimationFrame(commitOnOutsideMouseDown);\n }\n\n addEventListener('mousedown', onWindowCaptureMouseDown, { capture: true });\n\n return () => {\n removeEventListener('mousedown', onWindowCaptureMouseDown, { capture: true });\n cancelFrameRequest();\n };\n }, [commitOnOutsideClick, commitOnOutsideMouseDown]);\n\n function cancelFrameRequest() {\n cancelAnimationFrame(frameRequestRef.current!);\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (onKeyDown) {\n const cellEvent = createCellEvent(event);\n onKeyDown(\n {\n mode: 'EDIT',\n row,\n column,\n rowIdx,\n navigate() {\n navigate(event);\n },\n onClose\n },\n cellEvent\n );\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n\n if (event.key === 'Escape') {\n // Discard changes\n onClose();\n } else if (event.key === 'Enter') {\n onClose(true);\n } else if (onEditorNavigation(event)) {\n navigate(event);\n }\n }\n\n function onClose(commitChanges = false, shouldFocusCell = true) {\n if (commitChanges) {\n onRowChange(row, true, shouldFocusCell);\n } else {\n closeEditor(shouldFocusCell);\n }\n }\n\n function onEditorRowChange(row: R, commitChangesAndFocus = false) {\n onRowChange(row, commitChangesAndFocus, commitChangesAndFocus);\n }\n\n const { cellClass } = column;\n const className = getCellClassname(\n column,\n 'rdg-editor-container',\n !column.editorOptions?.displayCellContent && cellEditing,\n typeof cellClass === 'function' ? cellClass(row) : cellClass\n );\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1} // aria-colindex is 1-based\n aria-colspan={colSpan}\n aria-selected\n className={className}\n style={getCellStyle(column, colSpan)}\n onKeyDown={handleKeyDown}\n onMouseDownCapture={cancelFrameRequest}\n >\n {column.renderEditCell != null && (\n <>\n {column.renderEditCell({\n column,\n row,\n rowIdx,\n onRowChange: onEditorRowChange,\n onClose\n })}\n {column.editorOptions?.displayCellContent &&\n column.renderCell({\n column,\n row,\n rowIdx,\n isCellEditable: true,\n tabIndex: -1,\n onRowChange: onEditorRowChange\n })}\n </>\n )}\n </div>\n );\n}\n", "import clsx from 'clsx';\n\nimport { useRovingTabIndex } from './hooks';\nimport { getHeaderCellRowSpan, getHeaderCellStyle } from './utils';\nimport type { CalculatedColumnParent } from './types';\nimport type { GroupedColumnHeaderRowProps } from './GroupedColumnHeaderRow';\nimport { cellClassname } from './style/cell';\n\ntype SharedGroupedColumnHeaderRowProps<R, SR> = Pick<\n GroupedColumnHeaderRowProps<R, SR>,\n 'rowIdx' | 'selectCell'\n>;\n\ninterface GroupedColumnHeaderCellProps<R, SR> extends SharedGroupedColumnHeaderRowProps<R, SR> {\n column: CalculatedColumnParent<R, SR>;\n isCellSelected: boolean;\n}\n\nexport default function GroupedColumnHeaderCell<R, SR>({\n column,\n rowIdx,\n isCellSelected,\n selectCell\n}: GroupedColumnHeaderCellProps<R, SR>) {\n const { tabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n const { colSpan } = column;\n const rowSpan = getHeaderCellRowSpan(column, rowIdx);\n const index = column.idx + 1;\n\n function onClick() {\n selectCell({ idx: column.idx, rowIdx });\n }\n\n return (\n <div\n role=\"columnheader\"\n aria-colindex={index}\n aria-colspan={colSpan}\n aria-rowspan={rowSpan}\n aria-selected={isCellSelected}\n tabIndex={tabIndex}\n className={clsx(cellClassname, column.headerCellClass)}\n style={{\n ...getHeaderCellStyle(column, rowIdx, rowSpan),\n gridColumnStart: index,\n gridColumnEnd: index + colSpan\n }}\n onFocus={onFocus}\n onClick={onClick}\n >\n {column.name}\n </div>\n );\n}\n", "import { css } from '@linaria/core';\n\nimport type { RenderHeaderCellProps } from './types';\nimport { useDefaultRenderers } from './DataGridDefaultRenderersProvider';\n\nconst headerSortCellClassname = css`\n @layer rdg.SortableHeaderCell {\n display: flex;\n }\n`;\n\nconst headerSortName = css`\n @layer rdg.SortableHeaderCellName {\n flex-grow: 1;\n overflow: clip;\n text-overflow: ellipsis;\n }\n`;\n\nconst headerSortNameClassname = `rdg-header-sort-name ${headerSortName}`;\n\nexport default function renderHeaderCell<R, SR>({\n column,\n sortDirection,\n priority\n}: RenderHeaderCellProps<R, SR>) {\n if (!column.sortable) return column.name;\n\n return (\n <SortableHeaderCell sortDirection={sortDirection} priority={priority}>\n {column.name}\n </SortableHeaderCell>\n );\n}\n\ntype SharedHeaderCellProps<R, SR> = Pick<\n RenderHeaderCellProps<R, SR>,\n 'sortDirection' | 'priority'\n>;\n\ninterface SortableHeaderCellProps<R, SR> extends SharedHeaderCellProps<R, SR> {\n children: React.ReactNode;\n}\n\nfunction SortableHeaderCell<R, SR>({\n sortDirection,\n priority,\n children\n}: SortableHeaderCellProps<R, SR>) {\n const renderSortStatus = useDefaultRenderers<R, SR>()!.renderSortStatus!;\n\n return (\n <span className={headerSortCellClassname}>\n <span className={headerSortNameClassname}>{children}</span>\n <span>{renderSortStatus({ sortDirection, priority })}</span>\n </span>\n );\n}\n", "import { useState } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useRovingTabIndex } from './hooks';\nimport {\n clampColumnWidth,\n getCellClassname,\n getCellStyle,\n getHeaderCellRowSpan,\n getHeaderCellStyle,\n stopPropagation\n} from './utils';\nimport type { CalculatedColumn, SortColumn } from './types';\nimport type { HeaderRowProps } from './HeaderRow';\nimport defaultRenderHeaderCell from './renderHeaderCell';\n\nconst cellSortableClassname = css`\n @layer rdg.HeaderCell {\n cursor: pointer;\n }\n`;\n\nconst cellResizable = css`\n @layer rdg.HeaderCell {\n touch-action: none;\n }\n`;\n\nconst cellResizableClassname = `rdg-cell-resizable ${cellResizable}`;\n\nexport const resizeHandleClassname = css`\n @layer rdg.HeaderCell {\n cursor: col-resize;\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n inset-block-end: 0;\n inline-size: 10px;\n }\n`;\n\nconst cellDraggableClassname = 'rdg-cell-draggable';\n\nconst cellDragging = css`\n opacity: 0.5;\n`;\n\nconst cellDraggingClassname = `rdg-cell-dragging ${cellDragging}`;\n\nconst cellOver = css`\n background-color: var(--rdg-header-draggable-background-color);\n`;\n\nconst cellOverClassname = `rdg-cell-drag-over ${cellOver}`;\n\ntype SharedHeaderRowProps<R, SR> = Pick<\n HeaderRowProps<R, SR, React.Key>,\n | 'sortColumns'\n | 'onSortColumnsChange'\n | 'selectCell'\n | 'onColumnResize'\n | 'shouldFocusGrid'\n | 'direction'\n | 'onColumnsReorder'\n>;\n\nexport interface HeaderCellProps<R, SR> extends SharedHeaderRowProps<R, SR> {\n column: CalculatedColumn<R, SR>;\n colSpan: number | undefined;\n rowIdx: number;\n isCellSelected: boolean;\n dragDropKey: string;\n}\n\nexport default function HeaderCell<R, SR>({\n column,\n colSpan,\n rowIdx,\n isCellSelected,\n onColumnResize,\n onColumnsReorder,\n sortColumns,\n onSortColumnsChange,\n selectCell,\n shouldFocusGrid,\n direction,\n dragDropKey\n}: HeaderCellProps<R, SR>) {\n const [isDragging, setIsDragging] = useState(false);\n const [isOver, setIsOver] = useState(false);\n const isRtl = direction === 'rtl';\n const rowSpan = getHeaderCellRowSpan(column, rowIdx);\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n const sortIndex = sortColumns?.findIndex((sort) => sort.columnKey === column.key);\n const sortColumn =\n sortIndex !== undefined && sortIndex > -1 ? sortColumns![sortIndex] : undefined;\n const sortDirection = sortColumn?.direction;\n const priority = sortColumn !== undefined && sortColumns!.length > 1 ? sortIndex! + 1 : undefined;\n const ariaSort =\n sortDirection && !priority ? (sortDirection === 'ASC' ? 'ascending' : 'descending') : undefined;\n const { sortable, resizable, draggable } = column;\n\n const className = getCellClassname(column, column.headerCellClass, {\n [cellSortableClassname]: sortable,\n [cellResizableClassname]: resizable,\n [cellDraggableClassname]: draggable,\n [cellDraggingClassname]: isDragging,\n [cellOverClassname]: isOver\n });\n\n const renderHeaderCell = column.renderHeaderCell ?? defaultRenderHeaderCell;\n\n function onPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (event.pointerType === 'mouse' && event.buttons !== 1) {\n return;\n }\n\n // Fix column resizing on a draggable column in FF\n event.preventDefault();\n\n const { currentTarget, pointerId } = event;\n const headerCell = currentTarget.parentElement!;\n const { right, left } = headerCell.getBoundingClientRect();\n const offset = isRtl ? event.clientX - left : right - event.clientX;\n let hasDoubleClicked = false;\n\n function onPointerMove(event: PointerEvent) {\n const { width, right, left } = headerCell.getBoundingClientRect();\n let newWidth = isRtl ? right + offset - event.clientX : event.clientX + offset - left;\n newWidth = clampColumnWidth(newWidth, column);\n if (width > 0 && newWidth !== width) {\n onColumnResize(column, newWidth);\n }\n }\n\n function onDoubleClick() {\n hasDoubleClicked = true;\n onColumnResize(column, 'max-content');\n }\n\n function onLostPointerCapture(event: PointerEvent) {\n // Handle final pointer position that may have been skipped by coalesced pointer move events.\n // Skip move pointer handling if the user double-clicked.\n if (!hasDoubleClicked) {\n onPointerMove(event);\n }\n\n currentTarget.removeEventListener('pointermove', onPointerMove);\n currentTarget.removeEventListener('dblclick', onDoubleClick);\n currentTarget.removeEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n currentTarget.setPointerCapture(pointerId);\n currentTarget.addEventListener('pointermove', onPointerMove);\n currentTarget.addEventListener('dblclick', onDoubleClick);\n currentTarget.addEventListener('lostpointercapture', onLostPointerCapture);\n }\n\n function onSort(ctrlClick: boolean) {\n if (onSortColumnsChange == null) return;\n const { sortDescendingFirst } = column;\n if (sortColumn === undefined) {\n // not currently sorted\n const nextSort: SortColumn = {\n columnKey: column.key,\n direction: sortDescendingFirst ? 'DESC' : 'ASC'\n };\n onSortColumnsChange(sortColumns && ctrlClick ? [...sortColumns, nextSort] : [nextSort]);\n } else {\n let nextSortColumn: SortColumn | undefined;\n if (\n (sortDescendingFirst === true && sortDirection === 'DESC') ||\n (sortDescendingFirst !== true && sortDirection === 'ASC')\n ) {\n nextSortColumn = {\n columnKey: column.key,\n direction: sortDirection === 'ASC' ? 'DESC' : 'ASC'\n };\n }\n if (ctrlClick) {\n const nextSortColumns = [...sortColumns!];\n if (nextSortColumn) {\n // swap direction\n nextSortColumns[sortIndex!] = nextSortColumn;\n } else {\n // remove sort\n nextSortColumns.splice(sortIndex!, 1);\n }\n onSortColumnsChange(nextSortColumns);\n } else {\n onSortColumnsChange(nextSortColumn ? [nextSortColumn] : []);\n }\n }\n }\n\n function onClick(event: React.MouseEvent<HTMLSpanElement>) {\n selectCell({ idx: column.idx, rowIdx });\n\n if (sortable) {\n onSort(event.ctrlKey || event.metaKey);\n }\n }\n\n function handleFocus(event: React.FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n if (shouldFocusGrid) {\n // Select the first header cell if there is no selected cell\n selectCell({ idx: 0, rowIdx });\n }\n }\n\n function onKeyDown(event: React.KeyboardEvent<HTMLSpanElement>) {\n if (event.key === ' ' || event.key === 'Enter') {\n // prevent scrolling\n event.preventDefault();\n onSort(event.ctrlKey || event.metaKey);\n }\n }\n\n function onDragStart(event: React.DragEvent<HTMLDivElement>) {\n event.dataTransfer.setData(dragDropKey, column.key);\n event.dataTransfer.dropEffect = 'move';\n setIsDragging(true);\n }\n\n function onDragEnd() {\n setIsDragging(false);\n }\n\n function onDragOver(event: React.DragEvent<HTMLDivElement>) {\n // prevent default to allow drop\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n }\n\n function onDrop(event: React.DragEvent<HTMLDivElement>) {\n setIsOver(false);\n // The dragDropKey is derived from the useId() hook, which can sometimes generate keys with uppercase letters.\n // When setting data using event.dataTransfer.setData(), the key is automatically converted to lowercase in some browsers.\n // To ensure consistent comparison, we normalize the dragDropKey to lowercase before checking its presence in the event's dataTransfer types.\n // https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface\n if (event.dataTransfer.types.includes(dragDropKey.toLowerCase())) {\n const sourceKey = event.dataTransfer.getData(dragDropKey.toLowerCase());\n if (sourceKey !== column.key) {\n event.preventDefault();\n onColumnsReorder?.(sourceKey, column.key);\n }\n }\n }\n\n function onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n if (isEventPertinent(event)) {\n setIsOver(true);\n }\n }\n\n function onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n if (isEventPertinent(event)) {\n setIsOver(false);\n }\n }\n\n let draggableProps: React.HTMLAttributes<HTMLDivElement> | undefined;\n if (draggable) {\n draggableProps = {\n draggable: true,\n /* events fired on the draggable target */\n onDragStart,\n onDragEnd,\n /* events fired on the drop targets */\n onDragOver,\n onDragEnter,\n onDragLeave,\n onDrop\n };\n }\n\n return (\n <div\n role=\"columnheader\"\n aria-colindex={column.idx + 1}\n aria-colspan={colSpan}\n aria-rowspan={rowSpan}\n aria-selected={isCellSelected}\n aria-sort={ariaSort}\n // set the tabIndex to 0 when there is no selected cell so grid can receive focus\n tabIndex={shouldFocusGrid ? 0 : tabIndex}\n className={className}\n style={{\n ...getHeaderCellStyle(column, rowIdx, rowSpan),\n ...getCellStyle(column, colSpan)\n }}\n onFocus={handleFocus}\n onClick={onClick}\n onKeyDown={sortable ? onKeyDown : undefined}\n {...draggableProps}\n >\n {renderHeaderCell({\n column,\n sortDirection,\n priority,\n tabIndex: childTabIndex\n })}\n\n {resizable && (\n <div\n className={resizeHandleClassname}\n onClick={stopPropagation}\n onPointerDown={onPointerDown}\n />\n )}\n </div>\n );\n}\n\n// only accept pertinent drag events:\n// - ignore drag events going from the container to an element inside the container\n// - ignore drag events going from an element inside the container to the container\nfunction isEventPertinent(event: React.DragEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n return !event.currentTarget.contains(relatedTarget);\n}\n", "import { css } from '@linaria/core';\n\nexport const row = css`\n @layer rdg.Row {\n display: contents;\n background-color: var(--rdg-background-color);\n\n &:hover {\n background-color: var(--rdg-row-hover-background-color);\n }\n\n &[aria-selected='true'] {\n background-color: var(--rdg-row-selected-background-color);\n\n &:hover {\n background-color: var(--rdg-row-selected-hover-background-color);\n }\n }\n }\n`;\n\nexport const rowClassname = `rdg-row ${row}`;\n\nexport const rowSelected = css`\n @layer rdg.FocusSink {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n`;\n\nexport const rowSelectedClassname = 'rdg-row-selected';\n\nexport const rowSelectedWithFrozenCell = css`\n @layer rdg.FocusSink {\n &::before {\n content: '';\n display: inline-block;\n block-size: 100%;\n position: sticky;\n inset-inline-start: 0;\n border-inline-start: 2px solid var(--rdg-selection-color);\n }\n }\n`;\n\nexport const topSummaryRowClassname = 'rdg-top-summary-row';\n\nexport const bottomSummaryRowClassname = 'rdg-bottom-summary-row';\n", "import { memo, useId } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { getColSpan } from './utils';\nimport type { CalculatedColumn, Direction, Position } from './types';\nimport type { DataGridProps } from './DataGrid';\nimport HeaderCell from './HeaderCell';\nimport { cell, cellFrozen } from './style/cell';\nimport { rowSelectedClassname } from './style/row';\n\ntype SharedDataGridProps<R, SR, K extends React.Key> = Pick<\n DataGridProps<R, SR, K>,\n 'sortColumns' | 'onSortColumnsChange' | 'onColumnsReorder'\n>;\n\nexport interface HeaderRowProps<R, SR, K extends React.Key> extends SharedDataGridProps<R, SR, K> {\n rowIdx: number;\n columns: readonly CalculatedColumn<R, SR>[];\n onColumnResize: (column: CalculatedColumn<R, SR>, width: number | 'max-content') => void;\n selectCell: (position: Position) => void;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n shouldFocusGrid: boolean;\n direction: Direction;\n}\n\nconst headerRow = css`\n @layer rdg.HeaderRow {\n display: contents;\n background-color: var(--rdg-header-background-color);\n font-weight: bold;\n\n & > .${cell} {\n /* Should have a higher value than 1 to show up above regular cells and the focus sink */\n z-index: 2;\n position: sticky;\n }\n\n & > .${cellFrozen} {\n z-index: 3;\n }\n }\n`;\n\nexport const headerRowClassname = `rdg-header-row ${headerRow}`;\n\nfunction HeaderRow<R, SR, K extends React.Key>({\n rowIdx,\n columns,\n onColumnResize,\n onColumnsReorder,\n sortColumns,\n onSortColumnsChange,\n lastFrozenColumnIndex,\n selectedCellIdx,\n selectCell,\n shouldFocusGrid,\n direction\n}: HeaderRowProps<R, SR, K>) {\n const dragDropKey = useId();\n\n const cells = [];\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'HEADER' });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n cells.push(\n <HeaderCell<R, SR>\n key={column.key}\n column={column}\n colSpan={colSpan}\n rowIdx={rowIdx}\n isCellSelected={selectedCellIdx === column.idx}\n onColumnResize={onColumnResize}\n onColumnsReorder={onColumnsReorder}\n onSortColumnsChange={onSortColumnsChange}\n sortColumns={sortColumns}\n selectCell={selectCell}\n shouldFocusGrid={shouldFocusGrid && index === 0}\n direction={direction}\n dragDropKey={dragDropKey}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={rowIdx} // aria-rowindex is 1 based\n className={clsx(headerRowClassname, {\n [rowSelectedClassname]: selectedCellIdx === -1\n })}\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(HeaderRow) as <R, SR, K extends React.Key>(\n props: HeaderRowProps<R, SR, K>\n) => React.JSX.Element;\n", "import { memo } from 'react';\n\nimport type { CalculatedColumn, CalculatedColumnParent, Position } from './types';\nimport GroupedColumnHeaderCell from './GroupedColumnHeaderCell';\nimport { headerRowClassname } from './HeaderRow';\n\nexport interface GroupedColumnHeaderRowProps<R, SR> {\n rowIdx: number;\n level: number;\n columns: readonly CalculatedColumn<R, SR>[];\n selectCell: (position: Position) => void;\n selectedCellIdx: number | undefined;\n}\n\nfunction GroupedColumnHeaderRow<R, SR>({\n rowIdx,\n level,\n columns,\n selectedCellIdx,\n selectCell\n}: GroupedColumnHeaderRowProps<R, SR>) {\n const cells = [];\n const renderedParents = new Set<CalculatedColumnParent<R, SR>>();\n\n for (const column of columns) {\n let { parent } = column;\n\n if (parent === undefined) continue;\n\n while (parent.level > level) {\n if (parent.parent === undefined) break;\n parent = parent.parent;\n }\n\n if (parent.level === level && !renderedParents.has(parent)) {\n renderedParents.add(parent);\n const { idx } = parent;\n cells.push(\n <GroupedColumnHeaderCell<R, SR>\n key={idx}\n column={parent}\n rowIdx={rowIdx}\n isCellSelected={selectedCellIdx === idx}\n selectCell={selectCell}\n />\n );\n }\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={rowIdx} // aria-rowindex is 1 based\n className={headerRowClassname}\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(GroupedColumnHeaderRow) as <R, SR>(\n props: GroupedColumnHeaderRowProps<R, SR>\n) => React.JSX.Element;\n", "import { memo } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useRovingTabIndex } from './hooks';\nimport { createCellEvent, getCellClassname, getCellStyle, isCellEditableUtil } from './utils';\nimport type { CellRendererProps } from './types';\n\nconst cellCopied = css`\n @layer rdg.Cell {\n background-color: #ccccff;\n }\n`;\n\nconst cellCopiedClassname = `rdg-cell-copied ${cellCopied}`;\n\nconst cellDraggedOver = css`\n @layer rdg.Cell {\n background-color: #ccccff;\n\n &.${cellCopied} {\n background-color: #9999ff;\n }\n }\n`;\n\nconst cellDraggedOverClassname = `rdg-cell-dragged-over ${cellDraggedOver}`;\n\nfunction Cell<R, SR>({\n column,\n colSpan,\n isCellSelected,\n isCopied,\n isDraggedOver,\n row,\n rowIdx,\n onClick,\n onDoubleClick,\n onContextMenu,\n onRowChange,\n selectCell,\n ...props\n}: CellRendererProps<R, SR>) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n\n const { cellClass } = column;\n const className = getCellClassname(\n column,\n {\n [cellCopiedClassname]: isCopied,\n [cellDraggedOverClassname]: isDraggedOver\n },\n typeof cellClass === 'function' ? cellClass(row) : cellClass\n );\n const isEditable = isCellEditableUtil(column, row);\n\n function selectCellWrapper(openEditor?: boolean) {\n selectCell({ rowIdx, idx: column.idx }, openEditor);\n }\n\n function handleClick(event: React.MouseEvent<HTMLDivElement>) {\n if (onClick) {\n const cellEvent = createCellEvent(event);\n onClick({ row, column, selectCell: selectCellWrapper }, cellEvent);\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n selectCellWrapper();\n }\n\n function handleContextMenu(event: React.MouseEvent<HTMLDivElement>) {\n if (onContextMenu) {\n const cellEvent = createCellEvent(event);\n onContextMenu({ row, column, selectCell: selectCellWrapper }, cellEvent);\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n selectCellWrapper();\n }\n\n function handleDoubleClick(event: React.MouseEvent<HTMLDivElement>) {\n if (onDoubleClick) {\n const cellEvent = createCellEvent(event);\n onDoubleClick({ row, column, selectCell: selectCellWrapper }, cellEvent);\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n selectCellWrapper(true);\n }\n\n function handleRowChange(newRow: R) {\n onRowChange(column, newRow);\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1} // aria-colindex is 1-based\n aria-colspan={colSpan}\n aria-selected={isCellSelected}\n aria-readonly={!isEditable || undefined}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleContextMenu}\n onFocus={onFocus}\n {...props}\n >\n {column.renderCell({\n column,\n row,\n rowIdx,\n isCellEditable: isEditable,\n tabIndex: childTabIndex,\n onRowChange: handleRowChange\n })}\n </div>\n );\n}\n\nexport default memo(Cell) as <R, SR>(props: CellRendererProps<R, SR>) => React.JSX.Element;\n", "import { forwardRef, memo, useMemo, type RefAttributes } from 'react';\nimport clsx from 'clsx';\n\nimport { RowSelectionProvider, useLatestFunc, type RowSelectionContextValue } from './hooks';\nimport { getColSpan, getRowStyle } from './utils';\nimport type { CalculatedColumn, RenderRowProps } from './types';\nimport Cell from './Cell';\nimport { rowClassname, rowSelectedClassname } from './style/row';\n\nfunction Row<R, SR>(\n {\n className,\n rowIdx,\n gridRowStart,\n selectedCellIdx,\n isRowSelectionDisabled,\n isRowSelected,\n copiedCellIdx,\n draggedOverCellIdx,\n lastFrozenColumnIndex,\n row,\n viewportColumns,\n selectedCellEditor,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n rowClass,\n setDraggedOverRowIdx,\n onMouseEnter,\n onRowChange,\n selectCell,\n ...props\n }: RenderRowProps<R, SR>,\n ref: React.Ref<HTMLDivElement>\n) {\n const handleRowChange = useLatestFunc((column: CalculatedColumn<R, SR>, newRow: R) => {\n onRowChange(column, rowIdx, newRow);\n });\n\n function handleDragEnter(event: React.MouseEvent<HTMLDivElement>) {\n setDraggedOverRowIdx?.(rowIdx);\n onMouseEnter?.(event);\n }\n\n className = clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n {\n [rowSelectedClassname]: selectedCellIdx === -1\n },\n rowClass?.(row, rowIdx),\n className\n );\n\n const cells = [];\n\n for (let index = 0; index < viewportColumns.length; index++) {\n const column = viewportColumns[index];\n const { idx } = column;\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n const isCellSelected = selectedCellIdx === idx;\n\n if (isCellSelected && selectedCellEditor) {\n cells.push(selectedCellEditor);\n } else {\n cells.push(\n <Cell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={rowIdx}\n isCopied={copiedCellIdx === idx}\n isDraggedOver={draggedOverCellIdx === idx}\n isCellSelected={isCellSelected}\n onClick={onCellClick}\n onDoubleClick={onCellDoubleClick}\n onContextMenu={onCellContextMenu}\n onRowChange={handleRowChange}\n selectCell={selectCell}\n />\n );\n }\n }\n\n const selectionValue = useMemo(\n (): RowSelectionContextValue => ({ isRowSelected, isRowSelectionDisabled }),\n [isRowSelectionDisabled, isRowSelected]\n );\n\n return (\n <RowSelectionProvider value={selectionValue}>\n <div\n role=\"row\"\n ref={ref}\n className={className}\n onMouseEnter={handleDragEnter}\n style={getRowStyle(gridRowStart)}\n {...props}\n >\n {cells}\n </div>\n </RowSelectionProvider>\n );\n}\n\nconst RowComponent = memo(forwardRef(Row)) as <R, SR>(\n props: RenderRowProps<R, SR> & RefAttributes<HTMLDivElement>\n) => React.JSX.Element;\n\nexport default RowComponent;\n\nexport function defaultRenderRow<R, SR>(key: React.Key, props: RenderRowProps<R, SR>) {\n return <RowComponent key={key} {...props} />;\n}\n", "import { useRef } from 'react';\n\nimport { useLayoutEffect } from './hooks';\nimport { scrollIntoView } from './utils';\n\nexport interface PartialPosition {\n readonly idx?: number | undefined;\n readonly rowIdx?: number | undefined;\n}\n\nexport default function ScrollToCell({\n scrollToPosition: { idx, rowIdx },\n gridElement,\n setScrollToCellPosition\n}: {\n scrollToPosition: PartialPosition;\n gridElement: HTMLDivElement;\n setScrollToCellPosition: (cell: null) => void;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n // scroll until the cell is completely visible\n // this is needed if the grid has auto-sized columns\n scrollIntoView(ref.current);\n });\n\n useLayoutEffect(() => {\n function removeScrollToCell() {\n setScrollToCellPosition(null);\n }\n\n const observer = new IntersectionObserver(removeScrollToCell, {\n root: gridElement,\n threshold: 1.0\n });\n\n observer.observe(ref.current!);\n\n return () => {\n observer.disconnect();\n };\n }, [gridElement, setScrollToCellPosition]);\n\n return (\n <div\n ref={ref}\n style={{\n gridColumn: idx === undefined ? '1/-1' : idx + 1,\n gridRow: rowIdx === undefined ? '1/-1' : rowIdx + 2\n }}\n />\n );\n}\n", "import { css } from '@linaria/core';\n\nimport type { RenderSortIconProps, RenderSortPriorityProps, RenderSortStatusProps } from './types';\n\nconst arrow = css`\n @layer rdg.SortIcon {\n fill: currentColor;\n\n > path {\n transition: d 0.1s;\n }\n }\n`;\n\nconst arrowClassname = `rdg-sort-arrow ${arrow}`;\n\nexport default function renderSortStatus({ sortDirection, priority }: RenderSortStatusProps) {\n return (\n <>\n {renderSortIcon({ sortDirection })}\n {renderSortPriority({ priority })}\n </>\n );\n}\n\nexport function renderSortIcon({ sortDirection }: RenderSortIconProps) {\n if (sortDirection === undefined) return null;\n\n return (\n <svg viewBox=\"0 0 12 8\" width=\"12\" height=\"8\" className={arrowClassname} aria-hidden>\n <path d={sortDirection === 'ASC' ? 'M0 8 6 0 12 8' : 'M0 0 6 8 12 0'} />\n </svg>\n );\n}\n\nexport function renderSortPriority({ priority }: RenderSortPriorityProps) {\n return priority;\n}\n", "import { css } from '@linaria/core';\n\nimport { cell } from './cell';\nimport { bottomSummaryRowClassname, row, topSummaryRowClassname } from './row';\n\nconst lightTheme = `\n --rdg-color: #000;\n --rdg-border-color: #ddd;\n --rdg-summary-border-color: #aaa;\n --rdg-background-color: hsl(0deg 0% 100%);\n --rdg-header-background-color: hsl(0deg 0% 97.5%);\n --rdg-header-draggable-background-color: hsl(0deg 0% 90.5%);\n --rdg-row-hover-background-color: hsl(0deg 0% 96%);\n --rdg-row-selected-background-color: hsl(207deg 76% 92%);\n --rdg-row-selected-hover-background-color: hsl(207deg 76% 88%);\n\n --rdg-checkbox-focus-color: hsl(207deg 100% 69%);\n`;\n\nconst darkTheme = `\n --rdg-color: #ddd;\n --rdg-border-color: #444;\n --rdg-summary-border-color: #555;\n --rdg-background-color: hsl(0deg 0% 13%);\n --rdg-header-background-color: hsl(0deg 0% 10.5%);\n --rdg-header-draggable-background-color: hsl(0deg 0% 17.5%);\n --rdg-row-hover-background-color: hsl(0deg 0% 9%);\n --rdg-row-selected-background-color: hsl(207deg 76% 42%);\n --rdg-row-selected-hover-background-color: hsl(207deg 76% 38%);\n\n --rdg-checkbox-focus-color: hsl(207deg 100% 89%);\n`;\n\nconst root = css`\n @layer rdg.Defaults {\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n }\n\n @layer rdg.Root {\n ${lightTheme}\n --rdg-selection-color: #66afe9;\n --rdg-font-size: 14px;\n --rdg-cell-frozen-box-shadow: 2px 0 5px -2px rgba(136, 136, 136, 0.3);\n\n &:dir(rtl) {\n --rdg-cell-frozen-box-shadow: -2px 0 5px -2px rgba(136, 136, 136, 0.3);\n }\n\n display: grid;\n\n color-scheme: var(--rdg-color-scheme, light dark);\n accent-color: light-dark(hsl(207deg 100% 29%), hsl(207deg 100% 79%));\n\n /* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context */\n /* We set a stacking context so internal elements don't render on top of external elements. */\n /* size containment is not used as it could break \"width: min-content\" for example, and the grid would infinitely resize on Chromium browsers */\n contain: content;\n content-visibility: auto;\n block-size: 350px;\n border: 1px solid var(--rdg-border-color);\n box-sizing: border-box;\n overflow: auto;\n background-color: var(--rdg-background-color);\n color: var(--rdg-color);\n font-size: var(--rdg-font-size);\n\n /* needed on Firefox to fix scrollbars */\n &::before {\n content: '';\n grid-column: 1/-1;\n grid-row: 1/-1;\n }\n\n &.rdg-dark {\n --rdg-color-scheme: dark;\n ${darkTheme}\n }\n\n &.rdg-light {\n --rdg-color-scheme: light;\n }\n\n @media (prefers-color-scheme: dark) {\n &:not(.rdg-light) {\n ${darkTheme}\n }\n }\n\n > :nth-last-child(1 of .${topSummaryRowClassname}) {\n > .${cell} {\n border-block-end: 2px solid var(--rdg-summary-border-color);\n }\n }\n\n > :nth-child(1 of .${bottomSummaryRowClassname}) {\n > .${cell} {\n border-block-start: 2px solid var(--rdg-summary-border-color);\n }\n }\n }\n`;\n\nexport const rootClassname = `rdg ${root}`;\n\nconst viewportDragging = css`\n @layer rdg.Root {\n user-select: none;\n\n & .${row} {\n cursor: move;\n }\n }\n`;\n\nexport const viewportDraggingClassname = `rdg-viewport-dragging ${viewportDragging}`;\n\nexport const focusSinkClassname = css`\n @layer rdg.FocusSink {\n grid-column: 1/-1;\n pointer-events: none;\n /* Should have a higher value than 1 to show up above regular frozen cells */\n z-index: 1;\n }\n`;\n\nexport const focusSinkHeaderAndSummaryClassname = css`\n @layer rdg.FocusSink {\n /* Should have a higher value than 3 to show up above header and summary rows */\n z-index: 3;\n }\n`;\n", "import { memo } from 'react';\nimport { css } from '@linaria/core';\n\nimport { useRovingTabIndex } from './hooks';\nimport { getCellClassname, getCellStyle } from './utils';\nimport type { CellRendererProps } from './types';\n\nexport const summaryCellClassname = css`\n @layer rdg.SummaryCell {\n inset-block-start: var(--rdg-summary-row-top);\n inset-block-end: var(--rdg-summary-row-bottom);\n }\n`;\n\ntype SharedCellRendererProps<R, SR> = Pick<\n CellRendererProps<R, SR>,\n 'rowIdx' | 'column' | 'colSpan' | 'isCellSelected' | 'selectCell'\n>;\n\ninterface SummaryCellProps<R, SR> extends SharedCellRendererProps<R, SR> {\n row: SR;\n}\n\nfunction SummaryCell<R, SR>({\n column,\n colSpan,\n row,\n rowIdx,\n isCellSelected,\n selectCell\n}: SummaryCellProps<R, SR>) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n const { summaryCellClass } = column;\n const className = getCellClassname(\n column,\n summaryCellClassname,\n typeof summaryCellClass === 'function' ? summaryCellClass(row) : summaryCellClass\n );\n\n function onClick() {\n selectCell({ rowIdx, idx: column.idx });\n }\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-colspan={colSpan}\n aria-selected={isCellSelected}\n tabIndex={tabIndex}\n className={className}\n style={getCellStyle(column, colSpan)}\n onClick={onClick}\n onFocus={onFocus}\n >\n {column.renderSummaryCell?.({ column, row, tabIndex: childTabIndex })}\n </div>\n );\n}\n\nexport default memo(SummaryCell) as <R, SR>(props: SummaryCellProps<R, SR>) => React.JSX.Element;\n", "import { memo } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { getColSpan, getRowStyle } from './utils';\nimport type { RenderRowProps } from './types';\nimport { cell, cellFrozen } from './style/cell';\nimport {\n bottomSummaryRowClassname,\n rowClassname,\n rowSelectedClassname,\n topSummaryRowClassname\n} from './style/row';\nimport SummaryCell from './SummaryCell';\n\ntype SharedRenderRowProps<R, SR> = Pick<\n RenderRowProps<R, SR>,\n 'viewportColumns' | 'rowIdx' | 'gridRowStart' | 'selectCell'\n>;\n\ninterface SummaryRowProps<R, SR> extends SharedRenderRowProps<R, SR> {\n 'aria-rowindex': number;\n row: SR;\n top: number | undefined;\n bottom: number | undefined;\n lastFrozenColumnIndex: number;\n selectedCellIdx: number | undefined;\n isTop: boolean;\n}\n\nconst summaryRow = css`\n @layer rdg.SummaryRow {\n > .${cell} {\n position: sticky;\n }\n }\n`;\n\nconst topSummaryRow = css`\n @layer rdg.SummaryRow {\n > .${cell} {\n z-index: 2;\n }\n\n > .${cellFrozen} {\n z-index: 3;\n }\n }\n`;\n\nconst summaryRowClassname = `rdg-summary-row ${summaryRow}`;\n\nfunction SummaryRow<R, SR>({\n rowIdx,\n gridRowStart,\n row,\n viewportColumns,\n top,\n bottom,\n lastFrozenColumnIndex,\n selectedCellIdx,\n isTop,\n selectCell,\n 'aria-rowindex': ariaRowIndex\n}: SummaryRowProps<R, SR>) {\n const cells = [];\n for (let index = 0; index < viewportColumns.length; index++) {\n const column = viewportColumns[index];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'SUMMARY', row });\n if (colSpan !== undefined) {\n index += colSpan - 1;\n }\n\n const isCellSelected = selectedCellIdx === column.idx;\n\n cells.push(\n <SummaryCell<R, SR>\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={rowIdx}\n isCellSelected={isCellSelected}\n selectCell={selectCell}\n />\n );\n }\n\n return (\n <div\n role=\"row\"\n aria-rowindex={ariaRowIndex}\n className={clsx(\n rowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n summaryRowClassname,\n {\n [rowSelectedClassname]: selectedCellIdx === -1,\n [`${topSummaryRowClassname} ${topSummaryRow}`]: isTop,\n [bottomSummaryRowClassname]: !isTop\n }\n )}\n style={\n {\n ...getRowStyle(gridRowStart),\n '--rdg-summary-row-top': top !== undefined ? `${top}px` : undefined,\n '--rdg-summary-row-bottom': bottom !== undefined ? `${bottom}px` : undefined\n } as unknown as React.CSSProperties\n }\n >\n {cells}\n </div>\n );\n}\n\nexport default memo(SummaryRow) as <R, SR>(props: SummaryRowProps<R, SR>) => React.JSX.Element;\n", "import { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport type { Key, KeyboardEvent, RefAttributes } from 'react';\nimport { flushSync } from 'react-dom';\nimport clsx from 'clsx';\n\nimport {\n HeaderRowSelectionChangeProvider,\n HeaderRowSelectionProvider,\n RowSelectionChangeProvider,\n useCalculatedColumns,\n useColumnWidths,\n useGridDimensions,\n useLatestFunc,\n useLayoutEffect,\n useViewportColumns,\n useViewportRows,\n type HeaderRowSelectionContextValue\n} from './hooks';\nimport {\n abs,\n assertIsValidKeyGetter,\n canExitGrid,\n createCellEvent,\n getColSpan,\n getNextSelectedCellPosition,\n isCtrlKeyHeldDown,\n isDefaultCellInput,\n isSelectedCellEditable,\n renderMeasuringCells,\n scrollIntoView,\n sign\n} from './utils';\nimport type {\n CalculatedColumn,\n CellClickArgs,\n CellKeyboardEvent,\n CellKeyDownArgs,\n CellMouseEvent,\n CellNavigationMode,\n CellSelectArgs,\n Column,\n ColumnOrColumnGroup,\n CopyEvent,\n Direction,\n FillEvent,\n Maybe,\n PasteEvent,\n Position,\n Renderers,\n RowsChangeData,\n SelectHeaderRowEvent,\n SelectRowEvent,\n SortColumn\n} from './types';\nimport { renderCheckbox as defaultRenderCheckbox } from './cellRenderers';\nimport {\n DataGridDefaultRenderersProvider,\n useDefaultRenderers\n} from './DataGridDefaultRenderersProvider';\nimport DragHandle from './DragHandle';\nimport EditCell from './EditCell';\nimport GroupedColumnHeaderRow from './GroupedColumnHeaderRow';\nimport HeaderRow from './HeaderRow';\nimport { defaultRenderRow } from './Row';\nimport type { PartialPosition } from './ScrollToCell';\nimport ScrollToCell from './ScrollToCell';\nimport { default as defaultRenderSortStatus } from './sortStatus';\nimport {\n focusSinkClassname,\n focusSinkHeaderAndSummaryClassname,\n rootClassname,\n viewportDraggingClassname\n} from './style/core';\nimport { rowSelected, rowSelectedWithFrozenCell } from './style/row';\nimport SummaryRow from './SummaryRow';\n\nexport interface SelectCellState extends Position {\n readonly mode: 'SELECT';\n}\n\ninterface EditCellState<R> extends Position {\n readonly mode: 'EDIT';\n readonly row: R;\n readonly originalRow: R;\n}\n\ntype DefaultColumnOptions<R, SR> = Pick<\n Column<R, SR>,\n 'renderCell' | 'width' | 'minWidth' | 'maxWidth' | 'resizable' | 'sortable' | 'draggable'\n>;\n\nexport interface DataGridHandle {\n element: HTMLDivElement | null;\n scrollToCell: (position: PartialPosition) => void;\n selectCell: (position: Position, enableEditor?: Maybe<boolean>) => void;\n}\n\ntype SharedDivProps = Pick<\n React.HTMLAttributes<HTMLDivElement>,\n | 'role'\n | 'aria-label'\n | 'aria-labelledby'\n | 'aria-describedby'\n | 'aria-rowcount'\n | 'className'\n | 'style'\n>;\n\nexport interface DataGridProps<R, SR = unknown, K extends Key = Key> extends SharedDivProps {\n /**\n * Grid and data Props\n */\n /** An array of objects representing each column on the grid */\n columns: readonly ColumnOrColumnGroup<NoInfer<R>, NoInfer<SR>>[];\n /** A function called for each rendered row that should return a plain key/value pair object */\n rows: readonly R[];\n /**\n * Rows to be pinned at the top of the rows view for summary, the vertical scroll bar will not scroll these rows.\n */\n topSummaryRows?: Maybe<readonly SR[]>;\n /**\n * Rows to be pinned at the bottom of the rows view for summary, the vertical scroll bar will not scroll these rows.\n */\n bottomSummaryRows?: Maybe<readonly SR[]>;\n /** The getter should return a unique key for each row */\n rowKeyGetter?: Maybe<(row: NoInfer<R>) => K>;\n onRowsChange?: Maybe<(rows: NoInfer<R>[], data: RowsChangeData<NoInfer<R>, NoInfer<SR>>) => void>;\n\n /**\n * Dimensions props\n */\n /**\n * The height of each row in pixels\n * @default 35\n */\n rowHeight?: Maybe<number | ((row: NoInfer<R>) => number)>;\n /**\n * The height of the header row in pixels\n * @default 35\n */\n headerRowHeight?: Maybe<number>;\n /**\n * The height of each summary row in pixels\n * @default 35\n */\n summaryRowHeight?: Maybe<number>;\n\n /**\n * Feature props\n */\n /** Set of selected row keys */\n selectedRows?: Maybe<ReadonlySet<K>>;\n /** Determines if row selection is disabled, per row */\n isRowSelectionDisabled?: Maybe<(row: NoInfer<R>) => boolean>;\n /** Function called whenever row selection is changed */\n onSelectedRowsChange?: Maybe<(selectedRows: Set<NoInfer<K>>) => void>;\n /** Used for multi column sorting */\n sortColumns?: Maybe<readonly SortColumn[]>;\n onSortColumnsChange?: Maybe<(sortColumns: SortColumn[]) => void>;\n defaultColumnOptions?: Maybe<DefaultColumnOptions<NoInfer<R>, NoInfer<SR>>>;\n onFill?: Maybe<(event: FillEvent<NoInfer<R>>) => NoInfer<R>>;\n onCopy?: Maybe<(event: CopyEvent<NoInfer<R>>) => void>;\n onPaste?: Maybe<(event: PasteEvent<NoInfer<R>>) => NoInfer<R>>;\n\n /**\n * Event props\n */\n /** Function called whenever a cell is clicked */\n onCellClick?: Maybe<\n (args: CellClickArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void\n >;\n /** Function called whenever a cell is double clicked */\n onCellDoubleClick?: Maybe<\n (args: CellClickArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void\n >;\n /** Function called whenever a cell is right clicked */\n onCellContextMenu?: Maybe<\n (args: CellClickArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void\n >;\n onCellKeyDown?: Maybe<\n (args: CellKeyDownArgs<NoInfer<R>, NoInfer<SR>>, event: CellKeyboardEvent) => void\n >;\n /** Function called whenever cell selection is changed */\n onSelectedCellChange?: Maybe<(args: CellSelectArgs<NoInfer<R>, NoInfer<SR>>) => void>;\n /** Called when the grid is scrolled */\n onScroll?: Maybe<(event: React.UIEvent<HTMLDivElement>) => void>;\n /** Called when a column is resized */\n onColumnResize?: Maybe<(idx: number, width: number) => void>;\n /** Called when a column is reordered */\n onColumnsReorder?: Maybe<(sourceColumnKey: string, targetColumnKey: string) => void>;\n\n /**\n * Toggles and modes\n */\n /** @default true */\n enableVirtualization?: Maybe<boolean>;\n\n /**\n * Miscellaneous\n */\n renderers?: Maybe<Renderers<NoInfer<R>, NoInfer<SR>>>;\n rowClass?: Maybe<(row: NoInfer<R>, rowIdx: number) => Maybe<string>>;\n /** @default 'ltr' */\n direction?: Maybe<Direction>;\n 'data-testid'?: Maybe<string>;\n}\n\n/**\n * Main API Component to render a data grid of rows and columns\n *\n * @example\n *\n * <DataGrid columns={columns} rows={rows} />\n */\nfunction DataGrid<R, SR, K extends Key>(\n props: DataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n const {\n // Grid and data Props\n columns: rawColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n rowKeyGetter,\n onRowsChange,\n // Dimensions props\n rowHeight: rawRowHeight,\n headerRowHeight: rawHeaderRowHeight,\n summaryRowHeight: rawSummaryRowHeight,\n // Feature props\n selectedRows,\n isRowSelectionDisabled,\n onSelectedRowsChange,\n sortColumns,\n onSortColumnsChange,\n defaultColumnOptions,\n // Event props\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onCellKeyDown,\n onSelectedCellChange,\n onScroll,\n onColumnResize,\n onColumnsReorder,\n onFill,\n onCopy,\n onPaste,\n // Toggles and modes\n enableVirtualization: rawEnableVirtualization,\n // Miscellaneous\n renderers,\n className,\n style,\n rowClass,\n direction: rawDirection,\n // ARIA\n role: rawRole,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-rowcount': rawAriaRowCount,\n 'data-testid': testId\n } = props;\n\n /**\n * defaults\n */\n const defaultRenderers = useDefaultRenderers<R, SR>();\n const role = rawRole ?? 'grid';\n const rowHeight = rawRowHeight ?? 35;\n const headerRowHeight = rawHeaderRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const summaryRowHeight = rawSummaryRowHeight ?? (typeof rowHeight === 'number' ? rowHeight : 35);\n const renderRow = renderers?.renderRow ?? defaultRenderers?.renderRow ?? defaultRenderRow;\n const renderSortStatus =\n renderers?.renderSortStatus ?? defaultRenderers?.renderSortStatus ?? defaultRenderSortStatus;\n const renderCheckbox =\n renderers?.renderCheckbox ?? defaultRenderers?.renderCheckbox ?? defaultRenderCheckbox;\n const noRowsFallback = renderers?.noRowsFallback ?? defaultRenderers?.noRowsFallback;\n const enableVirtualization = rawEnableVirtualization ?? true;\n const direction = rawDirection ?? 'ltr';\n\n /**\n * states\n */\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n const [resizedColumnWidths, setResizedColumnWidths] = useState(\n (): ReadonlyMap<string, number> => new Map()\n );\n const [measuredColumnWidths, setMeasuredColumnWidths] = useState(\n (): ReadonlyMap<string, number> => new Map()\n );\n const [copiedCell, setCopiedCell] = useState<{ row: R; columnKey: string } | null>(null);\n const [isDragging, setDragging] = useState(false);\n const [draggedOverRowIdx, setOverRowIdx] = useState<number | undefined>(undefined);\n const [scrollToPosition, setScrollToPosition] = useState<PartialPosition | null>(null);\n\n const getColumnWidth = useCallback(\n (column: CalculatedColumn<R, SR>) => {\n return (\n resizedColumnWidths.get(column.key) ?? measuredColumnWidths.get(column.key) ?? column.width\n );\n },\n [measuredColumnWidths, resizedColumnWidths]\n );\n\n const [gridRef, gridWidth, gridHeight, horizontalScrollbarHeight] = useGridDimensions();\n const {\n columns,\n colSpanColumns,\n lastFrozenColumnIndex,\n headerRowsCount,\n colOverscanStartIdx,\n colOverscanEndIdx,\n templateColumns,\n layoutCssVars,\n totalFrozenColumnWidth\n } = useCalculatedColumns({\n rawColumns,\n defaultColumnOptions,\n getColumnWidth,\n scrollLeft,\n viewportWidth: gridWidth,\n enableVirtualization\n });\n\n const topSummaryRowsCount = topSummaryRows?.length ?? 0;\n const bottomSummaryRowsCount = bottomSummaryRows?.length ?? 0;\n const summaryRowsCount = topSummaryRowsCount + bottomSummaryRowsCount;\n const headerAndTopSummaryRowsCount = headerRowsCount + topSummaryRowsCount;\n const groupedColumnHeaderRowsCount = headerRowsCount - 1;\n const minRowIdx = -headerAndTopSummaryRowsCount;\n const mainHeaderRowIdx = minRowIdx + groupedColumnHeaderRowsCount;\n const maxRowIdx = rows.length + bottomSummaryRowsCount - 1;\n\n const [selectedPosition, setSelectedPosition] = useState(\n (): SelectCellState | EditCellState<R> => ({ idx: -1, rowIdx: minRowIdx - 1, mode: 'SELECT' })\n );\n\n /**\n * refs\n */\n const prevSelectedPosition = useRef(selectedPosition);\n const latestDraggedOverRowIdx = useRef(draggedOverRowIdx);\n const lastSelectedRowIdx = useRef(-1);\n const focusSinkRef = useRef<HTMLDivElement>(null);\n const shouldFocusCellRef = useRef(false);\n\n /**\n * computed values\n */\n const isTreeGrid = role === 'treegrid';\n const headerRowsHeight = headerRowsCount * headerRowHeight;\n const summaryRowsHeight = summaryRowsCount * summaryRowHeight;\n const clientHeight = gridHeight - headerRowsHeight - summaryRowsHeight;\n const isSelectable = selectedRows != null && onSelectedRowsChange != null;\n const isRtl = direction === 'rtl';\n const leftKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const rightKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const ariaRowCount = rawAriaRowCount ?? headerRowsCount + rows.length + summaryRowsCount;\n\n const defaultGridComponents = useMemo(\n () => ({\n renderCheckbox,\n renderSortStatus\n }),\n [renderCheckbox, renderSortStatus]\n );\n\n const headerSelectionValue = useMemo((): HeaderRowSelectionContextValue => {\n // no rows to select = explicitely unchecked\n let hasSelectedRow = false;\n let hasUnselectedRow = false;\n\n if (rowKeyGetter != null && selectedRows != null && selectedRows.size > 0) {\n for (const row of rows) {\n if (selectedRows.has(rowKeyGetter(row))) {\n hasSelectedRow = true;\n } else {\n hasUnselectedRow = true;\n }\n\n if (hasSelectedRow && hasUnselectedRow) break;\n }\n }\n\n return {\n isRowSelected: hasSelectedRow && !hasUnselectedRow,\n isIndeterminate: hasSelectedRow && hasUnselectedRow\n };\n }, [rows, selectedRows, rowKeyGetter]);\n\n const {\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n totalRowHeight,\n gridTemplateRows,\n getRowTop,\n getRowHeight,\n findRowIdx\n } = useViewportRows({\n rows,\n rowHeight,\n clientHeight,\n scrollTop,\n enableVirtualization\n });\n\n const viewportColumns = useViewportColumns({\n columns,\n colSpanColumns,\n colOverscanStartIdx,\n colOverscanEndIdx,\n lastFrozenColumnIndex,\n rowOverscanStartIdx,\n rowOverscanEndIdx,\n rows,\n topSummaryRows,\n bottomSummaryRows\n });\n\n const { gridTemplateColumns, handleColumnResize } = useColumnWidths(\n columns,\n viewportColumns,\n templateColumns,\n gridRef,\n gridWidth,\n resizedColumnWidths,\n measuredColumnWidths,\n setResizedColumnWidths,\n setMeasuredColumnWidths,\n onColumnResize\n );\n\n const minColIdx = isTreeGrid ? -1 : 0;\n const maxColIdx = columns.length - 1;\n const selectedCellIsWithinSelectionBounds = isCellWithinSelectionBounds(selectedPosition);\n const selectedCellIsWithinViewportBounds = isCellWithinViewportBounds(selectedPosition);\n const scrollHeight =\n headerRowHeight + totalRowHeight + summaryRowsHeight + horizontalScrollbarHeight;\n\n /**\n * The identity of the wrapper function is stable so it won't break memoization\n */\n const handleColumnResizeLatest = useLatestFunc(handleColumnResize);\n const onColumnsReorderLastest = useLatestFunc(onColumnsReorder);\n const onSortColumnsChangeLatest = useLatestFunc(onSortColumnsChange);\n const onCellClickLatest = useLatestFunc(onCellClick);\n const onCellDoubleClickLatest = useLatestFunc(onCellDoubleClick);\n const onCellContextMenuLatest = useLatestFunc(onCellContextMenu);\n const selectHeaderRowLatest = useLatestFunc(selectHeaderRow);\n const selectRowLatest = useLatestFunc(selectRow);\n const handleFormatterRowChangeLatest = useLatestFunc(updateRow);\n const selectCellLatest = useLatestFunc(selectCell);\n const selectHeaderCellLatest = useLatestFunc(({ idx, rowIdx }: Position) => {\n selectCell({ rowIdx: minRowIdx + rowIdx - 1, idx });\n });\n\n /**\n * effects\n */\n useLayoutEffect(() => {\n if (\n !selectedCellIsWithinSelectionBounds ||\n isSamePosition(selectedPosition, prevSelectedPosition.current)\n ) {\n prevSelectedPosition.current = selectedPosition;\n return;\n }\n\n prevSelectedPosition.current = selectedPosition;\n\n if (selectedPosition.idx === -1) {\n focusSinkRef.current!.focus({ preventScroll: true });\n scrollIntoView(focusSinkRef.current);\n }\n });\n\n useLayoutEffect(() => {\n if (!shouldFocusCellRef.current) return;\n shouldFocusCellRef.current = false;\n focusCellOrCellContent();\n });\n\n useImperativeHandle(ref, () => ({\n element: gridRef.current,\n scrollToCell({ idx, rowIdx }) {\n const scrollToIdx =\n idx !== undefined && idx > lastFrozenColumnIndex && idx < columns.length ? idx : undefined;\n const scrollToRowIdx =\n rowIdx !== undefined && isRowIdxWithinViewportBounds(rowIdx) ? rowIdx : undefined;\n\n if (scrollToIdx !== undefined || scrollToRowIdx !== undefined) {\n setScrollToPosition({ idx: scrollToIdx, rowIdx: scrollToRowIdx });\n }\n },\n selectCell\n }));\n\n /**\n * callbacks\n */\n const setDraggedOverRowIdx = useCallback((rowIdx?: number) => {\n setOverRowIdx(rowIdx);\n latestDraggedOverRowIdx.current = rowIdx;\n }, []);\n\n /**\n * event handlers\n */\n function selectHeaderRow(args: SelectHeaderRowEvent) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n\n const newSelectedRows = new Set(selectedRows);\n for (const row of rows) {\n if (isRowSelectionDisabled?.(row) === true) continue;\n const rowKey = rowKeyGetter(row);\n if (args.checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n }\n onSelectedRowsChange(newSelectedRows);\n }\n\n function selectRow(args: SelectRowEvent<R>) {\n if (!onSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const { row, checked, isShiftClick } = args;\n if (isRowSelectionDisabled?.(row) === true) return;\n const newSelectedRows = new Set(selectedRows);\n const rowKey = rowKeyGetter(row);\n const previousRowIdx = lastSelectedRowIdx.current;\n const rowIdx = rows.indexOf(row);\n lastSelectedRowIdx.current = rowIdx;\n\n if (checked) {\n newSelectedRows.add(rowKey);\n } else {\n newSelectedRows.delete(rowKey);\n }\n\n if (\n isShiftClick &&\n previousRowIdx !== -1 &&\n previousRowIdx !== rowIdx &&\n previousRowIdx < rows.length\n ) {\n const step = sign(rowIdx - previousRowIdx);\n for (let i = previousRowIdx + step; i !== rowIdx; i += step) {\n const row = rows[i];\n if (isRowSelectionDisabled?.(row) === true) continue;\n if (checked) {\n newSelectedRows.add(rowKeyGetter(row));\n } else {\n newSelectedRows.delete(rowKeyGetter(row));\n }\n }\n }\n\n onSelectedRowsChange(newSelectedRows);\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const { idx, rowIdx, mode } = selectedPosition;\n if (mode === 'EDIT') return;\n\n if (onCellKeyDown && isRowIdxWithinViewportBounds(rowIdx)) {\n const row = rows[rowIdx];\n const cellEvent = createCellEvent(event);\n onCellKeyDown(\n {\n mode: 'SELECT',\n row,\n column: columns[idx],\n rowIdx,\n selectCell\n },\n cellEvent\n );\n if (cellEvent.isGridDefaultPrevented()) return;\n }\n if (!(event.target instanceof Element)) return;\n const isCellEvent = event.target.closest('.rdg-cell') !== null;\n const isRowEvent = isTreeGrid && event.target === focusSinkRef.current;\n if (!isCellEvent && !isRowEvent) return;\n\n const { keyCode } = event;\n\n if (\n selectedCellIsWithinViewportBounds &&\n (onPaste != null || onCopy != null) &&\n isCtrlKeyHeldDown(event)\n ) {\n // event.key may differ by keyboard input language, so we use event.keyCode instead\n // event.nativeEvent.code cannot be used either as it would break copy/paste for the DVORAK layout\n const cKey = 67;\n const vKey = 86;\n if (keyCode === cKey) {\n // copy highlighted text only\n if (window.getSelection()?.isCollapsed === false) return;\n handleCopy();\n return;\n }\n if (keyCode === vKey) {\n handlePaste();\n return;\n }\n }\n\n switch (event.key) {\n case 'Escape':\n setCopiedCell(null);\n return;\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'Tab':\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n navigate(event);\n break;\n default:\n handleCellInput(event);\n break;\n }\n }\n\n function handleScroll(event: React.UIEvent<HTMLDivElement>) {\n const { scrollTop, scrollLeft } = event.currentTarget;\n flushSync(() => {\n setScrollTop(scrollTop);\n // scrollLeft is nagative when direction is rtl\n setScrollLeft(abs(scrollLeft));\n });\n onScroll?.(event);\n }\n\n function updateRow(column: CalculatedColumn<R, SR>, rowIdx: number, row: R) {\n if (typeof onRowsChange !== 'function') return;\n if (row === rows[rowIdx]) return;\n const updatedRows = [...rows];\n updatedRows[rowIdx] = row;\n onRowsChange(updatedRows, {\n indexes: [rowIdx],\n column\n });\n }\n\n function commitEditorChanges() {\n if (selectedPosition.mode !== 'EDIT') return;\n updateRow(columns[selectedPosition.idx], selectedPosition.rowIdx, selectedPosition.row);\n }\n\n function handleCopy() {\n const { idx, rowIdx } = selectedPosition;\n const sourceRow = rows[rowIdx];\n const sourceColumnKey = columns[idx].key;\n setCopiedCell({ row: sourceRow, columnKey: sourceColumnKey });\n onCopy?.({ sourceRow, sourceColumnKey });\n }\n\n function handlePaste() {\n if (!onPaste || !onRowsChange || copiedCell === null || !isCellEditable(selectedPosition)) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const targetColumn = columns[idx];\n const targetRow = rows[rowIdx];\n\n const updatedTargetRow = onPaste({\n sourceRow: copiedCell.row,\n sourceColumnKey: copiedCell.columnKey,\n targetRow,\n targetColumnKey: targetColumn.key\n });\n\n updateRow(targetColumn, rowIdx, updatedTargetRow);\n }\n\n function handleCellInput(event: KeyboardEvent<HTMLDivElement>) {\n if (!selectedCellIsWithinViewportBounds) return;\n const row = rows[selectedPosition.rowIdx];\n const { key, shiftKey } = event;\n\n // Select the row on Shift + Space\n if (isSelectable && shiftKey && key === ' ') {\n assertIsValidKeyGetter<R, K>(rowKeyGetter);\n const rowKey = rowKeyGetter(row);\n selectRow({ row, checked: !selectedRows.has(rowKey), isShiftClick: false });\n // do not scroll\n event.preventDefault();\n return;\n }\n\n if (isCellEditable(selectedPosition) && isDefaultCellInput(event)) {\n setSelectedPosition(({ idx, rowIdx }) => ({\n idx,\n rowIdx,\n mode: 'EDIT',\n row,\n originalRow: row\n }));\n }\n }\n\n /**\n * utils\n */\n function isColIdxWithinSelectionBounds(idx: number) {\n return idx >= minColIdx && idx <= maxColIdx;\n }\n\n function isRowIdxWithinViewportBounds(rowIdx: number) {\n return rowIdx >= 0 && rowIdx < rows.length;\n }\n\n function isCellWithinSelectionBounds({ idx, rowIdx }: Position): boolean {\n return rowIdx >= minRowIdx && rowIdx <= maxRowIdx && isColIdxWithinSelectionBounds(idx);\n }\n\n function isCellWithinEditBounds({ idx, rowIdx }: Position): boolean {\n return isRowIdxWithinViewportBounds(rowIdx) && idx >= 0 && idx <= maxColIdx;\n }\n\n function isCellWithinViewportBounds({ idx, rowIdx }: Position): boolean {\n return isRowIdxWithinViewportBounds(rowIdx) && isColIdxWithinSelectionBounds(idx);\n }\n\n function isCellEditable(position: Position): boolean {\n return (\n isCellWithinEditBounds(position) &&\n isSelectedCellEditable({ columns, rows, selectedPosition: position })\n );\n }\n\n function selectCell(position: Position, enableEditor?: Maybe<boolean>): void {\n if (!isCellWithinSelectionBounds(position)) return;\n commitEditorChanges();\n\n const row = rows[position.rowIdx];\n const samePosition = isSamePosition(selectedPosition, position);\n\n if (enableEditor && isCellEditable(position)) {\n setSelectedPosition({ ...position, mode: 'EDIT', row, originalRow: row });\n } else if (samePosition) {\n // Avoid re-renders if the selected cell state is the same\n scrollIntoView(getCellToScroll(gridRef.current!));\n } else {\n shouldFocusCellRef.current = true;\n setSelectedPosition({ ...position, mode: 'SELECT' });\n }\n\n if (onSelectedCellChange && !samePosition) {\n onSelectedCellChange({\n rowIdx: position.rowIdx,\n row,\n column: columns[position.idx]\n });\n }\n }\n\n function getNextPosition(key: string, ctrlKey: boolean, shiftKey: boolean): Position {\n const { idx, rowIdx } = selectedPosition;\n const isRowSelected = selectedCellIsWithinSelectionBounds && idx === -1;\n\n switch (key) {\n case 'ArrowUp':\n return { idx, rowIdx: rowIdx - 1 };\n case 'ArrowDown':\n return { idx, rowIdx: rowIdx + 1 };\n case leftKey:\n return { idx: idx - 1, rowIdx };\n case rightKey:\n return { idx: idx + 1, rowIdx };\n case 'Tab':\n return { idx: idx + (shiftKey ? -1 : 1), rowIdx };\n case 'Home':\n // If row is selected then move focus to the first row\n if (isRowSelected) return { idx, rowIdx: minRowIdx };\n return { idx: 0, rowIdx: ctrlKey ? minRowIdx : rowIdx };\n case 'End':\n // If row is selected then move focus to the last row.\n if (isRowSelected) return { idx, rowIdx: maxRowIdx };\n return { idx: maxColIdx, rowIdx: ctrlKey ? maxRowIdx : rowIdx };\n case 'PageUp': {\n if (selectedPosition.rowIdx === minRowIdx) return selectedPosition;\n const nextRowY = getRowTop(rowIdx) + getRowHeight(rowIdx) - clientHeight;\n return { idx, rowIdx: nextRowY > 0 ? findRowIdx(nextRowY) : 0 };\n }\n case 'PageDown': {\n if (selectedPosition.rowIdx >= rows.length) return selectedPosition;\n const nextRowY = getRowTop(rowIdx) + clientHeight;\n return { idx, rowIdx: nextRowY < totalRowHeight ? findRowIdx(nextRowY) : rows.length - 1 };\n }\n default:\n return selectedPosition;\n }\n }\n\n function navigate(event: KeyboardEvent<HTMLDivElement>) {\n const { key, shiftKey } = event;\n let cellNavigationMode: CellNavigationMode = 'NONE';\n if (key === 'Tab') {\n if (\n canExitGrid({\n shiftKey,\n maxColIdx,\n minRowIdx,\n maxRowIdx,\n selectedPosition\n })\n ) {\n commitEditorChanges();\n // Allow focus to leave the grid so the next control in the tab order can be focused\n return;\n }\n\n cellNavigationMode = 'CHANGE_ROW';\n }\n\n // Do not allow focus to leave and prevent scrolling\n event.preventDefault();\n\n const ctrlKey = isCtrlKeyHeldDown(event);\n const nextPosition = getNextPosition(key, ctrlKey, shiftKey);\n if (isSamePosition(selectedPosition, nextPosition)) return;\n\n const nextSelectedCellPosition = getNextSelectedCellPosition({\n moveUp: key === 'ArrowUp',\n moveNext: key === rightKey || (key === 'Tab' && !shiftKey),\n columns,\n colSpanColumns,\n rows,\n topSummaryRows,\n bottomSummaryRows,\n minRowIdx,\n mainHeaderRowIdx,\n maxRowIdx,\n lastFrozenColumnIndex,\n cellNavigationMode,\n currentPosition: selectedPosition,\n nextPosition,\n isCellWithinBounds: isCellWithinSelectionBounds\n });\n\n selectCell(nextSelectedCellPosition);\n }\n\n function getDraggedOverCellIdx(currentRowIdx: number): number | undefined {\n if (draggedOverRowIdx === undefined) return;\n const { rowIdx } = selectedPosition;\n\n const isDraggedOver =\n rowIdx < draggedOverRowIdx\n ? rowIdx < currentRowIdx && currentRowIdx <= draggedOverRowIdx\n : rowIdx > currentRowIdx && currentRowIdx >= draggedOverRowIdx;\n\n return isDraggedOver ? selectedPosition.idx : undefined;\n }\n\n function focusCellOrCellContent() {\n const cell = getCellToScroll(gridRef.current!);\n if (cell === null) return;\n\n scrollIntoView(cell);\n // Focus cell content when available instead of the cell itself\n const elementToFocus = cell.querySelector<Element & HTMLOrSVGElement>('[tabindex=\"0\"]') ?? cell;\n elementToFocus.focus({ preventScroll: true });\n }\n\n function renderDragHandle() {\n if (\n onFill == null ||\n selectedPosition.mode === 'EDIT' ||\n !isCellWithinViewportBounds(selectedPosition)\n ) {\n return;\n }\n\n const { idx, rowIdx } = selectedPosition;\n const column = columns[idx];\n if (column.renderEditCell == null || column.editable === false) {\n return;\n }\n\n const columnWidth = getColumnWidth(column);\n\n return (\n <DragHandle\n gridRowStart={headerAndTopSummaryRowsCount + rowIdx + 1}\n rows={rows}\n column={column}\n columnWidth={columnWidth}\n maxColIdx={maxColIdx}\n isLastRow={rowIdx === maxRowIdx}\n selectedPosition={selectedPosition}\n isCellEditable={isCellEditable}\n latestDraggedOverRowIdx={latestDraggedOverRowIdx}\n onRowsChange={onRowsChange}\n onClick={focusCellOrCellContent}\n onFill={onFill}\n setDragging={setDragging}\n setDraggedOverRowIdx={setDraggedOverRowIdx}\n />\n );\n }\n\n function getCellEditor(rowIdx: number) {\n if (selectedPosition.rowIdx !== rowIdx || selectedPosition.mode === 'SELECT') return;\n\n const { idx, row } = selectedPosition;\n const column = columns[idx];\n const colSpan = getColSpan(column, lastFrozenColumnIndex, { type: 'ROW', row });\n\n const closeEditor = (shouldFocusCell: boolean) => {\n shouldFocusCellRef.current = shouldFocusCell;\n setSelectedPosition(({ idx, rowIdx }) => ({ idx, rowIdx, mode: 'SELECT' }));\n };\n\n const onRowChange = (row: R, commitChanges: boolean, shouldFocusCell: boolean) => {\n if (commitChanges) {\n // Prevents two issues when editor is closed by clicking on a different cell\n //\n // Otherwise commitEditorChanges may be called before the cell state is changed to\n // SELECT and this results in onRowChange getting called twice.\n flushSync(() => {\n updateRow(column, selectedPosition.rowIdx, row);\n closeEditor(shouldFocusCell);\n });\n } else {\n setSelectedPosition((position) => ({ ...position, row }));\n }\n };\n\n if (rows[selectedPosition.rowIdx] !== selectedPosition.originalRow) {\n // Discard changes if rows are updated from outside\n closeEditor(false);\n }\n\n return (\n <EditCell\n key={column.key}\n column={column}\n colSpan={colSpan}\n row={row}\n rowIdx={rowIdx}\n onRowChange={onRowChange}\n closeEditor={closeEditor}\n onKeyDown={onCellKeyDown}\n navigate={navigate}\n />\n );\n }\n\n function getRowViewportColumns(rowIdx: number) {\n // idx can be -1 if grouping is enabled\n const selectedColumn = selectedPosition.idx === -1 ? undefined : columns[selectedPosition.idx];\n if (\n selectedColumn !== undefined &&\n selectedPosition.rowIdx === rowIdx &&\n !viewportColumns.includes(selectedColumn)\n ) {\n // Add the selected column to viewport columns if the cell is not within the viewport\n return selectedPosition.idx > colOverscanEndIdx\n ? [...viewportColumns, selectedColumn]\n : [\n ...viewportColumns.slice(0, lastFrozenColumnIndex + 1),\n selectedColumn,\n ...viewportColumns.slice(lastFrozenColumnIndex + 1)\n ];\n }\n return viewportColumns;\n }\n\n function getViewportRows() {\n const rowElements: React.ReactNode[] = [];\n\n const { idx: selectedIdx, rowIdx: selectedRowIdx } = selectedPosition;\n\n const startRowIdx =\n selectedCellIsWithinViewportBounds && selectedRowIdx < rowOverscanStartIdx\n ? rowOverscanStartIdx - 1\n : rowOverscanStartIdx;\n const endRowIdx =\n selectedCellIsWithinViewportBounds && selectedRowIdx > rowOverscanEndIdx\n ? rowOverscanEndIdx + 1\n : rowOverscanEndIdx;\n\n for (let viewportRowIdx = startRowIdx; viewportRowIdx <= endRowIdx; viewportRowIdx++) {\n const isRowOutsideViewport =\n viewportRowIdx === rowOverscanStartIdx - 1 || viewportRowIdx === rowOverscanEndIdx + 1;\n const rowIdx = isRowOutsideViewport ? selectedRowIdx : viewportRowIdx;\n\n let rowColumns = viewportColumns;\n const selectedColumn = selectedIdx === -1 ? undefined : columns[selectedIdx];\n if (selectedColumn !== undefined) {\n if (isRowOutsideViewport) {\n // if the row is outside the viewport then only render the selected cell\n rowColumns = [selectedColumn];\n } else {\n // if the row is within the viewport and cell is not, add the selected column to viewport columns\n rowColumns = getRowViewportColumns(rowIdx);\n }\n }\n\n const row = rows[rowIdx];\n const gridRowStart = headerAndTopSummaryRowsCount + rowIdx + 1;\n let key: K | number = rowIdx;\n let isRowSelected = false;\n if (typeof rowKeyGetter === 'function') {\n key = rowKeyGetter(row);\n isRowSelected = selectedRows?.has(key) ?? false;\n }\n\n rowElements.push(\n renderRow(key, {\n // aria-rowindex is 1 based\n 'aria-rowindex': headerAndTopSummaryRowsCount + rowIdx + 1,\n 'aria-selected': isSelectable ? isRowSelected : undefined,\n rowIdx,\n row,\n viewportColumns: rowColumns,\n isRowSelectionDisabled: isRowSelectionDisabled?.(row) ?? false,\n isRowSelected,\n onCellClick: onCellClickLatest,\n onCellDoubleClick: onCellDoubleClickLatest,\n onCellContextMenu: onCellContextMenuLatest,\n rowClass,\n gridRowStart,\n copiedCellIdx:\n copiedCell !== null && copiedCell.row === row\n ? columns.findIndex((c) => c.key === copiedCell.columnKey)\n : undefined,\n\n selectedCellIdx: selectedRowIdx === rowIdx ? selectedIdx : undefined,\n draggedOverCellIdx: getDraggedOverCellIdx(rowIdx),\n setDraggedOverRowIdx: isDragging ? setDraggedOverRowIdx : undefined,\n lastFrozenColumnIndex,\n onRowChange: handleFormatterRowChangeLatest,\n selectCell: selectCellLatest,\n selectedCellEditor: getCellEditor(rowIdx)\n })\n );\n }\n\n return rowElements;\n }\n\n // Reset the positions if the current values are no longer valid. This can happen if a column or row is removed\n if (selectedPosition.idx > maxColIdx || selectedPosition.rowIdx > maxRowIdx) {\n setSelectedPosition({ idx: -1, rowIdx: minRowIdx - 1, mode: 'SELECT' });\n setDraggedOverRowIdx(undefined);\n }\n\n let templateRows = `repeat(${headerRowsCount}, ${headerRowHeight}px)`;\n if (topSummaryRowsCount > 0) {\n templateRows += ` repeat(${topSummaryRowsCount}, ${summaryRowHeight}px)`;\n }\n if (rows.length > 0) {\n templateRows += gridTemplateRows;\n }\n if (bottomSummaryRowsCount > 0) {\n templateRows += ` repeat(${bottomSummaryRowsCount}, ${summaryRowHeight}px)`;\n }\n\n const isGroupRowFocused =\n selectedPosition.idx === -1 && selectedPosition.rowIdx !== minRowIdx - 1;\n\n return (\n <div\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-multiselectable={isSelectable ? true : undefined}\n aria-colcount={columns.length}\n aria-rowcount={ariaRowCount}\n className={clsx(\n rootClassname,\n {\n [viewportDraggingClassname]: isDragging\n },\n className\n )}\n style={\n {\n ...style,\n // set scrollPadding to correctly position non-sticky cells after scrolling\n scrollPaddingInlineStart:\n selectedPosition.idx > lastFrozenColumnIndex || scrollToPosition?.idx !== undefined\n ? `${totalFrozenColumnWidth}px`\n : undefined,\n scrollPaddingBlock:\n isRowIdxWithinViewportBounds(selectedPosition.rowIdx) ||\n scrollToPosition?.rowIdx !== undefined\n ? `${headerRowsHeight + topSummaryRowsCount * summaryRowHeight}px ${\n bottomSummaryRowsCount * summaryRowHeight\n }px`\n : undefined,\n gridTemplateColumns,\n gridTemplateRows: templateRows,\n '--rdg-header-row-height': `${headerRowHeight}px`,\n '--rdg-scroll-height': `${scrollHeight}px`,\n ...layoutCssVars\n } as unknown as React.CSSProperties\n }\n dir={direction}\n ref={gridRef}\n onScroll={handleScroll}\n onKeyDown={handleKeyDown}\n data-testid={testId}\n >\n <DataGridDefaultRenderersProvider value={defaultGridComponents}>\n <HeaderRowSelectionChangeProvider value={selectHeaderRowLatest}>\n <HeaderRowSelectionProvider value={headerSelectionValue}>\n {Array.from({ length: groupedColumnHeaderRowsCount }, (_, index) => (\n <GroupedColumnHeaderRow\n key={index}\n rowIdx={index + 1}\n level={-groupedColumnHeaderRowsCount + index}\n columns={getRowViewportColumns(minRowIdx + index)}\n selectedCellIdx={\n selectedPosition.rowIdx === minRowIdx + index ? selectedPosition.idx : undefined\n }\n selectCell={selectHeaderCellLatest}\n />\n ))}\n <HeaderRow\n rowIdx={headerRowsCount}\n columns={getRowViewportColumns(mainHeaderRowIdx)}\n onColumnResize={handleColumnResizeLatest}\n onColumnsReorder={onColumnsReorderLastest}\n sortColumns={sortColumns}\n onSortColumnsChange={onSortColumnsChangeLatest}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={\n selectedPosition.rowIdx === mainHeaderRowIdx ? selectedPosition.idx : undefined\n }\n selectCell={selectHeaderCellLatest}\n shouldFocusGrid={!selectedCellIsWithinSelectionBounds}\n direction={direction}\n />\n </HeaderRowSelectionProvider>\n </HeaderRowSelectionChangeProvider>\n {rows.length === 0 && noRowsFallback ? (\n noRowsFallback\n ) : (\n <>\n {topSummaryRows?.map((row, rowIdx) => {\n const gridRowStart = headerRowsCount + 1 + rowIdx;\n const summaryRowIdx = mainHeaderRowIdx + 1 + rowIdx;\n const isSummaryRowSelected = selectedPosition.rowIdx === summaryRowIdx;\n const top = headerRowsHeight + summaryRowHeight * rowIdx;\n\n return (\n <SummaryRow\n key={rowIdx}\n aria-rowindex={gridRowStart}\n rowIdx={summaryRowIdx}\n gridRowStart={gridRowStart}\n row={row}\n top={top}\n bottom={undefined}\n viewportColumns={getRowViewportColumns(summaryRowIdx)}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n isTop\n selectCell={selectCellLatest}\n />\n );\n })}\n <RowSelectionChangeProvider value={selectRowLatest}>\n {getViewportRows()}\n </RowSelectionChangeProvider>\n {bottomSummaryRows?.map((row, rowIdx) => {\n const gridRowStart = headerAndTopSummaryRowsCount + rows.length + rowIdx + 1;\n const summaryRowIdx = rows.length + rowIdx;\n const isSummaryRowSelected = selectedPosition.rowIdx === summaryRowIdx;\n const top =\n clientHeight > totalRowHeight\n ? gridHeight - summaryRowHeight * (bottomSummaryRows.length - rowIdx)\n : undefined;\n const bottom =\n top === undefined\n ? summaryRowHeight * (bottomSummaryRows.length - 1 - rowIdx)\n : undefined;\n\n return (\n <SummaryRow\n aria-rowindex={ariaRowCount - bottomSummaryRowsCount + rowIdx + 1}\n key={rowIdx}\n rowIdx={summaryRowIdx}\n gridRowStart={gridRowStart}\n row={row}\n top={top}\n bottom={bottom}\n viewportColumns={getRowViewportColumns(summaryRowIdx)}\n lastFrozenColumnIndex={lastFrozenColumnIndex}\n selectedCellIdx={isSummaryRowSelected ? selectedPosition.idx : undefined}\n isTop={false}\n selectCell={selectCellLatest}\n />\n );\n })}\n </>\n )}\n </DataGridDefaultRenderersProvider>\n\n {renderDragHandle()}\n\n {/* render empty cells that span only 1 column so we can safely measure column widths, regardless of colSpan */}\n {renderMeasuringCells(viewportColumns)}\n\n {/* extra div is needed for row navigation in a treegrid */}\n {isTreeGrid && (\n <div\n ref={focusSinkRef}\n tabIndex={isGroupRowFocused ? 0 : -1}\n className={clsx(focusSinkClassname, {\n [focusSinkHeaderAndSummaryClassname]: !isRowIdxWithinViewportBounds(\n selectedPosition.rowIdx\n ),\n [rowSelected]: isGroupRowFocused,\n [rowSelectedWithFrozenCell]: isGroupRowFocused && lastFrozenColumnIndex !== -1\n })}\n style={{\n gridRowStart: selectedPosition.rowIdx + headerAndTopSummaryRowsCount + 1\n }}\n />\n )}\n\n {scrollToPosition !== null && (\n <ScrollToCell\n scrollToPosition={scrollToPosition}\n setScrollToCellPosition={setScrollToPosition}\n gridElement={gridRef.current!}\n />\n )}\n </div>\n );\n}\n\nfunction getCellToScroll(gridEl: HTMLDivElement) {\n return gridEl.querySelector<HTMLDivElement>(':scope > [role=\"row\"] > [tabindex=\"0\"]');\n}\n\nfunction isSamePosition(p1: Position, p2: Position) {\n return p1.idx === p2.idx && p1.rowIdx === p2.rowIdx;\n}\n\nexport default forwardRef(DataGrid) as <R, SR = unknown, K extends Key = Key>(\n props: DataGridProps<R, SR, K> & RefAttributes<DataGridHandle>\n) => React.JSX.Element;\n", "import { memo } from 'react';\n\nimport { useRovingTabIndex } from './hooks';\nimport { getCellClassname, getCellStyle } from './utils';\nimport type { CalculatedColumn, GroupRow } from './types';\n\ninterface GroupCellProps<R, SR> {\n id: string;\n groupKey: unknown;\n childRows: readonly R[];\n toggleGroup: (expandedGroupId: unknown) => void;\n isExpanded: boolean;\n column: CalculatedColumn<R, SR>;\n row: GroupRow<R>;\n isCellSelected: boolean;\n groupColumnIndex: number;\n isGroupByColumn: boolean;\n}\n\nfunction GroupCell<R, SR>({\n id,\n groupKey,\n childRows,\n isExpanded,\n isCellSelected,\n column,\n row,\n groupColumnIndex,\n isGroupByColumn,\n toggleGroup: toggleGroupWrapper\n}: GroupCellProps<R, SR>) {\n const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);\n\n function toggleGroup() {\n toggleGroupWrapper(id);\n }\n\n // Only make the cell clickable if the group level matches\n const isLevelMatching = isGroupByColumn && groupColumnIndex === column.idx;\n\n return (\n <div\n role=\"gridcell\"\n aria-colindex={column.idx + 1}\n aria-selected={isCellSelected}\n tabIndex={tabIndex}\n key={column.key}\n className={getCellClassname(column)}\n style={{\n ...getCellStyle(column),\n cursor: isLevelMatching ? 'pointer' : 'default'\n }}\n onClick={isLevelMatching ? toggleGroup : undefined}\n onFocus={onFocus}\n >\n {(!isGroupByColumn || isLevelMatching) &&\n column.renderGroupCell?.({\n groupKey,\n childRows,\n column,\n row,\n isExpanded,\n tabIndex: childTabIndex,\n toggleGroup\n })}\n </div>\n );\n}\n\nexport default memo(GroupCell) as <R, SR>(props: GroupCellProps<R, SR>) => React.JSX.Element;\n", "import { memo, useMemo } from 'react';\nimport { css } from '@linaria/core';\nimport clsx from 'clsx';\n\nimport { RowSelectionProvider, type RowSelectionContextValue } from './hooks';\nimport { getRowStyle } from './utils';\nimport type { BaseRenderRowProps, GroupRow } from './types';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport GroupCell from './GroupCell';\nimport { cell, cellFrozen } from './style/cell';\nimport { rowClassname, rowSelectedClassname } from './style/row';\n\nconst groupRow = css`\n @layer rdg.GroupedRow {\n &:not([aria-selected='true']) {\n background-color: var(--rdg-header-background-color);\n }\n\n > .${cell}:not(:last-child, .${cellFrozen}),\n > :nth-last-child(n + 2 of .${cellFrozen}) {\n border-inline-end: none;\n }\n }\n`;\n\nconst groupRowClassname = `rdg-group-row ${groupRow}`;\n\ninterface GroupRowRendererProps<R, SR> extends BaseRenderRowProps<R, SR> {\n row: GroupRow<R>;\n groupBy: readonly string[];\n toggleGroup: (expandedGroupId: unknown) => void;\n}\n\nfunction GroupedRow<R, SR>({\n className,\n row,\n rowIdx,\n viewportColumns,\n selectedCellIdx,\n isRowSelected,\n selectCell,\n gridRowStart,\n groupBy,\n toggleGroup,\n isRowSelectionDisabled,\n ...props\n}: GroupRowRendererProps<R, SR>) {\n // Select is always the first column\n const idx = viewportColumns[0].key === SELECT_COLUMN_KEY ? row.level + 1 : row.level;\n\n function handleSelectGroup() {\n selectCell({ rowIdx, idx: -1 });\n }\n\n const selectionValue = useMemo(\n (): RowSelectionContextValue => ({ isRowSelectionDisabled: false, isRowSelected }),\n [isRowSelected]\n );\n\n return (\n <RowSelectionProvider value={selectionValue}>\n <div\n role=\"row\"\n aria-level={row.level + 1} // aria-level is 1-based\n aria-setsize={row.setSize}\n aria-posinset={row.posInSet + 1} // aria-posinset is 1-based\n aria-expanded={row.isExpanded}\n className={clsx(\n rowClassname,\n groupRowClassname,\n `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`,\n selectedCellIdx === -1 && rowSelectedClassname,\n className\n )}\n onClick={handleSelectGroup}\n style={getRowStyle(gridRowStart)}\n {...props}\n >\n {viewportColumns.map((column) => (\n <GroupCell\n key={column.key}\n id={row.id}\n groupKey={row.groupKey}\n childRows={row.childRows}\n isExpanded={row.isExpanded}\n isCellSelected={selectedCellIdx === column.idx}\n column={column}\n row={row}\n groupColumnIndex={idx}\n toggleGroup={toggleGroup}\n isGroupByColumn={groupBy.includes(column.key)}\n />\n ))}\n </div>\n </RowSelectionProvider>\n );\n}\n\nexport default memo(GroupedRow) as <R, SR>(\n props: GroupRowRendererProps<R, SR>\n) => React.JSX.Element;\n", "import { forwardRef, useCallback, useMemo } from 'react';\nimport type { Key, RefAttributes } from 'react';\n\nimport { useLatestFunc } from './hooks';\nimport { assertIsValidKeyGetter, isCtrlKeyHeldDown } from './utils';\nimport type {\n CellKeyboardEvent,\n CellKeyDownArgs,\n Column,\n GroupRow,\n Maybe,\n Omit,\n RenderRowProps,\n RowHeightArgs,\n RowsChangeData\n} from './types';\nimport { renderToggleGroup } from './cellRenderers';\nimport { SELECT_COLUMN_KEY } from './Columns';\nimport DataGrid from './DataGrid';\nimport type { DataGridHandle, DataGridProps } from './DataGrid';\nimport { useDefaultRenderers } from './DataGridDefaultRenderersProvider';\nimport GroupedRow from './GroupRow';\nimport { defaultRenderRow } from './Row';\n\nexport interface TreeDataGridProps<R, SR = unknown, K extends Key = Key>\n extends Omit<\n DataGridProps<R, SR, K>,\n 'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled'\n > {\n columns: readonly Column<NoInfer<R>, NoInfer<SR>>[];\n rowHeight?: Maybe<number | ((args: RowHeightArgs<NoInfer<R>>) => number)>;\n groupBy: readonly string[];\n rowGrouper: (\n rows: readonly NoInfer<R>[],\n columnKey: string\n ) => Record<string, readonly NoInfer<R>[]>;\n expandedGroupIds: ReadonlySet<unknown>;\n onExpandedGroupIdsChange: (expandedGroupIds: Set<unknown>) => void;\n}\n\ntype GroupByDictionary<TRow> = Record<\n string,\n {\n readonly childRows: readonly TRow[];\n readonly childGroups: readonly TRow[] | Readonly<GroupByDictionary<TRow>>;\n readonly startRowIndex: number;\n }\n>;\n\nfunction TreeDataGrid<R, SR, K extends Key>(\n {\n columns: rawColumns,\n rows: rawRows,\n rowHeight: rawRowHeight,\n rowKeyGetter: rawRowKeyGetter,\n onCellKeyDown: rawOnCellKeyDown,\n onRowsChange,\n selectedRows: rawSelectedRows,\n onSelectedRowsChange: rawOnSelectedRowsChange,\n renderers,\n groupBy: rawGroupBy,\n rowGrouper,\n expandedGroupIds,\n onExpandedGroupIdsChange,\n ...props\n }: TreeDataGridProps<R, SR, K>,\n ref: React.Ref<DataGridHandle>\n) {\n const defaultRenderers = useDefaultRenderers<R, SR>();\n const rawRenderRow = renderers?.renderRow ?? defaultRenderers?.renderRow ?? defaultRenderRow;\n const headerAndTopSummaryRowsCount = 1 + (props.topSummaryRows?.length ?? 0);\n const isRtl = props.direction === 'rtl';\n const leftKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const rightKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const toggleGroupLatest = useLatestFunc(toggleGroup);\n\n const { columns, groupBy } = useMemo(() => {\n const columns = [...rawColumns].sort(({ key: aKey }, { key: bKey }) => {\n // Sort select column first:\n if (aKey === SELECT_COLUMN_KEY) return -1;\n if (bKey === SELECT_COLUMN_KEY) return 1;\n\n // Sort grouped columns second, following the groupBy order:\n if (rawGroupBy.includes(aKey)) {\n if (rawGroupBy.includes(bKey)) {\n return rawGroupBy.indexOf(aKey) - rawGroupBy.indexOf(bKey);\n }\n return -1;\n }\n if (rawGroupBy.includes(bKey)) return 1;\n\n // Sort other columns last:\n return 0;\n });\n\n const groupBy: string[] = [];\n for (const [index, column] of columns.entries()) {\n if (rawGroupBy.includes(column.key)) {\n groupBy.push(column.key);\n columns[index] = {\n ...column,\n frozen: true,\n renderCell: () => null,\n renderGroupCell: column.renderGroupCell ?? renderToggleGroup,\n editable: false\n };\n }\n }\n\n return { columns, groupBy };\n }, [rawColumns, rawGroupBy]);\n\n const [groupedRows, rowsCount] = useMemo(() => {\n if (groupBy.length === 0) return [undefined, rawRows.length];\n\n const groupRows = (\n rows: readonly R[],\n [groupByKey, ...remainingGroupByKeys]: readonly string[],\n startRowIndex: number\n ): [Readonly<GroupByDictionary<R>>, number] => {\n let groupRowsCount = 0;\n const groups: GroupByDictionary<R> = {};\n for (const [key, childRows] of Object.entries(rowGrouper(rows, groupByKey))) {\n // Recursively group each parent group\n const [childGroups, childRowsCount] =\n remainingGroupByKeys.length === 0\n ? [childRows, childRows.length]\n : groupRows(childRows, remainingGroupByKeys, startRowIndex + groupRowsCount + 1); // 1 for parent row\n groups[key] = { childRows, childGroups, startRowIndex: startRowIndex + groupRowsCount };\n groupRowsCount += childRowsCount + 1; // 1 for parent row\n }\n\n return [groups, groupRowsCount];\n };\n\n return groupRows(rawRows, groupBy, 0);\n }, [groupBy, rowGrouper, rawRows]);\n\n const [rows, isGroupRow] = useMemo((): [\n ReadonlyArray<R | GroupRow<R>>,\n (row: R | GroupRow<R>) => row is GroupRow<R>\n ] => {\n const allGroupRows = new Set<unknown>();\n if (!groupedRows) return [rawRows, isGroupRow];\n\n const flattenedRows: Array<R | GroupRow<R>> = [];\n const expandGroup = (\n rows: GroupByDictionary<R> | readonly R[],\n parentId: string | undefined,\n level: number\n ): void => {\n if (isReadonlyArray(rows)) {\n flattenedRows.push(...rows);\n return;\n }\n Object.keys(rows).forEach((groupKey, posInSet, keys) => {\n // TODO: should users have control over the generated key?\n const id = parentId !== undefined ? `${parentId}__${groupKey}` : groupKey;\n const isExpanded = expandedGroupIds.has(id);\n const { childRows, childGroups, startRowIndex } = rows[groupKey];\n\n const groupRow: GroupRow<R> = {\n id,\n parentId,\n groupKey,\n isExpanded,\n childRows,\n level,\n posInSet,\n startRowIndex,\n setSize: keys.length\n };\n flattenedRows.push(groupRow);\n allGroupRows.add(groupRow);\n\n if (isExpanded) {\n expandGroup(childGroups, id, level + 1);\n }\n });\n };\n\n expandGroup(groupedRows, undefined, 0);\n return [flattenedRows, isGroupRow];\n\n function isGroupRow(row: R | GroupRow<R>): row is GroupRow<R> {\n return allGroupRows.has(row);\n }\n }, [expandedGroupIds, groupedRows, rawRows]);\n\n const rowHeight = useMemo(() => {\n if (typeof rawRowHeight === 'function') {\n return (row: R | GroupRow<R>): number => {\n if (isGroupRow(row)) {\n return rawRowHeight({ type: 'GROUP', row });\n }\n return rawRowHeight({ type: 'ROW', row });\n };\n }\n\n return rawRowHeight;\n }, [isGroupRow, rawRowHeight]);\n\n const getParentRowAndIndex = useCallback(\n (row: R | GroupRow<R>) => {\n const rowIdx = rows.indexOf(row);\n for (let i = rowIdx - 1; i >= 0; i--) {\n const parentRow = rows[i];\n if (isGroupRow(parentRow) && (!isGroupRow(row) || row.parentId === parentRow.id)) {\n return [parentRow, i] as const;\n }\n }\n\n return undefined;\n },\n [isGroupRow, rows]\n );\n\n const rowKeyGetter = useCallback(\n (row: R | GroupRow<R>) => {\n if (isGroupRow(row)) {\n return row.id;\n }\n\n if (typeof rawRowKeyGetter === 'function') {\n return rawRowKeyGetter(row);\n }\n\n const parentRowAndIndex = getParentRowAndIndex(row);\n if (parentRowAndIndex !== undefined) {\n const { startRowIndex, childRows } = parentRowAndIndex[0];\n const groupIndex = childRows.indexOf(row);\n return startRowIndex + groupIndex + 1;\n }\n\n return rows.indexOf(row);\n },\n [getParentRowAndIndex, isGroupRow, rawRowKeyGetter, rows]\n );\n\n const selectedRows = useMemo((): Maybe<ReadonlySet<Key>> => {\n if (rawSelectedRows == null) return null;\n\n assertIsValidKeyGetter<R, K>(rawRowKeyGetter);\n\n const selectedRows = new Set<Key>(rawSelectedRows);\n for (const row of rows) {\n if (isGroupRow(row)) {\n // select parent row if all the children are selected\n const isGroupRowSelected = row.childRows.every((cr) =>\n rawSelectedRows.has(rawRowKeyGetter(cr))\n );\n if (isGroupRowSelected) {\n selectedRows.add(row.id);\n }\n }\n }\n\n return selectedRows;\n }, [isGroupRow, rawRowKeyGetter, rawSelectedRows, rows]);\n\n function onSelectedRowsChange(newSelectedRows: Set<Key>) {\n if (!rawOnSelectedRowsChange) return;\n\n assertIsValidKeyGetter<R, K>(rawRowKeyGetter);\n\n const newRawSelectedRows = new Set(rawSelectedRows);\n for (const row of rows) {\n const key = rowKeyGetter(row);\n if (selectedRows?.has(key) && !newSelectedRows.has(key)) {\n if (isGroupRow(row)) {\n // select all children if the parent row is selected\n for (const cr of row.childRows) {\n newRawSelectedRows.delete(rawRowKeyGetter(cr));\n }\n } else {\n newRawSelectedRows.delete(key as K);\n }\n } else if (!selectedRows?.has(key) && newSelectedRows.has(key)) {\n if (isGroupRow(row)) {\n // unselect all children if the parent row is unselected\n for (const cr of row.childRows) {\n newRawSelectedRows.add(rawRowKeyGetter(cr));\n }\n } else {\n newRawSelectedRows.add(key as K);\n }\n }\n }\n\n rawOnSelectedRowsChange(newRawSelectedRows);\n }\n\n function handleKeyDown(args: CellKeyDownArgs<R, SR>, event: CellKeyboardEvent) {\n rawOnCellKeyDown?.(args, event);\n if (event.isGridDefaultPrevented()) return;\n\n if (args.mode === 'EDIT') return;\n const { column, rowIdx, selectCell } = args;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const idx = column?.idx ?? -1;\n const row = rows[rowIdx];\n\n if (!isGroupRow(row)) return;\n if (\n idx === -1 &&\n // Collapse the current group row if it is focused and is in expanded state\n ((event.key === leftKey && row.isExpanded) ||\n // Expand the current group row if it is focused and is in collapsed state\n (event.key === rightKey && !row.isExpanded))\n ) {\n event.preventDefault(); // Prevents scrolling\n event.preventGridDefault();\n toggleGroup(row.id);\n }\n\n // If a group row is focused, and it is collapsed, move to the parent group row (if there is one).\n if (idx === -1 && event.key === leftKey && !row.isExpanded && row.level !== 0) {\n const parentRowAndIndex = getParentRowAndIndex(row);\n if (parentRowAndIndex !== undefined) {\n event.preventGridDefault();\n selectCell({ idx, rowIdx: parentRowAndIndex[1] });\n }\n }\n\n // Prevent copy/paste on group rows\n if (isCtrlKeyHeldDown(event) && (event.keyCode === 67 || event.keyCode === 86)) {\n event.preventGridDefault();\n }\n }\n\n function handleRowsChange(updatedRows: R[], { indexes, column }: RowsChangeData<R, SR>) {\n if (!onRowsChange) return;\n const updatedRawRows = [...rawRows];\n const rawIndexes: number[] = [];\n for (const index of indexes) {\n const rawIndex = rawRows.indexOf(rows[index] as R);\n updatedRawRows[rawIndex] = updatedRows[index];\n rawIndexes.push(rawIndex);\n }\n onRowsChange(updatedRawRows, {\n indexes: rawIndexes,\n column\n });\n }\n\n function toggleGroup(groupId: unknown) {\n const newExpandedGroupIds = new Set(expandedGroupIds);\n if (newExpandedGroupIds.has(groupId)) {\n newExpandedGroupIds.delete(groupId);\n } else {\n newExpandedGroupIds.add(groupId);\n }\n onExpandedGroupIdsChange(newExpandedGroupIds);\n }\n\n function renderRow(\n key: Key,\n {\n row,\n rowClass,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onRowChange,\n lastFrozenColumnIndex,\n copiedCellIdx,\n draggedOverCellIdx,\n setDraggedOverRowIdx,\n selectedCellEditor,\n ...rowProps\n }: RenderRowProps<R, SR>\n ) {\n if (isGroupRow(row)) {\n const { startRowIndex } = row;\n return (\n <GroupedRow\n key={key}\n {...rowProps}\n aria-rowindex={headerAndTopSummaryRowsCount + startRowIndex + 1}\n row={row}\n groupBy={groupBy}\n toggleGroup={toggleGroupLatest}\n />\n );\n }\n\n let ariaRowIndex = rowProps['aria-rowindex'];\n const parentRowAndIndex = getParentRowAndIndex(row);\n if (parentRowAndIndex !== undefined) {\n const { startRowIndex, childRows } = parentRowAndIndex[0];\n const groupIndex = childRows.indexOf(row);\n ariaRowIndex = startRowIndex + headerAndTopSummaryRowsCount + groupIndex + 2;\n }\n\n return rawRenderRow(key, {\n ...rowProps,\n 'aria-rowindex': ariaRowIndex,\n row,\n rowClass,\n onCellClick,\n onCellDoubleClick,\n onCellContextMenu,\n onRowChange,\n lastFrozenColumnIndex,\n copiedCellIdx,\n draggedOverCellIdx,\n setDraggedOverRowIdx,\n selectedCellEditor\n });\n }\n\n return (\n <DataGrid<R, SR, Key>\n {...props}\n role=\"treegrid\"\n aria-rowcount={\n rowsCount + 1 + (props.topSummaryRows?.length ?? 0) + (props.bottomSummaryRows?.length ?? 0)\n }\n ref={ref}\n columns={columns}\n rows={rows as R[]} // TODO: check types\n rowHeight={rowHeight}\n rowKeyGetter={rowKeyGetter}\n onRowsChange={handleRowsChange}\n selectedRows={selectedRows}\n onSelectedRowsChange={onSelectedRowsChange}\n onCellKeyDown={handleKeyDown}\n renderers={{\n ...renderers,\n renderRow\n }}\n />\n );\n}\n\nfunction isReadonlyArray(arr: unknown): arr is readonly unknown[] {\n return Array.isArray(arr);\n}\n\nexport default forwardRef(TreeDataGrid) as <R, SR = unknown, K extends Key = Key>(\n props: TreeDataGridProps<R, SR, K> & RefAttributes<DataGridHandle>\n) => React.JSX.Element;\n", "import { css } from '@linaria/core';\n\nimport type { RenderEditCellProps } from '../types';\n\nconst textEditorInternalClassname = css`\n @layer rdg.TextEditor {\n appearance: none;\n\n box-sizing: border-box;\n inline-size: 100%;\n block-size: 100%;\n padding-block: 0;\n padding-inline: 6px;\n border: 2px solid #ccc;\n vertical-align: top;\n color: var(--rdg-color);\n background-color: var(--rdg-background-color);\n\n font-family: inherit;\n font-size: var(--rdg-font-size);\n\n &:focus {\n border-color: var(--rdg-selection-color);\n outline: none;\n }\n\n &::placeholder {\n color: #999;\n opacity: 1;\n }\n }\n`;\n\nexport const textEditorClassname = `rdg-text-editor ${textEditorInternalClassname}`;\n\nfunction autoFocusAndSelect(input: HTMLInputElement | null) {\n input?.focus();\n input?.select();\n}\n\nexport default function textEditor<TRow, TSummaryRow>({\n row,\n column,\n onRowChange,\n onClose\n}: RenderEditCellProps<TRow, TSummaryRow>) {\n return (\n <input\n className={textEditorClassname}\n ref={autoFocusAndSelect}\n value={row[column.key as keyof TRow] as unknown as string}\n onChange={(event) => onRowChange({ ...row, [column.key]: event.target.value })}\n onBlur={() => onClose(true, false)}\n />\n );\n}\n", "\uFEFFimport * as React from \"react\";\nimport DataGrid, { Column, SelectColumn, SortColumn } from \"react-data-grid\";\nimport { format, timeFormat, timeParse } from \"@hpcc-js/common\";\nimport { useData } from \"./hooks.ts\";\nimport type { Table } from \"./table.ts\";\n\nimport \"react-data-grid/lib/styles.css\";\n\nexport type QuerySortItem = { attribute: string, descending: boolean };\nfunction copyAndSort<T>(items: T[], attribute: string, descending?: boolean): T[] {\n const key = attribute as keyof T;\n return [...items].sort((a: T, b: T) => {\n if (a[key] < b[key]) {\n return descending ? 1 : -1;\n } else if (a[key] > b[key]) {\n return descending ? -1 : 1;\n }\n return 0;\n });\n}\n\ninterface EmptyRowsRendererProps {\n message: string\n}\n\nconst EmptyRowsRenderer: React.FunctionComponent<EmptyRowsRendererProps> = ({\n message\n}) => {\n\n return <div style={{ textAlign: \"center\", gridColumn: \"1/-1\" }} >\n {message}\n </div>;\n};\n\ninterface ColumnEx<TRow, TSummaryRow = unknown> extends Column<TRow, TSummaryRow> {\n renderCell?: (props: any) => any;\n __hpcc_pattern?: ReturnType<typeof timeParse>;\n __hpcc_format?: ReturnType<typeof format> | ReturnType<typeof timeFormat>;\n}\n\nexport interface ReactTableProps {\n table: Table;\n sort?: QuerySortItem,\n}\n\nexport const ReactTable: React.FunctionComponent<ReactTableProps> = ({\n table,\n sort\n}) => {\n const [columns, data] = useData(table);\n const multiSelect = table.multiSelect();\n const columnTypes = table.columnTypes();\n const columnPatterns = table.columnPatterns();\n const columnFormats = table.columnFormats();\n\n const [listColumns, setListColumns] = React.useState<ColumnEx<any[]>[]>([]);\n const [sortColumn, setSortColumn] = React.useState<SortColumn>();\n const [rows, setRows] = React.useState<any[]>([]);\n const [selectedRows, setSelectedRows] = React.useState<ReadonlySet<number>>(new Set());\n\n // Columns ---\n React.useEffect(() => {\n setListColumns([\n ...multiSelect ? [SelectColumn as ColumnEx<any[]>] : [],\n ...columns.map((column): ColumnEx<any[]> => {\n const type = columnTypes[column] ?? \"string\";\n let formatter;\n let __hpcc_pattern;\n let __hpcc_format;\n switch (type) {\n case \"time\":\n __hpcc_pattern = columnPatterns[column] !== undefined ? timeParse(columnPatterns[column]) : undefined;\n __hpcc_format = columnFormats[column] !== undefined ? timeFormat(columnFormats[column]) : undefined;\n break;\n case \"number\":\n formatter = (props) => {\n return <div style={{ textAlign: \"right\" }}>{props.row[props.column.key]}</div>;\n };\n // eslint-disable-next-line no-fallthrough\n default:\n __hpcc_format = columnFormats[column] !== undefined ? format(columnFormats[column]) : undefined;\n }\n return {\n key: column,\n name: column,\n resizable: true,\n sortable: true,\n minWidth: 80,\n renderCell: formatter,\n __hpcc_pattern,\n __hpcc_format\n };\n })\n ]);\n }, [columnFormats, columnPatterns, columnTypes, columns, multiSelect]);\n\n const onSortColumnsChange = React.useCallback((sortColumns: SortColumn[]) => {\n const futureSortColumn = sortColumns.slice(-1)[0];\n const sorted = futureSortColumn !== undefined;\n const isSortedDescending: boolean = futureSortColumn?.direction === \"DESC\";\n setSortColumn(futureSortColumn);\n setRows(copyAndSort(rows, sorted ? futureSortColumn.columnKey : \"key\", sorted ? isSortedDescending : false));\n }, [rows]);\n\n const rowKeyGetter = React.useCallback((row: any) => {\n return row.key;\n }, []);\n\n const onSelectedRowsChange = React.useCallback((selectedRows: Set<any>) => {\n setSelectedRows(selectedRows);\n }, []);\n\n const onCellClick = React.useCallback((row, column) => {\n table.onRowClickCallback(row, column.key);\n }, [table]);\n\n // Rows ---\n React.useEffect(() => {\n let items = data.map((row, index) => {\n const retVal = {\n key: index\n };\n listColumns.forEach((column, index) => {\n let val = row[index] as string;\n if (column.__hpcc_pattern && column.__hpcc_format) {\n val = column.__hpcc_format(column.__hpcc_pattern(val));\n } else if (column.__hpcc_pattern) {\n val = column.__hpcc_pattern(val).toString();\n } else if (column.__hpcc_format) {\n val = column.__hpcc_format(val as any);\n }\n retVal[column.key] = val;\n });\n return retVal;\n });\n if (sort?.attribute) {\n items = copyAndSort(items, sort.attribute, sort.descending);\n }\n setRows(items);\n }, [listColumns, data, sort]);\n\n return <DataGrid\n columns={listColumns}\n headerRowHeight={24}\n rows={rows}\n rowKeyGetter={rowKeyGetter}\n rowHeight={20}\n renderers={{ noRowsFallback: <EmptyRowsRenderer message={table.noDataMessage()} /> as any }}\n className={table.darkMode() ? \"rdg-dark\" : \"rdg-light\"}\n sortColumns={sortColumn ? [sortColumn] : []}\n onSortColumnsChange={onSortColumnsChange}\n selectedRows={selectedRows}\n onSelectedRowsChange={multiSelect ? onSelectedRowsChange : undefined}\n onCellClick={multiSelect ? undefined : (args, event) => onCellClick(args.row, args.column)}\n aria-describedby={\"\"}\n aria-label={\"\"}\n aria-labelledby={\"\"}\n style={{ height: \"100%\" }}\n />;\n};\n\n", "import { Widget } from \"@hpcc-js/common\";\nimport * as React from \"react\";\n\nexport function useData(widget: Widget): [string[], Array<string | number>[]] {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const columns: string[] = React.useMemo(() => widget.columns(), [widget, widget.dataChecksum()]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const data: Array<string | number>[] = React.useMemo(() => widget.data(), [widget, widget.dataChecksum()]);\n\n return [columns, data];\n}\n\n", "(function(){\n if (!document.getElementById('acd94ec7')) {\n var e = document.createElement('style');\n e.id = 'acd94ec7';\n e.textContent = `@layer rdg {\n @layer Defaults,\n FocusSink,\n CheckboxInput,\n CheckboxIcon,\n CheckboxLabel,\n Cell,\n HeaderCell,\n SummaryCell,\n EditCell,\n Row,\n HeaderRow,\n SummaryRow,\n GroupedRow,\n Root;\n}\n\n.mlln6zg7-0-0-beta-47 {\n @layer rdg.MeasuringCell {\n contain: strict;\n grid-row: 1;\n visibility: hidden;\n }\n}\n\n\n.cj343x07-0-0-beta-47 {\n @layer rdg.Cell {\n /* max-content does not work with size containment\n * dynamically switching between different containment styles incurs a heavy relayout penalty\n * Chromium bug: at odd zoom levels or subpixel positioning,\n * layout/paint/style containment can make cell borders disappear\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1326946\n */\n position: relative; /* needed for absolute positioning to work */\n padding-block: 0;\n padding-inline: 8px;\n border-inline-end: 1px solid var(--rdg-border-color);\n border-block-end: 1px solid var(--rdg-border-color);\n grid-row-start: var(--rdg-grid-row-start);\n align-content: center;\n background-color: inherit;\n\n white-space: nowrap;\n overflow: clip;\n text-overflow: ellipsis;\n outline: none;\n\n &[aria-selected='true'] {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n }\n}\n\n.csofj7r7-0-0-beta-47 {\n @layer rdg.Cell {\n position: sticky;\n /* Should have a higher value than 0 to show up above unfrozen cells */\n z-index: 1;\n\n /* Add box-shadow on the last frozen cell */\n &:nth-last-child(1 of &) {\n box-shadow: var(--rdg-cell-frozen-box-shadow);\n }\n }\n}\n\n\n.c1bn88vv7-0-0-beta-47 {\n @layer rdg.CheckboxInput {\n display: block;\n margin: auto;\n inline-size: 20px;\n block-size: 20px;\n\n &:focus-visible {\n outline: 2px solid var(--rdg-checkbox-focus-color);\n outline-offset: -3px;\n }\n\n &:enabled {\n cursor: pointer;\n }\n }\n}\n\n\n.g1s9ylgp7-0-0-beta-47 {\n @layer rdg.GroupCellContent {\n outline: none;\n }\n}\n\n.cz54e4y7-0-0-beta-47 {\n @layer rdg.GroupCellCaret {\n margin-inline-start: 4px;\n stroke: currentColor;\n stroke-width: 1.5px;\n fill: transparent;\n vertical-align: middle;\n\n > path {\n transition: d 0.1s;\n }\n }\n}\n\n\n.c1w9bbhr7-0-0-beta-47 {\n @layer rdg.DragHandle {\n --rdg-drag-handle-size: 8px;\n z-index: 0;\n cursor: move;\n inline-size: var(--rdg-drag-handle-size);\n block-size: var(--rdg-drag-handle-size);\n background-color: var(--rdg-selection-color);\n place-self: end;\n\n &:hover {\n --rdg-drag-handle-size: 16px;\n border: 2px solid var(--rdg-selection-color);\n background-color: var(--rdg-background-color);\n }\n }\n}\n\n.c1creorc7-0-0-beta-47 {\n @layer rdg.DragHandle {\n z-index: 1;\n position: sticky;\n }\n}\n\n\n.cis5rrm7-0-0-beta-47 {\n @layer rdg.EditCell {\n padding: 0;\n }\n}\n\n\n.h44jtk67-0-0-beta-47 {\n @layer rdg.SortableHeaderCell {\n display: flex;\n }\n}\n\n.hcgkhxz7-0-0-beta-47 {\n @layer rdg.SortableHeaderCellName {\n flex-grow: 1;\n overflow: clip;\n text-overflow: ellipsis;\n }\n}\n\n\n.c6l2wv17-0-0-beta-47 {\n @layer rdg.HeaderCell {\n cursor: pointer;\n }\n}\n\n.c1kqdw7y7-0-0-beta-47 {\n @layer rdg.HeaderCell {\n touch-action: none;\n }\n}\n\n.r1y6ywlx7-0-0-beta-47 {\n @layer rdg.HeaderCell {\n cursor: col-resize;\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n inset-block-end: 0;\n inline-size: 10px;\n }\n}\n\n.c1bezg5o7-0-0-beta-47 {\n opacity: 0.5;\n}\n\n.c1vc96037-0-0-beta-47 {\n background-color: var(--rdg-header-draggable-background-color);\n}\n\n\n.r1upfr807-0-0-beta-47 {\n @layer rdg.Row {\n display: contents;\n background-color: var(--rdg-background-color);\n\n &:hover {\n background-color: var(--rdg-row-hover-background-color);\n }\n\n &[aria-selected='true'] {\n background-color: var(--rdg-row-selected-background-color);\n\n &:hover {\n background-color: var(--rdg-row-selected-hover-background-color);\n }\n }\n }\n}\n\n.r190mhd37-0-0-beta-47 {\n @layer rdg.FocusSink {\n outline: 2px solid var(--rdg-selection-color);\n outline-offset: -2px;\n }\n}\n\n.r139qu9m7-0-0-beta-47 {\n @layer rdg.FocusSink {\n &::before {\n content: '';\n display: inline-block;\n block-size: 100%;\n position: sticky;\n inset-inline-start: 0;\n border-inline-start: 2px solid var(--rdg-selection-color);\n }\n }\n}\n\n\n.h10tskcx7-0-0-beta-47 {\n @layer rdg.HeaderRow {\n display: contents;\n background-color: var(--rdg-header-background-color);\n font-weight: bold;\n\n & > .cj343x07-0-0-beta-47 {\n /* Should have a higher value than 1 to show up above regular cells and the focus sink */\n z-index: 2;\n position: sticky;\n }\n\n & > .csofj7r7-0-0-beta-47 {\n z-index: 3;\n }\n }\n}\n\n\n.c6ra8a37-0-0-beta-47 {\n @layer rdg.Cell {\n background-color: #ccccff;\n }\n}\n\n.cq910m07-0-0-beta-47 {\n @layer rdg.Cell {\n background-color: #ccccff;\n\n &.c6ra8a37-0-0-beta-47 {\n background-color: #9999ff;\n }\n }\n}\n\n\n.a3ejtar7-0-0-beta-47 {\n @layer rdg.SortIcon {\n fill: currentColor;\n\n > path {\n transition: d 0.1s;\n }\n }\n}\n\n\n.rnvodz57-0-0-beta-47 {\n @layer rdg.Defaults {\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n }\n\n @layer rdg.Root {\n --rdg-color: #000; --rdg-border-color: #ddd; --rdg-summary-border-color: #aaa; --rdg-background-color: hsl(0deg 0% 100%); --rdg-header-background-color: hsl(0deg 0% 97.5%); --rdg-header-draggable-background-color: hsl(0deg 0% 90.5%); --rdg-row-hover-background-color: hsl(0deg 0% 96%); --rdg-row-selected-background-color: hsl(207deg 76% 92%); --rdg-row-selected-hover-background-color: hsl(207deg 76% 88%); --rdg-checkbox-focus-color: hsl(207deg 100% 69%);\n --rdg-selection-color: #66afe9;\n --rdg-font-size: 14px;\n --rdg-cell-frozen-box-shadow: 2px 0 5px -2px rgba(136, 136, 136, 0.3);\n\n &:dir(rtl) {\n --rdg-cell-frozen-box-shadow: -2px 0 5px -2px rgba(136, 136, 136, 0.3);\n }\n\n display: grid;\n\n color-scheme: var(--rdg-color-scheme, light dark);\n accent-color: light-dark(hsl(207deg 100% 29%), hsl(207deg 100% 79%));\n\n /* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context */\n /* We set a stacking context so internal elements don't render on top of external elements. */\n /* size containment is not used as it could break \"width: min-content\" for example, and the grid would infinitely resize on Chromium browsers */\n contain: content;\n content-visibility: auto;\n block-size: 350px;\n border: 1px solid var(--rdg-border-color);\n box-sizing: border-box;\n overflow: auto;\n background-color: var(--rdg-background-color);\n color: var(--rdg-color);\n font-size: var(--rdg-font-size);\n\n /* needed on Firefox to fix scrollbars */\n &::before {\n content: '';\n grid-column: 1/-1;\n grid-row: 1/-1;\n }\n\n &.rdg-dark {\n --rdg-color-scheme: dark;\n --rdg-color: #ddd; --rdg-border-color: #444; --rdg-summary-border-color: #555; --rdg-background-color: hsl(0deg 0% 13%); --rdg-header-background-color: hsl(0deg 0% 10.5%); --rdg-header-draggable-background-color: hsl(0deg 0% 17.5%); --rdg-row-hover-background-color: hsl(0deg 0% 9%); --rdg-row-selected-background-color: hsl(207deg 76% 42%); --rdg-row-selected-hover-background-color: hsl(207deg 76% 38%); --rdg-checkbox-focus-color: hsl(207deg 100% 89%);\n }\n\n &.rdg-light {\n --rdg-color-scheme: light;\n }\n\n @media (prefers-color-scheme: dark) {\n &:not(.rdg-light) {\n --rdg-color: #ddd; --rdg-border-color: #444; --rdg-summary-border-color: #555; --rdg-background-color: hsl(0deg 0% 13%); --rdg-header-background-color: hsl(0deg 0% 10.5%); --rdg-header-draggable-background-color: hsl(0deg 0% 17.5%); --rdg-row-hover-background-color: hsl(0deg 0% 9%); --rdg-row-selected-background-color: hsl(207deg 76% 42%); --rdg-row-selected-hover-background-color: hsl(207deg 76% 38%); --rdg-checkbox-focus-color: hsl(207deg 100% 89%);\n }\n }\n\n > :nth-last-child(1 of .rdg-top-summary-row) {\n > .cj343x07-0-0-beta-47 {\n border-block-end: 2px solid var(--rdg-summary-border-color);\n }\n }\n\n > :nth-child(1 of .rdg-bottom-summary-row) {\n > .cj343x07-0-0-beta-47 {\n border-block-start: 2px solid var(--rdg-summary-border-color);\n }\n }\n }\n}\n\n.vlqv91k7-0-0-beta-47 {\n @layer rdg.Root {\n user-select: none;\n\n & .r1upfr807-0-0-beta-47 {\n cursor: move;\n }\n }\n}\n\n.f1lsfrzw7-0-0-beta-47 {\n @layer rdg.FocusSink {\n grid-column: 1/-1;\n pointer-events: none;\n /* Should have a higher value than 1 to show up above regular frozen cells */\n z-index: 1;\n }\n}\n\n.f1cte0lg7-0-0-beta-47 {\n @layer rdg.FocusSink {\n /* Should have a higher value than 3 to show up above header and summary rows */\n z-index: 3;\n }\n}\n\n\n.s8wc6fl7-0-0-beta-47 {\n @layer rdg.SummaryCell {\n inset-block-start: var(--rdg-summary-row-top);\n inset-block-end: var(--rdg-summary-row-bottom);\n }\n}\n\n\n.skuhp557-0-0-beta-47 {\n @layer rdg.SummaryRow {\n > .cj343x07-0-0-beta-47 {\n position: sticky;\n }\n }\n}\n\n.tf8l5ub7-0-0-beta-47 {\n @layer rdg.SummaryRow {\n > .cj343x07-0-0-beta-47 {\n z-index: 2;\n }\n\n > .csofj7r7-0-0-beta-47 {\n z-index: 3;\n }\n }\n}\n\n\n.g1yxluv37-0-0-beta-47 {\n @layer rdg.GroupedRow {\n &:not([aria-selected='true']) {\n background-color: var(--rdg-header-background-color);\n }\n\n > .cj343x07-0-0-beta-47:not(:last-child, .csofj7r7-0-0-beta-47),\n > :nth-last-child(n + 2 of .csofj7r7-0-0-beta-47) {\n border-inline-end: none;\n }\n }\n}\n\n\n.t7vyx3i7-0-0-beta-47 {\n @layer rdg.TextEditor {\n appearance: none;\n\n box-sizing: border-box;\n inline-size: 100%;\n block-size: 100%;\n padding-block: 0;\n padding-inline: 6px;\n border: 2px solid #ccc;\n vertical-align: top;\n color: var(--rdg-color);\n background-color: var(--rdg-background-color);\n\n font-family: inherit;\n font-size: var(--rdg-font-size);\n\n &:focus {\n border-color: var(--rdg-selection-color);\n outline: none;\n }\n\n &::placeholder {\n color: #999;\n opacity: 1;\n }\n }\n}\n\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('c2b63dd3')) {\n var e = document.createElement('style');\n e.id = 'c2b63dd3';\n e.textContent = `.dgrid2_Table .rdg {\n font-family: monospace, 'Courier New', Courier;\n}\n\n.dgrid2_Table .rdg-checkbox-label .rdg-checkbox {\n block-size: 16px;\n inline-size: 16px;\n border-width: 2px;\n box-shadow: inset 0 0 0 3px var(--rdg-background-color);\n}`;\n document.head.appendChild(e);\n }\n })();", "import { IGraph, INDChart } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget, Utility, Widget } from \"@hpcc-js/common\";\nimport { map as d3Map } from \"d3-collection\";\nimport { requireWidget } from \"./Utility.ts\";\n\ndeclare const require: any;\nexport class MultiChart extends HTMLWidget {\n _allCharts = {};\n _chartTypeDefaults;\n _chartTypeProperties;\n _chartMonitor;\n _switchingTo;\n\n constructor() {\n super();\n INDChart.call(this);\n IGraph.call(this);\n\n this._tag = \"div\";\n\n this._allCharts = {};\n this._allChartTypes.forEach(function (item) {\n const newItem = JSON.parse(JSON.stringify(item));\n newItem.widget = null;\n this._allCharts[item.id] = newItem;\n this._allCharts[item.display] = newItem;\n this._allCharts[item.widgetClass] = newItem;\n }, this);\n this._chartTypeDefaults = {};\n this._chartTypeProperties = {};\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().fields();\n this.chart().fields(_);\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_, asDefault?: boolean): this;\n columns(_?, asDefault?: boolean) {\n const retVal = HTMLWidget.prototype.columns.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().columns();\n this.chart().columns(_, asDefault);\n }\n return retVal;\n }\n\n data(_?) {\n const retVal = HTMLWidget.prototype.data.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().data();\n this.chart().data(_);\n }\n return retVal;\n }\n\n hasOverlay() {\n return this.chart() && this.chart().hasOverlay();\n }\n\n visible(): boolean;\n visible(_: boolean): this;\n visible(_?: boolean): boolean | this {\n if (!arguments.length) return this.chart() && this.chart().visible();\n if (this.chart()) {\n this.chart().visible(_);\n }\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): object | this {\n if (!arguments.length) return this._chartTypeDefaults;\n this._chartTypeDefaults = _;\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): object | this {\n if (!arguments.length) return this._chartTypeProperties;\n this._chartTypeProperties = _;\n return this;\n }\n\n getChartDataFamily() {\n return this._allCharts[this.chartType()].family;\n }\n\n requireContent(chartType, callback) {\n const classInfo = Utility.parseClassID(this._allCharts[chartType].widgetClass);\n switch (classInfo.package) {\n case \"@hpcc-js/chart\":\n import(\"@hpcc-js/chart\").then(mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n case \"@hpcc-js/dgrid\":\n import(\"@hpcc-js/dgrid\").then(mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n default:\n requireWidget(this._allCharts[chartType].widgetClass).then(function (WidgetClass: any) {\n callback(new WidgetClass());\n });\n }\n }\n\n switchChart(callback) {\n if (this._switchingTo === this.chartType()) {\n if (callback) {\n callback(this);\n }\n return;\n } else if (this._switchingTo) {\n console.warn(\"Attempting switch to: \" + this.chartType() + \", before previous switch is complete (\" + this._switchingTo + \")\");\n }\n this._switchingTo = this.chartType();\n const oldContent = this.chart();\n const context = this;\n this.requireContent(this.chartType(), function (newContent) {\n if (newContent !== oldContent) {\n const size = context.size();\n newContent\n .fields(context.fields())\n .data(context.data())\n .size(size)\n ;\n\n context.chart(newContent);\n if (oldContent) {\n oldContent\n .size({ width: 1, height: 1 })\n .render()\n ;\n }\n }\n delete context._switchingTo;\n if (callback) {\n callback(this);\n }\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const content = element.selectAll(\".multiChart\").data(this.chart() ? [this.chart()] : [], function (d) { return d._id; });\n content.enter().append(\"div\")\n .attr(\"class\", \"multiChart\")\n .each(function (d) {\n d.target(this);\n })\n ;\n\n const currChart = this.chart();\n if (currChart) {\n for (const key in this._chartTypeDefaults) {\n if (currChart[key + \"_default\"]) {\n try {\n currChart[key + \"_default\"](this._chartTypeDefaults[key]);\n } catch (e) {\n console.warn(\"Exception Setting Default: \" + key);\n }\n } else {\n console.warn(\"Unknown Default: \" + key);\n }\n }\n this._chartTypeDefaults = {};\n for (const propKey in this._chartTypeProperties) {\n if (currChart[propKey]) {\n try {\n currChart[propKey](this._chartTypeProperties[propKey]);\n } catch (e) {\n console.warn(\"Exception Setting Property: \" + propKey);\n }\n } else {\n console.warn(\"Unknown Property: \" + propKey);\n }\n }\n this._chartTypeProperties = {};\n }\n\n const context = this;\n content\n .each(function (d) { d.resize(context.size()); })\n ;\n\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n if (this.chart()) {\n this.chart().target(null);\n }\n super.exit(domNode, element);\n }\n\n render(_callback?) {\n if (this.chartType() && (!this.chart() || (this.chart().classID() !== this._allCharts[this.chartType()].widgetClass))) {\n const context = this;\n const args = arguments;\n this.switchChart(function () {\n HTMLWidget.prototype.render.apply(context, args);\n });\n return this;\n }\n return HTMLWidget.prototype.render.apply(this, arguments);\n }\n}\nMultiChart.prototype._class += \" composite_MultiChart\";\nMultiChart.prototype.implements(INDChart.prototype);\nMultiChart.prototype.implements(IGraph.prototype);\nexport interface ChartMeta {\n id: string;\n display: string;\n widgetClass: string;\n widgetPath?: string;\n}\nexport interface MultiChart {\n _otherChartTypes: ChartMeta[];\n _graphChartTypes: ChartMeta[];\n _1DChartTypes: ChartMeta[];\n _2DChartTypes: ChartMeta[];\n _NDChartTypes: ChartMeta[];\n _mapChartTypes: ChartMeta[];\n _anyChartTypes: ChartMeta[];\n _allChartTypes: ChartMeta[];\n _allMap;\n _allFamilies: string[];\n _allChartTypesMap;\n _allChartTypesByClass;\n\n hideRowOnLegendClick(): boolean;\n hideRowOnLegendClick(_: boolean): this;\n chartType(): string;\n chartType(_: string): this;\n chart(): Widget;\n chart(_: Widget): this;\n chart_access(): Widget;\n chart_access(_: Widget): this;\n\n click(_row, _column, _selected): void;\n dblclick(_row, _column, _selected): void;\n vertex_click(row, column, selected, more): void;\n vertex_dblclick(row, column, selected, more): void;\n edge_click(row, column, selected, more): void;\n edge_dblclick(row, column, selected, more): void;\n}\n\nMultiChart.prototype._otherChartTypes = [\n { id: \"FORM\", display: \"Form\", widgetClass: \"form_FieldForm\" }\n].map(function (item: any) { item.family = \"other\"; return item; });\nMultiChart.prototype._graphChartTypes = [\n { id: \"GRAPH\", display: \"Graph\", widgetClass: \"graph_Graph\" },\n { id: \"ADJACENCY_GRAPH\", display: \"Graph\", widgetClass: \"graph_AdjacencyGraph\" },\n { id: \"GRAPHC\", display: \"GraphC\", widgetClass: \"graph_GraphC\" }\n].map(function (item: any) { item.family = \"GRAPH\"; return item; });\nMultiChart.prototype._1DChartTypes = [\n].map(function (item: any) { item.family = \"1D\"; return item; });\nMultiChart.prototype._2DChartTypes = [\n { id: \"SUMMARY\", display: \"Summary\", widgetClass: \"chart_Summary\" },\n { id: \"BUBBLE\", display: \"Bubble\", widgetClass: \"chart_Bubble\" },\n { id: \"PIE\", display: \"Pie\", widgetClass: \"chart_Pie\" },\n { id: \"WORD_CLOUD\", display: \"Word Cloud\", widgetClass: \"other_WordCloud\" }\n].map(function (item: any) { item.family = \"2D\"; return item; });\nMultiChart.prototype._NDChartTypes = [\n { id: \"COLUMN\", display: \"Column\", widgetClass: \"chart_Column\" },\n { id: \"BAR\", display: \"Bar\", widgetClass: \"chart_Bar\" },\n { id: \"LINE\", display: \"Line\", widgetClass: \"chart_Line\" },\n { id: \"AREA\", display: \"Area\", widgetClass: \"chart_Area\" },\n { id: \"STEP\", display: \"Step\", widgetClass: \"chart_Step\" },\n { id: \"SCATTER\", display: \"Scatter\", widgetClass: \"chart_Scatter\" },\n { id: \"HEXBIN\", display: \"Hex Bin\", widgetClass: \"chart_HexBin\" }\n].map(function (item: any) { item.family = \"ND\"; return item; });\nMultiChart.prototype._mapChartTypes = [\n { id: \"CHORO_USSTATES\", display: \"US State Choropleth\", widgetClass: \"map_ChoroplethStates\" },\n { id: \"CHORO_USCOUNTIES\", display: \"US County Choropleth\", widgetClass: \"map_ChoroplethCounties\" },\n { id: \"CHORO_COUNTRIES\", display: \"Country Choropleth\", widgetClass: \"map_ChoroplethCountries\" },\n { id: \"GMAP_CHORO_USCOUNTIES\", display: \"Google Map US County Choropleth\", widgetClass: \"map_GMapCounties\" },\n { id: \"GOOGLE_MAP\", display: \"Google Map\", widgetClass: \"map_GMapLayered\" },\n { id: \"OPENSTREET\", display: \"Open Street Map\", widgetClass: \"map_OpenStreet\" }\n].map(function (item: any) { item.family = \"map\"; return item; });\nMultiChart.prototype._anyChartTypes = [\n { id: \"TABLE\", display: \"Table\", widgetClass: \"dgrid_Table\" },\n { id: \"TABLE_LEGACY\", display: \"Table (legacy)\", widgetClass: \"other_Table\" },\n { id: \"TABLE_NESTED\", display: \"Nested Table\", widgetClass: \"other_NestedTable\" },\n { id: \"TABLE_CALENDAR\", display: \"Table driven Calendar Heat Map\", widgetClass: \"other_CalendarHeatMap\" },\n { id: \"TABLE_BULLET\", display: \"Table driven bullet chart\", widgetClass: \"chart_Bullet\" },\n { id: \"TABLE_SELECT\", display: \"Table driven select\", widgetClass: \"other_Select\" },\n { id: \"TABLE_AUTOCOMPLETE\", display: \"Table driven auto complete\", widgetClass: \"other_AutoCompleteText\" },\n { id: \"TABLE_OPPORTUNITY\", display: \"Table driven opportunity widget\", widgetClass: \"graph_Opportunity\" },\n { id: \"TABLE_TREE\", display: \"Table driven tree\", widgetClass: \"tree_Dendrogram\" },\n { id: \"TABLE_TREEMAP\", display: \"Table driven Treemap\", widgetClass: \"tree_Treemap\" },\n { id: \"TABLE_SANKEY\", display: \"Table driven Sankey\", widgetClass: \"graph_Sankey\" },\n { id: \"TABLE_GMAP_PIN\", display: \"Table driven Google Map (pins)\", widgetClass: \"map_GMapPin\" },\n { id: \"TABLE_GMAP_PINLINE\", display: \"Table driven Google Map (pins/lines)\", widgetClass: \"map_GMapPinLine\" },\n { id: \"TABLE_XML_TREE\", display: \"Table driven XML Tree\", widgetClass: \"tree_Indented\" }\n].map(function (item: any) { item.family = \"any\"; return item; });\nMultiChart.prototype._allChartTypes =\n MultiChart.prototype._otherChartTypes.concat(\n MultiChart.prototype._graphChartTypes.concat(\n MultiChart.prototype._1DChartTypes.concat(\n MultiChart.prototype._2DChartTypes.concat(\n MultiChart.prototype._NDChartTypes.concat(\n MultiChart.prototype._mapChartTypes.concat(\n MultiChart.prototype._anyChartTypes\n ))))));\nMultiChart.prototype._allMap = d3Map(MultiChart.prototype._allChartTypes, function (item: any) { return item.family; });\nMultiChart.prototype._allFamilies = MultiChart.prototype._allMap.keys();\nMultiChart.prototype._allChartTypesMap = {};\nMultiChart.prototype._allChartTypesByClass = {};\nMultiChart.prototype._allChartTypes.forEach(function (item) {\n item.widgetPath = Utility.widgetPath(item.widgetClass);\n MultiChart.prototype._allChartTypesMap[item.id] = item;\n MultiChart.prototype._allChartTypesByClass[item.widgetClass] = item;\n});\n\nMultiChart.prototype.publishReset();\nMultiChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chartType\", \"BUBBLE\", \"set\", \"Chart Type\", MultiChart.prototype._allChartTypes.map(function (item) { return item.id; }), { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chart\", null, \"widget\", \"Chart\", null, { tags: [\"Basic\"] });\n\nconst _origChart = MultiChart.prototype.chart;\nMultiChart.prototype.chart = function (_?) {\n const retVal = _origChart.apply(this, arguments);\n if (arguments.length) {\n const context = this;\n if (this._allChartTypesByClass[_.classID()]) {\n this.chartType(this._allChartTypesByClass[_.classID()].id);\n } else {\n console.warn(\"Unknown Class ID: \" + _.classID());\n }\n _.click = function (_row, _column, _selected) {\n context.click.apply(context, arguments);\n };\n _.dblclick = function (_row, _column, _selected) {\n context.dblclick.apply(context, arguments);\n };\n _.vertex_click = function (row, column, selected, more) {\n context.vertex_click.apply(context, arguments);\n };\n _.vertex_dblclick = function (row, column, selected, more) {\n context.vertex_dblclick.apply(context, arguments);\n };\n _.edge_click = function (row, column, selected, more) {\n context.edge_click.apply(context, arguments);\n };\n _.edge_dblclick = function (row, column, selected, more) {\n context.edge_dblclick.apply(context, arguments);\n };\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n this._chartMonitor = _.monitor(function (key, newVal, oldVal) {\n context.broadcast(key, newVal, oldVal, _);\n });\n }\n return retVal;\n};\n", "import { Utility } from \"@hpcc-js/common\";\n\ndeclare const require: any;\nexport function requireWidget(classID) {\n return new Promise(function (resolve, _reject) {\n const parsedClassID = Utility.parseClassID(classID);\n if (require) {\n require([parsedClassID.package], function (Package) {\n let Widget = null;\n if (Package && Package[parsedClassID.widgetID]) {\n Widget = Package[parsedClassID.widgetID];\n }\n resolve(parsedClassID.memberWidgetID ? (Widget.prototype ? Widget.prototype[parsedClassID.memberWidgetID] : Widget[parsedClassID.memberWidgetID]) : Widget);\n });\n }\n });\n}\n\nexport function requireWidgets(classIDs) {\n return Promise.all(classIDs.map(requireWidget));\n}\n", "(function(){\n if (!document.getElementById('34d5dd28')) {\n var e = document.createElement('style');\n e.id = '34d5dd28';\n e.textContent = `.composite_ChartPanel > .body {\n margin: 0;\n padding: 0;\n display: flex;\n flex-flow: row;\n}\n\n.composite_ChartPanel > .body > article {\n flex: 3 1 60%;\n order: 2;\n}\n\n.composite_ChartPanel > .body > nav {\n flex: 1 6 20%;\n order: 1;\n}\n\n.composite_ChartPanel > .body > aside {\n margin-left: 4px;\n flex: 1 6 20%;\n order: 3;\n}\n\nheader, footer {\n display: block;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "\uFEFFimport { OnOff } from \"@hpcc-js/form\";\nimport { Border, Toolbar } from \"@hpcc-js/layout\";\nimport { PropertyEditor } from \"@hpcc-js/other\";\n\nimport \"../src/Dermatology.css\";\n\nexport class Dermatology extends Border {\n _toolbar;\n _propEditor;\n _showProperties;\n _propsButton;\n _prevWidget;\n\n constructor() {\n super();\n\n this._toolbar = new Toolbar()\n .title(\"Dermatology\")\n ;\n this._propEditor = new PropertyEditor()\n .show_settings(true)\n ;\n }\n\n showProperties(_?) {\n if (!arguments.length) return this._showProperties;\n this._showProperties = _;\n this\n .rightPercentage(0)\n .rightSize(this._showProperties ? 360 : 0)\n .setContent(\"right\", this._showProperties ? this._propEditor : null)\n ;\n const widget = this.widget();\n if (widget && widget.designMode) {\n widget.designMode(this._showProperties);\n }\n return this;\n }\n\n toggleProperties() {\n return this.showProperties(!this.showProperties());\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this\n .topPercentage(0)\n .topSize(0)\n .setContent(\"top\", this._toolbar)\n ;\n this.getCell(\"top\").surfaceShadow(true);\n\n const context = this;\n this._propsButton = new OnOff()\n .id(this.id() + \"_props\")\n .value(\"Properties\")\n .on(\"click\", function () {\n context\n .toggleProperties()\n .render()\n ;\n })\n ;\n this._toolbar.widgets([this._propsButton]);\n }\n\n update(domNode, element) {\n this\n .topPercentage(0)\n .topSize(this.showToolbar() ? 32 : 0)\n ;\n\n super.update(domNode, element);\n\n const widget = this.widget();\n element.style(\"background-color\", widget && widget.surfaceShadow ? null : \"white\");\n }\n\n render(callback) {\n const widget = this.widget();\n if (widget !== this._prevWidget) {\n if (widget && widget.surfaceShadow) {\n widget.surfaceBackgroundColor_default(\"white\");\n }\n this.setContent(\"center\", widget);\n this._propEditor.widget(widget);\n this._prevWidget = widget;\n }\n return super.render(callback);\n }\n\n showToolbar: { (): boolean; (_: boolean): Dermatology };\n showToolbar_exists: () => boolean;\n widget: { (): any; (_: any): Dermatology };\n widget_exists: () => boolean;\n}\nDermatology.prototype._class += \" composite_Dermatology\";\n\nDermatology.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nDermatology.prototype.publish(\"widget\", null, \"widget\", \"Widget\");\n", "(function(){\n if (!document.getElementById('e6188c82')) {\n var e = document.createElement('style');\n e.id = 'e6188c82';\n e.textContent = `\uFEFF.composite_Dermatology {\n background-color: ghostwhite;\n}\n\n.composite_Dermatology .common_Icon {\n background-color: red;\n opacity:0.75;\n}\n\n.composite_Dermatology .common_Icon .common_Shape {\n fill: white;\n stroke: darkgray;\n cursor:pointer;\n}\n\n.composite_Dermatology .common_Icon.show .common_Shape {\n fill: lightgray;\n}\n\n.composite_Dermatology .common_Icon .common_FAChar .common_Text {\n fill: darkgray;\n cursor:pointer;\n}\n\n.composite_Dermatology .other_PropertyEditor {\n font-family: sans-serif;\n font-size: 11px;\n}\n\n.composite_Dermatology .other_PropertyEditor input {\n font-family: sans-serif;\n font-size: 11px;\n border:0px;\n}\n\n.composite_Dermatology .other_PropertyEditor .property-label {\n height:unset;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { Database, Text, Utility } from \"@hpcc-js/common\";\nimport { Button, Input, Select } from \"@hpcc-js/form\";\nimport { Border, Grid, Toolbar } from \"@hpcc-js/layout\";\nimport { Html, Legend } from \"@hpcc-js/other\";\nimport { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { MultiChart } from \"./MultiChart.ts\";\n\nimport \"../src/MegaChart.css\";\n\nexport class MegaChart extends Border {\n _chart = new MultiChart();\n _toolbar = new Toolbar();\n _valueTitle = new Text();\n _domainTitle = new Text();\n _legend: Legend = new Legend();\n _csvButton;\n _infoButton;\n _maximizeButton;\n _legendButton;\n _chartTypeSelect;\n _prevLegendPosition;\n _prevShowToolbar;\n _1DChartTypes;\n _2DChartTypes;\n _NDChartTypes;\n _anyChartTypes;\n _allChartTypes;\n _contentClasses;\n _dataCount;\n\n constructor() {\n super();\n this._tag = \"div\";\n const context = this;\n this._chart.click = function () {\n context.click.apply(context, arguments);\n };\n this._chart.dblclick = function () {\n context.dblclick.apply(context, arguments);\n };\n this._chart.vertex_click = function () {\n context.vertex_click.apply(context, arguments);\n };\n this._chart.vertex_dblclick = function () {\n context.vertex_dblclick.apply(context, arguments);\n };\n this._chart.edge_click = function () {\n context.edge_click.apply(context, arguments);\n };\n this._chart.edge_dblclick = function () {\n context.edge_dblclick.apply(context, arguments);\n };\n }\n\n toolbarWidgets(_?) {\n if (!arguments.length) return this._toolbar.widgets();\n this._toolbar.widgets(_);\n return this;\n }\n\n chartTypeDefaults(_?) {\n if (!arguments.length) return this._chart.chartTypeDefaults();\n this._chart.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(_?) {\n if (!arguments.length) return this._chart.chartTypeProperties();\n this._chart.chartTypeProperties(_);\n return this;\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n if (!arguments.length) return this._chart.fields();\n this._chart.fields(_);\n return this;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._chart.columns();\n this._chart.columns(_, asDefault);\n return this;\n }\n\n data(_?) {\n if (!arguments.length) return this._chart.data();\n this._chart.data(_);\n return this;\n }\n\n downloadCSV() {\n Utility.downloadString(\"CSV\", this._chart.export(\"CSV\"));\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.topShrinkWrap(false).topPercentage(0).topSize(30);\n this._dataCount = new Html()\n .classed({ \"composite_MegaChart-dataCount\": true })\n .id(this.id() + \"_dataCount\")\n .html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\")\n .overflowX(\"visible\")\n .overflowY(\"visible\")\n ;\n\n this._csvButton = new Button()\n .classed({ \"composite_MegaChart-CSV\": true })\n .id(this.id() + \"_csv\")\n .value(\"CSV\")\n ;\n this._csvButton.click = function (a) {\n context.downloadCSV();\n };\n\n this._infoButton = new Button()\n .classed({ \"composite_MegaChart-Info\": true })\n .id(this.id() + \"_info\")\n .value(this.infoIcon())\n ;\n\n this._maximizeButton = new Button()\n .classed({ \"composite_MegaChart-Maximize\": true })\n .id(this.id() + \"_maximize\")\n .value(\"\\uf2d0\")\n ;\n this._maximizeButton.click = function (buttonWidget) {\n const target = context.target() as any;\n let node = target;\n const isMaximized = d3Select(target).classed(\"__hpccisMaximized\");\n\n // Find the layout_Grid ancestor\n const parentGrid = context.locateAncestor(\"layout_Grid\");\n if (parentGrid) {\n node = parentGrid.element().node();\n } else {\n node = document.body;\n }\n\n const targetElement = d3Select(context.target()) as any;\n if (isMaximized) {\n // Restore from maximized to natural size/position\n const targetParentBox = target.parentElement.getBoundingClientRect();\n const targetPaddingTop = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const targetPaddingLeft = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const targetPaddingRight = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const targetPaddingBottom = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement.transition()// .duration(3000)\n .style(\"top\", targetParentBox.top + \"px\")\n .style(\"left\", targetParentBox.left + \"px\")\n .style(\"width\", (targetParentBox.width - targetPaddingLeft - targetPaddingRight) + \"px\")\n .style(\"height\", (targetParentBox.height - targetPaddingTop - targetPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"position\", target.__old_position);\n targetElement.style(\"z-index\", target.__old_zindex);\n targetElement.style(\"background-color\", target.__old_backgroundColor);\n targetElement.style(\"box-shadow\", target.__old_boxshadow);\n context\n .resize({\n width: targetParentBox.width - targetPaddingLeft - targetPaddingRight,\n height: targetParentBox.height - targetPaddingTop - targetPaddingBottom\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d0\").render();\n });\n } else {\n // Maximize this MegaChart\n target.__old_position = target.style.position;\n target.__old_zindex = target.style.zIndex;\n target.__old_boxshadow = target.style.boxShadow;\n target.__old_backgroundColor = context.element().style(\"background-color\");\n const grid = d3Select(node).datum() as Grid;\n const gridTarget = grid.target();\n const gridBox = grid ? gridTarget.getBoundingClientRect() : node.getBoundingClientRect();\n const gridPaddingTop = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const gridPaddingLeft = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const gridPaddingRight = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const gridPaddingBottom = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement\n .style(\"position\", \"fixed\")\n .style(\"z-index\", 999999)\n .style(\"box-shadow\", \"0 8px 8px 0 rgba(0,0,0,.14),0 12px 4px -8px rgba(0,0,0,.2),0 4px 20px 0 rgba(0,0,0,.12)\")\n .style(\"background-color\", target.__old_backgroundColor)\n .transition()// .duration(3000)\n .style(\"top\", (gridBox.top + gridPaddingTop) + \"px\")\n .style(\"left\", (gridBox.left + gridPaddingLeft) + \"px\")\n .style(\"width\", (gridBox.width - gridPaddingLeft - gridPaddingRight) + \"px\")\n .style(\"height\", (gridBox.height - gridPaddingTop - gridPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"background-color\", context.maximizedBackgroundColor());\n context\n .resize({\n width: (gridBox.width - gridPaddingLeft - gridPaddingRight),\n height: (gridBox.height - gridPaddingTop - gridPaddingBottom)\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d1\").render();\n });\n }\n\n d3Select(target).classed(\"__hpccisMaximized\", !isMaximized);\n };\n\n this._legendButton = new Input()\n .classed({ \"composite_MegaChart-legend\": true })\n .id(this.id() + \"_legend\")\n .type(\"checkbox\")\n .inlineLabel(\"Legend: \")\n ;\n this._legendButton.click = function (a) {\n context.render();\n };\n\n this._chartTypeSelect = new Select()\n .classed({ \"composite_MegaChart-chartType\": true })\n .id(this.id() + \"_chartType\")\n .selectOptions(this._allChartTypes.map(function (a) { return [a.id, a.display]; }))\n .value(this.chartType())\n ;\n this._chartTypeSelect.change = function (a) {\n context.chartType(a.value()).render();\n };\n\n this.setContent(\"center\", this._chart);\n\n this._legend\n .targetWidget(this._chart)\n .orientation([\"top\", \"bottom\"].indexOf(this.legendPosition()) !== -1 ? \"horizontal\" : \"vertical\")\n .fixedSize(true)\n ;\n\n this._prevLegendPosition = this.legendPosition();\n\n if (this.valueAxisTitle()) {\n this.setContent(\"left\", this._valueTitle.rotation(-90)).leftShrinkWrap(true);\n }\n if (this.domainAxisTitle()) {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n\n if (this.legendPosition() !== \"none\") {\n this.setContent(this.legendPosition(), this._legend)[this.legendPosition() + \"ShrinkWrap\"](true);\n }\n }\n\n update(domNode, element) {\n function showHideButton(twArr2, button, show) {\n if (show && twArr2.indexOf(button) === -1) {\n twArr2.push(button);\n } else if (!show) {\n const idx = twArr2.indexOf(button);\n if (idx >= 0) {\n twArr2.splice(idx, 1);\n }\n }\n }\n\n if (this._chart && typeof this._chart.hideRowOnLegendClick === \"function\") {\n this._chart.hideRowOnLegendClick(this.hideRowOnLegendClick());\n }\n\n this._dataCount.html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\");\n\n this._chartTypeSelect.value(this.chartType());\n const twArr = this.toolbarWidgets();\n showHideButton(twArr, this._csvButton, this.showCSV());\n showHideButton(twArr, this._maximizeButton, this.showMaximize());\n showHideButton(twArr, this._legendButton, this.toolbarShowLegend());\n showHideButton(twArr, this._chartTypeSelect, this.showChartSelect());\n showHideButton(twArr, this._infoButton, this.showInfoButton());\n showHideButton(twArr, this._dataCount, this.showCount());\n this.toolbarWidgets(twArr);\n\n if (this._prevShowToolbar !== this.showToolbar()) {\n this.setContent(\"top\", this.showToolbar() ? this._toolbar : null);\n this._prevShowToolbar = this.showToolbar();\n }\n\n // TODO: Proxy + themes not working...\n this._toolbar\n .fontSize(this.titleFontSize())\n .fontColor(this.titleFontColor())\n .fontFamily(this.titleFontFamily())\n .fontBold(this.titleFontBold())\n .backgroundColor(this.titleBackgroundColor())\n ;\n\n this._chart\n .data(this.data());\n\n if (this._chart.chartType() !== this.chartType()) {\n this._chart.chartType(this.chartType());\n }\n\n let legendPosition = this.legendPosition();\n if (this.toolbarShowLegend() && !this._legendButton.checked()) {\n legendPosition = \"none\";\n }\n if (this._prevLegendPosition !== legendPosition) {\n if (this._prevLegendPosition !== \"none\") {\n this.clearContent(this._prevLegendPosition);\n }\n this._prevLegendPosition = legendPosition;\n if (legendPosition !== \"none\") {\n this._legend = new Legend().targetWidget(this.getContent(\"center\").fixedSize(true));\n this.setContent(legendPosition, this._legend);\n this._legend.orientation([\"top\", \"bottom\"].indexOf(legendPosition) !== -1 ? \"horizontal\" : \"vertical\");\n }\n }\n this._contentClasses = this.getContentClasses();\n\n if (this.valueAxisTitle() && this._contentClasses.left !== \"common_Text\") {\n if (legendPosition !== \"left\") {\n this.setContent(\"left\", this._valueTitle.rotation(-90));\n }\n }\n if (this.domainAxisTitle() && this._contentClasses.bottom !== \"common_Text\") {\n if (legendPosition !== \"bottom\") {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n }\n\n this._legend.dataFamily(this._chart.getChartDataFamily());\n\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getContentClasses() {\n const obj: any = {};\n const t = this.getContent(\"top\");\n const r = this.getContent(\"right\");\n const b = this.getContent(\"bottom\");\n const l = this.getContent(\"left\");\n obj.top = t !== null ? t.classID() : undefined;\n obj.right = r !== null ? r.classID() : undefined;\n obj.bottom = b !== null ? b.classID() : undefined;\n obj.left = l !== null ? l.classID() : undefined;\n return obj;\n }\n\n serializeState() {\n const state: any = {\n title: this.title(),\n data: this.data()\n };\n const chart = this.chart();\n if (chart) {\n if (chart.serializeState) {\n state.chart = chart.serializeState();\n delete state.chart.data;\n }\n }\n return state;\n }\n\n deserializeState(state) {\n if (state) {\n this\n .title(state.title)\n .data(state.data)\n ;\n const chart = this.chart();\n if (chart && state.chart) {\n if (chart.serializeState) {\n chart.deserializeState(state.chart);\n }\n }\n }\n return this;\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n vertex_click(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex click: \" + more.vertex.id());\n }\n }\n\n vertex_dblclick(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex double click: \" + more.vertex.id());\n }\n }\n\n edge_click(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge click: \" + more.edge.id());\n }\n }\n\n edge_dblclick(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge double click: \" + more.edge.id());\n }\n }\n\n hideRowOnLegendClick: { (): boolean; (_: boolean): MegaChart };\n hideRowOnLegendClick_exists: () => boolean;\n showToolbar: { (): boolean; (_: boolean): MegaChart };\n showToolbar_exists: () => boolean;\n titleFontSize: { (): number; (_: number): MegaChart };\n titleFontSize_exists: () => boolean;\n titleFontColor: { (): string; (_: string): MegaChart };\n titleFontColor_exists: () => boolean;\n titleFontFamily: { (): string; (_: string): MegaChart };\n titleFontFamily_exists: () => boolean;\n titleFontBold: { (): boolean; (_: boolean): MegaChart };\n titleFontBold_exists: () => boolean;\n titleBackgroundColor: { (): string; (_: string): MegaChart };\n titleBackgroundColor_exists: () => boolean;\n maximizedBackgroundColor: { (): string; (_: string): MegaChart };\n maximizedBackgroundColor_exists: () => boolean;\n showChartSelect: { (): boolean; (_: boolean): MegaChart };\n showChartSelect_exists: () => boolean;\n showCSV: { (): boolean; (_: boolean): MegaChart };\n showCSV_exists: () => boolean;\n showCount: { (): boolean; (_: boolean): MegaChart };\n showCount_exists: () => boolean;\n showMaximize: { (): boolean; (_: boolean): MegaChart };\n showMaximize_exists: () => boolean;\n toolbarShowLegend: { (): boolean; (_: boolean): MegaChart };\n toolbarShowLegend_exists: () => boolean;\n showInfoButton: { (): boolean; (_: boolean): MegaChart };\n showInfoButton_exists: () => boolean;\n infoIcon: { (): string; (_: string): MegaChart };\n infoIcon_exists: () => boolean;\n legendPosition: { (): string; (_: string): MegaChart };\n legendPosition_exists: () => boolean;\n\n title: { (): string; (_: string): MegaChart };\n title_exists: () => boolean;\n\n domainAxisTitle: { (): string; (_: string): MegaChart };\n domainAxisTitle_exists: () => boolean;\n valueAxisTitle: { (): string; (_: string): MegaChart };\n valueAxisTitle_exists: () => boolean;\n\n chartType: { (): string; (_: string): MegaChart };\n chartType_exists: () => boolean;\n chart: { (): any; (_: any): MegaChart };\n chart_exists: () => boolean;\n}\nMegaChart.prototype._class += \" composite_MegaChart\";\n\nMegaChart.prototype._1DChartTypes = MultiChart.prototype._1DChartTypes;\nMegaChart.prototype._2DChartTypes = MultiChart.prototype._2DChartTypes;\nMegaChart.prototype._NDChartTypes = MultiChart.prototype._NDChartTypes;\nMegaChart.prototype._anyChartTypes = MultiChart.prototype._anyChartTypes;\nMegaChart.prototype._allChartTypes = MultiChart.prototype._allChartTypes;\n\nMegaChart.prototype.publishReset();\n\nMegaChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showToolbar\", true, \"boolean\", \"Enable/Disable Toolbar widget\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"title\", \"_toolbar\", \"title\");\nMegaChart.prototype.publish(\"ddlParamsFormat\", \"\", \"string\", \"DDL Param Format '{fname}, {lname}'\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleBackgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\nMegaChart.prototype.publish(\"maximizedBackgroundColor\", \"#FFFFFF\", \"html-color\", \"Background Color while maximized\", null, { tags: [\"Intermediate\"], optional: true });\n\nMegaChart.prototype.publish(\"showChartSelect\", true, \"boolean\", \"Show/Hide the chartType dropdown in the toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCSV\", true, \"boolean\", \"Show/Hide CSV button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCount\", false, \"boolean\", \"Show/Hide Data Count\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showMaximize\", false, \"boolean\", \"Show/Hide Maximize button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"toolbarShowLegend\", false, \"boolean\", \"Show/Hide Legend button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showInfoButton\", false, \"boolean\", \"Show/Hide Info button in toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"infoIcon\", \"\\uf05a\", \"string\", \"Help Icon\", null, { tags: [\"Basic\"] });\n\nMegaChart.prototype.publish(\"legendPosition\", \"none\", \"set\", \"Position of the Legend widget\", [\"none\", \"top\", \"right\", \"bottom\", \"left\"], { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"legendFormat\", \"_legend\", \"rainbowFormat\");\nMegaChart.prototype.publishProxy(\"legendBins\", \"_legend\", \"rainbowBins\");\n\nMegaChart.prototype.publishProxy(\"domainAxisTitle\", \"_domainTitle\", \"text\");\nMegaChart.prototype.publishProxy(\"valueAxisTitle\", \"_valueTitle\", \"text\");\n\nMegaChart.prototype.publishProxy(\"chartType\", \"_chart\", \"chartType\");\nMegaChart.prototype.publishProxy(\"chart\", \"_chart\", \"chart\");\n", "(function(){\n if (!document.getElementById('e075cdb6')) {\n var e = document.createElement('style');\n e.id = 'e075cdb6';\n e.textContent = `.composite_MegaChart-Info,\n.composite_MegaChart-Info *,\n.composite_MegaChart-Maximize,\n.composite_MegaChart-Maximize *{\n font-family: FontAwesome;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { Platform, Utility, Widget } from \"@hpcc-js/common\";\nimport { Persist } from \"@hpcc-js/other\";\nimport { requireWidget } from \"./Utility.ts\";\n\nexport function retrofit_114_serialization(state, replacement_version) {\n replacement_version = !replacement_version || replacement_version === \"1.14.2-dev\" ? \"1.18.0\" : replacement_version;\n if (!state.__version) return state;\n const state_version_obj = Utility.parseVersionString(state.__version);\n const target_version_obj = Utility.parseVersionString(replacement_version);\n if (state_version_obj.major === 1 && state_version_obj.minor === 14) {\n console.info(\"Upgrading old persist from \" + state.__version + \" to \" + replacement_version);\n let _json_str = JSON.stringify(state);\n _json_str = _json_str.split('\"' + state.__version).join('\"' + replacement_version);\n\n const ret_obj = JSON.parse(_json_str);\n if (ret_obj.__properties && ret_obj.__properties.content) {\n ret_obj.__properties.content.forEach(function (n) {// FOR EACH top tier layout_Cell\n if (JSON.stringify(n).split(\"graph_Graph\").length > 1 && target_version_obj.minor >= 16) {\n n.__properties.widget.__id = n.__properties.widget.__properties.widget.__id;\n n.__properties.widget.__class = \"composite_MegaChart\";\n n.__properties.widget.__properties.showCSV = false;\n n.__properties.widget.__properties.chartType = \"GRAPH\";\n n.__properties.widget.__properties.chart = n.__properties.widget.__properties.widget;\n delete n.__properties.widget.__properties.chart.__id;\n delete n.__properties.widget.__properties.widget;\n }\n if (\"undefined\" === typeof n.__properties.fields) {\n n.__properties.fields = [];\n }\n });\n }\n return ret_obj;\n } else {\n return state;\n }\n}\n\nexport function deserializeFromObject(widget, state) {\n const promises = [];\n Persist.widgetPropertyWalker(widget, null, (w, item) => {\n w[item.id + \"_reset\"]();\n if (state.__properties[item.id] !== undefined) {\n switch (item.type) {\n case \"widget\":\n const widgetKey = item.id;\n promises.push(create(state.__properties[item.id]).then((w2: any) => {\n w2._owner = w;\n w[widgetKey](w2);\n return w2;\n }));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgetArrayKey = item.id;\n const widgetStateArray = state.__properties[item.id];\n if (widgetStateArray.length) {\n const arrPromises = [];\n for (const widgetState of widgetStateArray) {\n arrPromises.push(create(widgetState).then((widgetItem: any) => {\n widgetItem._owner = w;\n return widgetItem;\n }));\n }\n promises.push(Promise.all(arrPromises).then(widgetArray => {\n w[widgetArrayKey](widgetArray);\n }));\n }\n break;\n default:\n w[item.id](state.__properties[item.id]);\n break;\n }\n }\n });\n return Promise.all(promises).then(widgets => {\n if (state.__data) {\n for (const key in state.__data) {\n if (state.__data.HasOwnProperty(key)) {\n switch (key) {\n case \"data\":\n widget.data(state.__data[key]);\n break;\n default:\n console.warn(\"Unexpected __data item: \" + key);\n widget[key](state.__data[key]);\n break;\n }\n }\n }\n }\n if (state.__state) {\n if (widget.deserializeState) {\n widget.deserializeState(state.__state);\n } else if (state.__state.data && widget.data) {\n widget.data(state.__state.data);\n }\n }\n return widget;\n });\n}\n\nexport function deserialize(widget, state) {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && widget._id !== state.__id) {\n console.warn(\"Deserialize: IDs do not match - \" + widget._id);\n }\n deserializeFromObject(widget, state);\n}\n\nexport function create(state: any): Promise<Widget> {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n state = retrofit_114_serialization(state, Platform.version());\n return requireWidget(state.__class).then((WidgetClass: any) => {\n const widget = new WidgetClass();\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && state.__id.indexOf(\"_pe\") !== 0) {\n widget._id = state.__id;\n }\n return deserializeFromObject(widget, state);\n }).catch(function (e) {\n console.error(\"Persist.create: ***exception***\");\n console.error(e);\n });\n}\n\nexport function clone(widget) {\n create(Persist.serializeToObject(widget, undefined, true, true));\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "HTMLWidget", "HTMLWidget", "FAChar", "d3Event", "Platform", "d3Select", "d3SelectAll", "Utility", "d3Drag", "Button", "IconBar", "ProgressBar", "Spacer", "SVGWidget", "Text", "TitleBar", "ToggleButton", "HTMLWidget", "format", "timeFormat", "timeParse", "slice", "options", "vnodeId", "isValidElement", "rerenderQueue", "prevDebounce", "defer", "depthSort", "eventClock", "eventProxy", "eventProxyCapture", "i", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "isArray", "Array", "assign", "obj", "props", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "constructor", "__v", "__i", "__u", "Fragment", "BaseComponent", "context", "this", "getDomSibling", "childIndex", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "push", "process", "__r", "debounceRendering", "renderQueueLength", "component", "newVNode", "oldVNode", "oldDom", "commitQueue", "refQueue", "sort", "shift", "__P", "diff", "__n", "namespaceURI", "commitRoot", "diffChildren", "parentDom", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "namespace", "excessDomChildren", "isHydrating", "childVNode", "newDom", "firstChildDom", "oldChildren", "newChildrenLength", "constructNewChildrenArray", "applyRef", "insert", "nextSibling", "skewedIndex", "matchingIndex", "oldChildrenLength", "remainingOldChildren", "skew", "String", "findMatchingIndex", "unmount", "parentVNode", "contains", "insertBefore", "nodeType", "toChildArray", "out", "some", "x", "y", "setStyle", "style", "value", "setProperty", "test", "dom", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "addEventListener", "removeEventListener", "e", "removeAttribute", "setAttribute", "createEventProxy", "eventHandler", "_dispatched", "event", "tmp", "isNew", "oldProps", "oldState", "snapshot", "clearProcessingException", "newProps", "isClassComponent", "provider", "componentContext", "renderHook", "count", "newType", "outer", "prototype", "render", "contextType", "__E", "doRender", "sub", "state", "__h", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "MODE_HYDRATE", "indexOf", "diffElementNodes", "diffed", "root", "cb", "newHtml", "oldHtml", "newChildren", "inputValue", "checked", "localName", "document", "createTextNode", "createElementNS", "is", "__m", "data", "childNodes", "attributes", "__html", "innerHTML", "hasRefUnmount", "current", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "__name", "subs", "ctx", "Set", "_props", "forEach", "add", "old", "delete", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "undefined", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "currentIndex", "currentComponent", "previousComponent", "prevRaf", "currentHook", "afterPaintEffects", "_options", "oldBeforeDiff", "oldBeforeRender", "oldAfterDiff", "oldCommit", "oldBeforeUnmount", "oldRoot", "getHookState", "index", "hooks", "__H", "useState", "initialState", "useReducer", "invokeOrReturn", "reducer", "init", "hookState", "_reducer", "action", "currentValue", "__N", "nextValue", "_hasScuFromHooks", "updateHookState", "p", "stateHooks", "filter", "every", "prevScu", "shouldUpdate", "hookItem", "prevCWU", "useEffect", "args", "argsChanged", "_pendingArgs", "useLayoutEffect", "useRef", "initialValue", "useMemo", "useImperativeHandle", "createHandle", "concat", "factory", "useCallback", "useContext", "useId", "mask", "flushAfterPaintEffects", "invokeCleanup", "invokeEffect", "requestAnimationFrame", "afterNextFrame", "hasErrored", "HAS_RAF", "raf", "done", "clearTimeout", "timeout", "cancelAnimationFrame", "hook", "comp", "cleanup", "oldArgs", "newArgs", "arg", "f", "shallowDiffers", "PureComponent", "memo", "comparer", "nextProps", "updateRef", "Memoed", "displayName", "isReactComponent", "__f", "Component", "isPureReactComponent", "oldDiffHook", "REACT_FORWARD_SYMBOL", "Symbol", "for", "forwardRef", "fn", "Forwarded", "result", "$$typeof", "oldCatchError", "oldUnmount", "detachedClone", "detachedParent", "effect", "map", "removeOriginal", "originalParent", "appendChild", "Suspense", "_suspenders", "suspended", "__a", "SuspenseList", "_next", "_map", "__R", "promise", "suspendingVNode", "suspendingComponent", "resolved", "onResolved", "onSuspensionComplete", "suspendedVNode", "__O", "pop", "detachedComponent", "fallback", "list", "revealOrder", "size", "delegated", "get", "unsuspend", "wrappedUnsuspend", "Map", "reverse", "set", "_this", "REACT_ELEMENT_TYPE", "CAMEL_PROPS", "ON_ANI", "CAMEL_REPLACE", "IS_DOM", "onChangeInputType", "parent", "textContent", "preactRender", "Object", "defineProperty", "configurable", "v", "writable", "oldEventHook", "empty", "isPropagationStopped", "cancelBubble", "isDefaultPrevented", "defaultPrevented", "persist", "nativeEvent", "classNameDescriptorNonEnumberable", "enumerable", "class", "oldVNodeHook", "isNonDashedType", "lowerCased", "multiple", "selected", "className", "oldDiffed", "unmountComponentAtNode", "container", "flushSync", "t", "n", "clsx", "clsx_default", "isStaticChildren", "__source", "__self", "getColSpan", "column", "lastFrozenColumnIndex", "colSpan", "Number", "isInteger", "frozen", "idx", "stopPropagation", "scrollIntoView", "element", "inline", "block", "createCellEvent", "cellEvent", "preventGridDefault", "isGridDefaultPrevented", "setPrototypeOf", "getPrototypeOf", "nonInputKeys", "isCtrlKeyHeldDown", "ctrlKey", "metaKey", "isDefaultCellInput", "keyCode", "vKey", "has", "onEditorNavigation", "target", "HTMLInputElement", "HTMLTextAreaElement", "HTMLSelectElement", "closest", "querySelectorAll", "measuringCellClassname", "renderMeasuringCells", "viewportColumns", "minWidth", "maxWidth", "_jsx", "gridColumnStart", "isSelectedCellEditable", "selectedPosition", "columns", "rows", "row", "rowIdx", "isCellEditableUtil", "renderEditCell", "editable", "getSelectedCellColSpan", "topSummaryRows", "bottomSummaryRows", "mainHeaderRowIdx", "topSummaryRowsCount", "getNextSelectedCellPosition", "moveUp", "moveNext", "cellNavigationMode", "colSpanColumns", "minRowIdx", "maxRowIdx", "currentPosition", "currentIdx", "currentRowIdx", "nextPosition", "isCellWithinBounds", "nextIdx", "nextRowIdx", "columnsCount", "setColSpan", "colIdx", "getParentRowIdx", "level", "setHeaderGroupColAndRowSpan", "parentRowIdx", "found", "nextParentRowIdx", "canExitGrid", "maxColIdx", "shiftKey", "cell", "cellClassname", "cellFrozen", "cellFrozenClassname", "getRowStyle", "getHeaderCellStyle", "rowSpan", "gridRowEnd", "paddingBlockStart", "insetBlockStart", "gridRowStart", "getCellStyle", "gridColumnEnd", "insetInlineStart", "getCellClassname", "extraClasses", "min", "max", "floor", "sign", "abs", "Math", "assertIsValidKeyGetter", "keyGetter", "Error", "clampColumnWidth", "width", "getHeaderCellRowSpan", "checkbox", "checkboxClassname", "renderCheckbox", "onChange", "indeterminate", "handleChange", "el", "groupCellContent", "groupCellContentClassname", "caret", "caretClassname", "renderValue", "DataGridDefaultRenderersContext", "DataGridDefaultRenderersProvider", "useDefaultRenderers", "SelectCellFormatter", "tabIndex", "disabled", "ariaLabel", "ariaLabelledBy", "RowSelectionContext", "RowSelectionProvider", "RowSelectionChangeContext", "RowSelectionChangeProvider", "useRowSelection", "rowSelectionContext", "rowSelectionChangeContext", "isRowSelectionDisabled", "isRowSelected", "onRowSelectionChange", "HeaderRowSelectionContext", "HeaderRowSelectionProvider", "HeaderRowSelectionChangeContext", "HeaderRowSelectionChangeProvider", "useHeaderRowSelection", "headerRowSelectionContext", "headerRowSelectionChangeContext", "isIndeterminate", "SELECT_COLUMN_KEY", "HeaderRenderer", "SelectFormatter", "isShiftClick", "SelectGroupFormatter", "SelectColumn", "resizable", "sortable", "renderHeaderCell", "renderCell", "renderGroupCell", "DEFAULT_COLUMN_WIDTH", "DEFAULT_COLUMN_MIN_WIDTH", "useCalculatedColumns", "rawColumns", "defaultColumnOptions", "getColumnWidth", "viewportWidth", "scrollLeft", "enableVirtualization", "defaultWidth", "defaultMinWidth", "defaultMaxWidth", "defaultCellRenderer", "defaultSortable", "defaultResizable", "defaultDraggable", "draggable", "headerRowsCount", "collectColumns", "rawColumn", "calculatedColumnParent", "headerCellClass", "aKey", "frozenA", "bKey", "frozenB", "updateColumnParent", "templateColumns", "layoutCssVars", "totalFrozenColumnWidth", "columnMetrics", "left", "columnMetric", "colOverscanStartIdx", "colOverscanEndIdx", "viewportLeft", "viewportRight", "lastColIdx", "firstUnfrozenColumnIdx", "colVisibleStartIdx", "colVisibleEndIdx", "window", "useOriginalLayoutEffect", "useColumnWidths", "gridRef", "gridWidth", "resizedColumnWidths", "measuredColumnWidths", "setResizedColumnWidths", "setMeasuredColumnWidths", "onColumnResize", "prevGridWidthRef", "columnsCanFlex", "ignorePreviouslyMeasuredColumns", "newTemplateColumns", "columnsToMeasure", "gridTemplateColumns", "join", "updateMeasuredWidths", "newMeasuredColumnWidths", "hasChanges", "measuredWidth", "measureColumnWidth", "handleColumnResize", "nextWidth", "resizingKey", "newResizedColumnWidths", "selector", "CSS", "escape", "querySelector", "getBoundingClientRect", "useGridDimensions", "inlineSize", "setInlineSize", "blockSize", "setBlockSize", "horizontalScrollbarHeight", "setHorizontalScrollbarHeight", "ResizeObserver", "clientWidth", "clientHeight", "offsetWidth", "offsetHeight", "height", "initialHorizontalScrollbarHeight", "initialWidth", "initialHeight", "resizeObserver", "entries", "contentBoxSize", "observe", "disconnect", "useLatestFunc", "callbackFn", "useRovingTabIndex", "isSelected", "isChildFocused", "setIsChildFocused", "onFocus", "currentTarget", "childTabIndex", "useViewportColumns", "rowOverscanStartIdx", "rowOverscanEndIdx", "startIdx", "updateStartIdx", "useViewportRows", "rowHeight", "scrollTop", "totalRowHeight", "gridTemplateRows", "getRowTop", "getRowHeight", "findRowIdx", "offset", "rowPositions", "currentRowHeight", "position", "top", "validateRowIdx", "start", "end", "middle", "currentOffset", "rowVisibleStartIdx", "rowVisibleEndIdx", "overscanThreshold", "cellDragHandle", "cellDragHandleFrozenClassname", "cellDragHandleClassname", "DragHandle", "columnWidth", "isLastRow", "latestDraggedOverRowIdx", "isCellEditable", "onRowsChange", "onFill", "onClick", "setDragging", "setDraggedOverRowIdx", "handleMouseDown", "preventDefault", "buttons", "onMouseOver", "onMouseUp", "handleDragEnd", "overRowIdx", "startRowIndex", "endRowIndex", "updateRows", "handleDoubleClick", "startRowIdx", "endRowIdx", "sourceRow", "updatedRows", "indexes", "updatedRow", "columnKey", "targetRow", "getStyle", "marginEnd", "isLastColumn", "marginInlineEnd", "marginBlockEnd", "onMouseDown", "onDoubleClick", "cellEditing", "EditCell", "onRowChange", "closeEditor", "onKeyDown", "navigate", "frameRequestRef", "commitOnOutsideClick", "editorOptions", "commitOnOutsideMouseDown", "onClose", "onWindowCaptureMouseDown", "capture", "cancelFrameRequest", "handleKeyDown", "mode", "commitChanges", "shouldFocusCell", "onEditorRowChange", "commitChangesAndFocus", "cellClass", "displayCellContent", "role", "onMouseDownCapture", "_jsxs", "_Fragment", "GroupedColumnHeaderCell", "isCellSelected", "selectCell", "headerSortCellClassname", "headerSortName", "headerSortNameClassname", "sortDirection", "priority", "SortableHeaderCell", "renderSortStatus", "cellSortableClassname", "cellResizable", "cellResizableClassname", "resizeHandleClassname", "cellDraggableClassname", "cellDragging", "cellDraggingClassname", "cellOver", "cellOverClassname", "HeaderCell", "onColumnsReorder", "sortColumns", "onSortColumnsChange", "shouldFocusGrid", "direction", "dragDropKey", "isDragging", "setIsDragging", "isOver", "setIsOver", "isRtl", "sortIndex", "findIndex", "sortColumn", "ariaSort", "defaultRenderHeaderCell", "onPointerDown", "pointerType", "pointerId", "headerCell", "parentElement", "right", "clientX", "hasDoubleClicked", "onPointerMove", "newWidth", "onLostPointerCapture", "setPointerCapture", "onSort", "ctrlClick", "sortDescendingFirst", "nextSort", "nextSortColumn", "nextSortColumns", "splice", "handleFocus", "onDragStart", "dataTransfer", "setData", "dropEffect", "onDragEnd", "onDragOver", "onDrop", "types", "includes", "sourceKey", "getData", "onDragEnter", "isEventPertinent", "onDragLeave", "draggableProps", "relatedTarget", "rowClassname", "rowSelected", "rowSelectedClassname", "rowSelectedWithFrozenCell", "topSummaryRowClassname", "bottomSummaryRowClassname", "headerRow", "headerRowClassname", "HeaderRow", "selectedCellIdx", "cells", "HeaderRow$1", "GroupedColumnHeaderRow", "renderedParents", "GroupedColumnHeaderRow$1", "cellCopied", "cellCopiedClassname", "cellDraggedOver", "cellDraggedOverClassname", "Cell", "isCopied", "isDraggedOver", "onContextMenu", "isEditable", "selectCellWrapper", "openEditor", "handleClick", "handleContextMenu", "handleRowChange", "newRow", "Cell$1", "Row", "copiedCellIdx", "draggedOverCellIdx", "selectedCellEditor", "onCellClick", "onCellDoubleClick", "onCellContextMenu", "rowClass", "onMouseEnter", "handleDragEnter", "selectionValue", "RowComponent", "defaultRenderRow", "ScrollToCell", "scrollToPosition", "gridElement", "setScrollToCellPosition", "removeScrollToCell", "observer", "IntersectionObserver", "threshold", "gridColumn", "gridRow", "arrow", "arrowClassname", "renderSortIcon", "renderSortPriority", "viewBox", "d", "rootClassname", "viewportDragging", "viewportDraggingClassname", "focusSinkClassname", "focusSinkHeaderAndSummaryClassname", "summaryCellClassname", "SummaryCell", "summaryCellClass", "renderSummaryCell", "SummaryCell$1", "summaryRow", "topSummaryRow", "summaryRowClassname", "SummaryRow", "bottom", "isTop", "ariaRowIndex", "SummaryRow$1", "DataGrid", "rowKeyGetter", "rawRowHeight", "headerRowHeight", "rawHeaderRowHeight", "summaryRowHeight", "rawSummaryRowHeight", "selectedRows", "onSelectedRowsChange", "onCellKeyDown", "onSelectedCellChange", "onScroll", "onCopy", "onPaste", "rawEnableVirtualization", "renderers", "rawDirection", "rawRole", "ariaDescribedBy", "rawAriaRowCount", "testId", "defaultRenderers", "renderRow", "defaultRenderSortStatus", "defaultRenderCheckbox", "noRowsFallback", "setScrollTop", "setScrollLeft", "copiedCell", "setCopiedCell", "draggedOverRowIdx", "setOverRowIdx", "setScrollToPosition", "gridHeight", "bottomSummaryRowsCount", "summaryRowsCount", "headerAndTopSummaryRowsCount", "groupedColumnHeaderRowsCount", "setSelectedPosition", "prevSelectedPosition", "lastSelectedRowIdx", "focusSinkRef", "shouldFocusCellRef", "isTreeGrid", "headerRowsHeight", "summaryRowsHeight", "isSelectable", "leftKey", "rightKey", "ariaRowCount", "defaultGridComponents", "headerSelectionValue", "hasSelectedRow", "hasUnselectedRow", "minColIdx", "selectedCellIsWithinSelectionBounds", "isCellWithinSelectionBounds", "selectedCellIsWithinViewportBounds", "isCellWithinViewportBounds", "scrollHeight", "handleColumnResizeLatest", "onColumnsReorderLastest", "onSortColumnsChangeLatest", "onCellClickLatest", "onCellDoubleClickLatest", "onCellContextMenuLatest", "selectHeaderRowLatest", "selectHeaderRow", "selectRowLatest", "selectRow", "handleFormatterRowChangeLatest", "updateRow", "selectCellLatest", "selectHeaderCellLatest", "isSamePosition", "focus", "preventScroll", "focusCellOrCellContent", "scrollToCell", "scrollToIdx", "scrollToRowIdx", "isRowIdxWithinViewportBounds", "newSelectedRows", "rowKey", "previousRowIdx", "step", "Element", "isCellEvent", "isRowEvent", "cKey", "getSelection", "isCollapsed", "handleCopy", "handlePaste", "handleCellInput", "handleScroll", "commitEditorChanges", "sourceColumnKey", "targetColumn", "updatedTargetRow", "targetColumnKey", "originalRow", "isColIdxWithinSelectionBounds", "isCellWithinEditBounds", "enableEditor", "samePosition", "getCellToScroll", "getNextPosition", "nextRowY", "nextSelectedCellPosition", "getDraggedOverCellIdx", "renderDragHandle", "getCellEditor", "getRowViewportColumns", "selectedColumn", "getViewportRows", "rowElements", "selectedIdx", "selectedRowIdx", "viewportRowIdx", "isRowOutsideViewport", "rowColumns", "templateRows", "isGroupRowFocused", "scrollPaddingInlineStart", "scrollPaddingBlock", "dir", "from", "_", "summaryRowIdx", "isSummaryRowSelected", "gridEl", "p1", "p2", "DataGrid$1", "groupRow", "groupRowClassname", "textEditorInternalClassname", "textEditorClassname", "useData", "widget", "T", "copyAndSort", "items", "attribute", "descending", "EmptyRowsRenderer", "message", "ReactTable", "table", "multiSelect", "columnTypes", "columnPatterns", "columnFormats", "listColumns", "setListColumns", "h", "setSortColumn", "setRows", "setSelectedRows", "formatter", "__hpcc_pattern", "__hpcc_format", "timeParse", "timeFormat", "format", "q", "futureSortColumn", "sorted", "isSortedDescending", "retVal", "val", "Table", "HTMLWidget", "pattern", "domNode", "$", "hn", "col", "sel", "d3Select", "instanceOfIHighlight", "Database", "Palette", "SVGWidget", "d3Format", "d3ScaleOrdinal", "ze", "Pe", "Ae", "Oe", "ke", "He", "Ie", "Fe", "HTMLWidget", "d3Event", "d3Drag", "Platform", "Utility", "Text", "require_gridList", "__commonJSMin", "exports", "module", "root", "factory", "GridList", "__name", "items", "options", "k", "_items", "_item", "i", "widthOfGrid", "output", "border", "item", "j", "lanes", "currentColumn", "position", "start", "fixedRow", "x", "y", "newCol", "newRow", "newPosition", "size", "width", "height", "initialItems", "idAttribute", "changedItems", "item1", "item2", "position1", "position2", "row", "col", "N", "GridCol", "collidingItems", "_gridList", "leftOfItem", "rightOfItem", "aboveOfItem", "belowOfItem", "collidingItem", "collidingPosition", "fixedItem", "fixedPosition", "tail", "otherItem", "otherPosition", "key", "value", "nr", "prefix", "e", "AbsoluteSurface", "HTMLWidget", "__name", "domNode", "element", "xPos", "yPos", "width", "height", "widgets", "d", "Accordion", "widget", "prepend", "protect", "contentArr", "arr", "i", "context", "FAChar", "this_id", "rows", "li", "wSize", "cSize", "Surface", "titleDiv", "widgetDiv", "element2", "titles", "surfaceButtons", "button", "idx", "el", "d3Select", "_d", "widgetSize", "obj", "w", "Cell", "_", "opacity", "indicatorBorderColor", "indicatorGlowColor", "otherElement", "otherWidget", "d3SelectAll", "Border", "paramId", "newVal", "oldVal", "Utility", "layoutObj", "cell", "sectionType", "layoutType", "retObj", "topSize", "topPerc", "bottomSize", "bottomPerc", "leftSize", "leftPerc", "rightSize", "rightPerc", "bcRect", "gridRect", "t", "_sectionPlacementObject", "b", "l", "r", "c", "contentWidget", "title", "id", "handle", "event", "d3Event", "handleElm", "xDelta", "yDelta", "_moveHandles", "handle2", "delta", "handles", "grabbedHandle", "handle3", "retVal", "Platform", "rowsUpdate", "drag", "d3Drag", "contentRect", "rect", "size", "n", "prevBox", "currBox", "WidgetDiv", "div", "getBBox", "availableHeight", "availableWidth", "overflowX", "overflowY", "Border2", "topElement", "centerElement", "leftElement", "rightElement", "bottomElement", "sectionA", "sectionB", "a", "callback", "topBBox", "bottomBBox", "leftBBox", "rightBBox", "bodyWidth", "bodyHeight", "centerOverflowX", "centerOverflowY", "scrollCenterX", "scrollCenterY", "promises", "Carousel", "active", "widgetElements", "update", "aw", "w2", "pi", "tau", "epsilon", "tauEpsilon", "Path", "path", "x", "y", "x1", "y1", "x2", "y2", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "h", "path_default", "constant_default", "halfPi", "circle_default", "cross_default", "tan30", "tan30_2", "diamond_default", "ka", "kr", "kx", "ky", "star_default", "s", "square_default", "sqrt3", "triangle_default", "k", "wye_default", "symbol_default", "type", "symbol", "buffer", "Me", "d3_identity", "d3_reverse", "mirror", "length", "d3_textWrapping", "text", "each", "select", "words", "split", "reverse", "word", "line", "lineNumber", "lineHeight", "attr", "parseFloat", "tspan", "append", "pop", "push", "p", "join", "node", "getComputedTextLength", "d3_mergeLabels", "gen", "labels", "domain", "range", "labelDelimiter", "_typeof", "customLabels", "genLength", "d3_linearLegend", "scale", "cells", "labelFormat", "data", "increment", "map", "d3_quantLegend", "invert", "invertExtent", "d3_ordinalLegend", "d3_cellOver", "cellDispatcher", "call", "d3_cellOut", "d3_cellClick", "helper", "shape", "shapes", "shapeHeight", "shapeWidth", "shapeRadius", "svg", "enter", "classPrefix", "labelWidth", "selectAll", "ascending", "ticks", "cellFilter", "filterCells", "label", "filter", "dataValues", "labelValues", "indexOf", "orient", "cellTrans", "textTrans", "labelAlign", "style", "dispatcher", "on", "Ge", "Ye", "Xe", "titleWidth", "titleText", "cellsSvg", "yOffset", "nodes", "xOffset", "Pe", "Oe", "color", "scaleLinear", "shapePadding", "useClass", "locale", "d3_defaultLocale", "specifier", "d3_defaultFormatSpecifier", "labelOffset", "d3_defaultDelimiter", "labelWrap", "legendDispatcher", "dispatch", "legend", "d3_calcType", "format", "legendG", "Zt", "d3_filterCells", "cellEnter", "at", "V", "d3_addEvents", "et", "exit", "transition", "remove", "N", "merge", "d3_drawShapes", "d3_addText", "textSize", "shapeSize", "feature", "textAlign", "cellSize", "Math", "max", "ct", "sum", "slice", "pt", "d3_placement", "d3_title", "arguments", "T", "formatLocale", "formatSpecifier", "g", "u", "toLowerCase", "textWrap", "value", "apply", "Legend", "SVGWidget", "owner", "Database", "row", "disabledCols", "anyDisabled", "col", "disabled", "key", "newProp", "oldProp", "source", "Palette", "sel", "palette", "dataArr", "total", "maxLabelWidth", "colLength", "columns", "fillColor", "val", "acc", "d3Format", "steps", "weightMin", "weightMax", "stepWeightDiff", "mid", "radius", "strokeWidth", "ordinal", "d3ScaleOrdinal", "legendCellsBbox", "offsetX", "offsetY", "extraWidth", "extraHeight", "legendTotal", "totalText", "totalOffsetX", "totalOffsetY", "circleSize", "disabledIdx", "instanceOfIHighlight", "rowData", "rowIdx", "_size", "bbox", "Modal", "relativeTarget", "modalRect", "headerRect", "header_h", "ChartPanel", "ProgressBar", "ToggleButton", "Text", "origCloseFunc", "Button", "selected", "Spacer", "TitleBar", "Table", "asDefault", "namePrefix", "nameSuffix", "column", "cssTag", "highlight", "scale_x", "scale_y", "x_is_smaller", "chart", "widgetIconBar", "IconBar", "buttons", "hiddenButtons", "iconDiv", "_node", "containerRect", "icon_top", "parentRect", "more", "tmpAny", "FlexGrid", "cachedSizes", "listItems", "flexBasis", "flexGrow", "_GridList", "ae", "qt", "GridList", "ut", "Grid", "rowSpan", "colSpan", "item", "origItem", "pos", "resize", "transitionDuration", "_noRender", "dimensions", "clientWidth", "cellLaneRatio", "laneWidth", "divItems", "lanesBackground", "lanes", "selectionObj", "layoutArr", "elem", "HorizontalList", "Layered", "placement", "widthRatio", "heightRatio", "content", "clientSize", "widgetPosition", "Popup", "visible", "left", "top", "Tabbed", "isActive", "surface", "tcBox", "tabs", "Toolbar", "childWidgets", "widgetClass", "toolbarBBox", "minX", "childBBox", "VerticalList", "IGraph", "INDChart", "HTMLWidget", "Utility", "d3Map", "Utility_exports", "__export", "requireWidget", "requireWidgets", "Utility", "requireWidget", "classID", "resolve", "_reject", "parsedClassID", "Utility", "__require", "Package", "Widget", "__name", "requireWidgets", "classIDs", "MultiChart", "HTMLWidget", "__name", "INDChart", "IGraph", "item", "newItem", "_", "retVal", "asDefault", "chartType", "callback", "classInfo", "Utility", "mod", "requireWidget", "WidgetClass", "oldContent", "context", "newContent", "size", "domNode", "element", "content", "d", "currChart", "key", "propKey", "_callback", "args", "d3Map", "_origChart", "_row", "_column", "_selected", "row", "column", "selected", "more", "newVal", "oldVal", "e", "Summary", "HTMLWidget", "__name", "domNode", "element", "MultiChartPanel", "f", "MultiChart", "_", "OnOff", "PropertyEditor", "e", "Dermatology", "z", "__name", "M", "PropertyEditor", "_", "widget", "domNode", "element", "context", "OnOff", "callback", "Text", "Utility", "Button", "Input", "Select", "Html", "Legend", "d3Select", "e", "MegaChart", "z", "__name", "MultiChart", "M", "Text", "Legend", "context", "_", "asDefault", "Utility", "domNode", "element", "Html", "Button", "a", "buttonWidget", "target", "node", "isMaximized", "d3Select", "parentGrid", "targetElement", "targetParentBox", "targetPaddingTop", "targetPaddingLeft", "targetPaddingRight", "targetPaddingBottom", "grid", "gridTarget", "gridBox", "gridPaddingTop", "gridPaddingLeft", "gridPaddingRight", "gridPaddingBottom", "Input", "Select", "showHideButton", "twArr2", "button", "show", "idx", "twArr", "legendPosition", "obj", "t", "r", "b", "state", "chart", "row", "column", "selected", "col", "sel", "more", "Persist_exports", "__export", "clone", "create", "deserialize", "deserializeFromObject", "retrofit_114_serialization", "Platform", "Utility", "Persist", "retrofit_114_serialization", "state", "replacement_version", "state_version_obj", "Utility", "target_version_obj", "_json_str", "ret_obj", "__name", "deserializeFromObject", "widget", "promises", "Persist", "w", "item", "widgetKey", "create", "w2", "widgetArrayKey", "widgetStateArray", "arrPromises", "widgetState", "widgetItem", "widgetArray", "widgets", "key", "deserialize", "Platform", "requireWidget", "WidgetClass", "clone"]
|
|
7
|
+
}
|