@devtable/dashboard 1.30.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,51 +1,24 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __objRest = (source, exclude) => {
21
- var target = {};
22
- for (var prop in source)
23
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
- target[prop] = source[prop];
25
- if (source != null && __getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(source)) {
27
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
- target[prop] = source[prop];
29
- }
30
- return target;
31
- };
32
3
  var __publicField = (obj, key, value) => {
33
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
34
5
  return value;
35
6
  };
36
- import React, { createContext, useContext, useReducer } from "react";
7
+ import React from "react";
37
8
  import _ from "lodash";
38
9
  import RGL, { WidthProvider } from "react-grid-layout";
39
- import { Box, Group, Button, Modal, Popover, Tooltip, Text, ActionIcon, TextInput, LoadingOverlay, Table, Select, useMantineTheme, ColorSwatch, Switch, Slider, SegmentedControl, NumberInput, ColorInput, Divider, Accordion, JsonInput, AppShell, Tabs, Menu, Container, Textarea } from "@mantine/core";
10
+ import { Popover, Tooltip, Group, Text, ActionIcon, Box, Button, TextInput, LoadingOverlay, Table, Select, useMantineTheme, ColorSwatch, Switch, Slider, SegmentedControl, NumberInput, ColorInput, Divider, Accordion, JsonInput, Modal, AppShell, Tabs, Menu, Container, Textarea } from "@mantine/core";
40
11
  import { useRequest } from "ahooks";
41
12
  import axios from "axios";
42
- import { InfoCircle, DeviceFloppy, Refresh, Trash, PlaylistAdd, ArrowsMaximize, Settings, Copy, Resize, Paint, PlayerPlay, Database, Recycle, Share, ArrowLeft } from "tabler-icons-react";
13
+ import { useModals, ModalsProvider } from "@mantine/modals";
14
+ import { InfoCircle, DeviceFloppy, Refresh, Trash, PlaylistAdd, ArrowsMaximize, Settings, Copy, PlayerPlay, Resize, Paint, Database, Recycle, Share, ArrowLeft } from "tabler-icons-react";
43
15
  import RichTextEditor, { RichTextEditor as RichTextEditor$1 } from "@mantine/rte";
44
- import { randomId, useInputState, useElementSize } from "@mantine/hooks";
16
+ import { useInputState, useElementSize, randomId } from "@mantine/hooks";
45
17
  import ReactEChartsCore from "echarts-for-react/lib/core";
46
18
  import * as echarts from "echarts/core";
47
19
  import { SunburstChart, BarChart, LineChart, ScatterChart, PieChart } from "echarts/charts";
48
20
  import { CanvasRenderer } from "echarts/renderers";
21
+ import { transform } from "echarts-stat";
49
22
  import { GridComponent, LegendComponent, TooltipComponent, VisualMapComponent } from "echarts/components";
50
23
  import numbro from "numbro";
51
24
  import "echarts-gl";
@@ -110,10 +83,11 @@ const APIClient = {
110
83
  baseURL: "http://localhost:31200",
111
84
  getRequest(method) {
112
85
  return (url, data, options2 = {}) => {
113
- const headers = __spreadValues({
86
+ const headers = {
114
87
  "X-Requested-With": "XMLHttpRequest",
115
- "Content-Type": options2.string ? "application/x-www-form-urlencoded" : "application/json"
116
- }, options2.headers);
88
+ "Content-Type": options2.string ? "application/x-www-form-urlencoded" : "application/json",
89
+ ...options2.headers
90
+ };
117
91
  const conf = {
118
92
  baseURL: this.baseURL,
119
93
  method,
@@ -155,7 +129,7 @@ const queryBySQL = ({ context, definitions, title, query }) => async () => {
155
129
  };
156
130
  async function listDataSources() {
157
131
  try {
158
- const res = await APIClient.getRequest("GET")("/datasource/list", {});
132
+ const res = await APIClient.getRequest("POST")("/datasource/list", {});
159
133
  return res;
160
134
  } catch (error) {
161
135
  console.error(error);
@@ -188,96 +162,23 @@ const initialContext$2 = {
188
162
  }
189
163
  };
190
164
  const PanelContext = React.createContext(initialContext$2);
191
- const ModalsContext = createContext(null);
192
- ModalsContext.displayName = "@mantine/modals/ModalsContext";
193
- function useModals() {
194
- const ctx = useContext(ModalsContext);
195
- if (!ctx) {
196
- throw new Error("[@mantine/modals] useModals hook was called outside of context, wrap your app with ModalsProvider component");
197
- }
198
- return ctx;
199
- }
200
- var __defProp$1 = Object.defineProperty;
201
- var __defProps$1 = Object.defineProperties;
202
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
203
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
204
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
205
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
206
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
207
- var __spreadValues$1 = (a, b) => {
208
- for (var prop in b || (b = {}))
209
- if (__hasOwnProp$1.call(b, prop))
210
- __defNormalProp$1(a, prop, b[prop]);
211
- if (__getOwnPropSymbols$1)
212
- for (var prop of __getOwnPropSymbols$1(b)) {
213
- if (__propIsEnum$1.call(b, prop))
214
- __defNormalProp$1(a, prop, b[prop]);
215
- }
216
- return a;
165
+ const initialContext$1 = {
166
+ addPanel: _.noop,
167
+ duplidatePanel: _.noop,
168
+ removePanelByID: _.noop,
169
+ viewPanelInFullScreen: _.noop,
170
+ inFullScreen: false
217
171
  };
218
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
219
- function ConfirmModal({
220
- id,
221
- cancelProps,
222
- confirmProps,
223
- labels = { cancel: "", confirm: "" },
224
- closeOnConfirm = true,
225
- closeOnCancel = true,
226
- groupProps,
227
- onCancel,
228
- onConfirm,
229
- children
230
- }) {
231
- const { cancel: cancelLabel, confirm: confirmLabel } = labels;
232
- const ctx = useModals();
233
- const handleCancel = (event) => {
234
- typeof (cancelProps == null ? void 0 : cancelProps.onClick) === "function" && (cancelProps == null ? void 0 : cancelProps.onClick(event));
235
- typeof onCancel === "function" && onCancel();
236
- closeOnCancel && ctx.closeModal(id);
237
- };
238
- const handleConfirm = (event) => {
239
- typeof (confirmProps == null ? void 0 : confirmProps.onClick) === "function" && (confirmProps == null ? void 0 : confirmProps.onClick(event));
240
- typeof onConfirm === "function" && onConfirm();
241
- closeOnConfirm && ctx.closeModal(id);
242
- };
243
- return /* @__PURE__ */ React.createElement(React.Fragment, null, children && /* @__PURE__ */ React.createElement(Box, {
244
- mb: "md"
245
- }, children), /* @__PURE__ */ React.createElement(Group, __spreadValues$1({
246
- position: "right"
247
- }, groupProps), /* @__PURE__ */ React.createElement(Button, __spreadProps$1(__spreadValues$1({
248
- variant: "default"
249
- }, cancelProps), {
250
- onClick: handleCancel
251
- }), (cancelProps == null ? void 0 : cancelProps.children) || cancelLabel), /* @__PURE__ */ React.createElement(Button, __spreadProps$1(__spreadValues$1({}, confirmProps), {
252
- onClick: handleConfirm
253
- }), (confirmProps == null ? void 0 : confirmProps.children) || confirmLabel)));
254
- }
255
- function modalsReducer(state, action) {
256
- switch (action.type) {
257
- case "OPEN": {
258
- return {
259
- current: action.payload,
260
- modals: [...state.modals, action.payload]
261
- };
262
- }
263
- case "CLOSE": {
264
- return {
265
- current: state.modals[state.modals.length - 2] || null,
266
- modals: state.modals.filter((m2) => m2.id !== action.payload)
267
- };
268
- }
269
- case "CLOSE_ALL": {
270
- return {
271
- current: state.current,
272
- modals: []
273
- };
274
- }
275
- default: {
276
- return state;
277
- }
172
+ const DashboardActionContext = React.createContext(initialContext$1);
173
+ const initialContext = {
174
+ sqlSnippets: [],
175
+ setSQLSnippets: () => {
176
+ },
177
+ queries: [],
178
+ setQueries: () => {
278
179
  }
279
- }
280
- var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
180
+ };
181
+ const DefinitionContext = React.createContext(initialContext);
281
182
  var jsxRuntime = { exports: {} };
282
183
  var reactJsxRuntime_production_min = {};
283
184
  /**
@@ -292,14 +193,14 @@ var reactJsxRuntime_production_min = {};
292
193
  var f = React, k = Symbol.for("react.element"), l = Symbol.for("react.fragment"), m = Object.prototype.hasOwnProperty, n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p = { key: true, ref: true, __self: true, __source: true };
293
194
  function q(c, a, g) {
294
195
  var b, d = {}, e = null, h = null;
295
- g !== void 0 && (e = "" + g);
296
- a.key !== void 0 && (e = "" + a.key);
297
- a.ref !== void 0 && (h = a.ref);
196
+ void 0 !== g && (e = "" + g);
197
+ void 0 !== a.key && (e = "" + a.key);
198
+ void 0 !== a.ref && (h = a.ref);
298
199
  for (b in a)
299
200
  m.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]);
300
201
  if (c && c.defaultProps)
301
202
  for (b in a = c.defaultProps, a)
302
- d[b] === void 0 && (d[b] = a[b]);
203
+ void 0 === d[b] && (d[b] = a[b]);
303
204
  return { $$typeof: k, type: c, key: e, ref: h, props: d, _owner: n.current };
304
205
  }
305
206
  reactJsxRuntime_production_min.Fragment = l;
@@ -311,242 +212,6 @@ reactJsxRuntime_production_min.jsxs = q;
311
212
  const jsx = jsxRuntime.exports.jsx;
312
213
  const jsxs = jsxRuntime.exports.jsxs;
313
214
  const Fragment = jsxRuntime.exports.Fragment;
314
- var __defProp2 = Object.defineProperty;
315
- var __defProps2 = Object.defineProperties;
316
- var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;
317
- var __getOwnPropSymbols2 = Object.getOwnPropertySymbols;
318
- var __hasOwnProp2 = Object.prototype.hasOwnProperty;
319
- var __propIsEnum2 = Object.prototype.propertyIsEnumerable;
320
- var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, {
321
- enumerable: true,
322
- configurable: true,
323
- writable: true,
324
- value
325
- }) : obj[key] = value;
326
- var __spreadValues2 = (a, b) => {
327
- for (var prop in b || (b = {}))
328
- if (__hasOwnProp2.call(b, prop))
329
- __defNormalProp2(a, prop, b[prop]);
330
- if (__getOwnPropSymbols2)
331
- for (var prop of __getOwnPropSymbols2(b)) {
332
- if (__propIsEnum2.call(b, prop))
333
- __defNormalProp2(a, prop, b[prop]);
334
- }
335
- return a;
336
- };
337
- var __spreadProps2 = (a, b) => __defProps2(a, __getOwnPropDescs2(b));
338
- var __objRest2 = (source, exclude) => {
339
- var target = {};
340
- for (var prop in source)
341
- if (__hasOwnProp2.call(source, prop) && exclude.indexOf(prop) < 0)
342
- target[prop] = source[prop];
343
- if (source != null && __getOwnPropSymbols2)
344
- for (var prop of __getOwnPropSymbols2(source)) {
345
- if (exclude.indexOf(prop) < 0 && __propIsEnum2.call(source, prop))
346
- target[prop] = source[prop];
347
- }
348
- return target;
349
- };
350
- function separateConfirmModalProps(props) {
351
- if (!props) {
352
- return {
353
- confirmProps: {},
354
- modalProps: {}
355
- };
356
- }
357
- const _a = props, {
358
- id,
359
- children,
360
- onCancel,
361
- onConfirm,
362
- closeOnConfirm,
363
- closeOnCancel,
364
- cancelProps,
365
- confirmProps,
366
- groupProps,
367
- labels
368
- } = _a, others = __objRest2(_a, ["id", "children", "onCancel", "onConfirm", "closeOnConfirm", "closeOnCancel", "cancelProps", "confirmProps", "groupProps", "labels"]);
369
- return {
370
- confirmProps: {
371
- id,
372
- children,
373
- onCancel,
374
- onConfirm,
375
- closeOnConfirm,
376
- closeOnCancel,
377
- cancelProps,
378
- confirmProps,
379
- groupProps,
380
- labels
381
- },
382
- modalProps: __spreadValues2({
383
- id
384
- }, others)
385
- };
386
- }
387
- function ModalsProvider({
388
- children,
389
- modalProps,
390
- labels,
391
- modals
392
- }) {
393
- const [state, dispatch] = useReducer(modalsReducer, {
394
- modals: [],
395
- current: null
396
- });
397
- const closeAll = (canceled) => {
398
- state.modals.forEach((modal) => {
399
- var _a, _b, _c, _d;
400
- if (modal.type === "confirm" && canceled) {
401
- (_b = (_a = modal.props) == null ? void 0 : _a.onCancel) == null ? void 0 : _b.call(_a);
402
- }
403
- (_d = (_c = modal.props) == null ? void 0 : _c.onClose) == null ? void 0 : _d.call(_c);
404
- });
405
- dispatch({
406
- type: "CLOSE_ALL"
407
- });
408
- };
409
- const openModal = (props) => {
410
- const id = props.id || randomId();
411
- dispatch({
412
- type: "OPEN",
413
- payload: {
414
- id,
415
- type: "content",
416
- props
417
- }
418
- });
419
- return id;
420
- };
421
- const openConfirmModal = (props) => {
422
- const id = props.id || randomId();
423
- dispatch({
424
- type: "OPEN",
425
- payload: {
426
- id,
427
- type: "confirm",
428
- props
429
- }
430
- });
431
- return id;
432
- };
433
- const openContextModal = (modal, props) => {
434
- const id = props.id || randomId();
435
- dispatch({
436
- type: "OPEN",
437
- payload: {
438
- id,
439
- type: "context",
440
- props,
441
- ctx: modal
442
- }
443
- });
444
- return id;
445
- };
446
- const closeModal = (id, canceled) => {
447
- var _a, _b, _c, _d;
448
- if (state.modals.length <= 1) {
449
- closeAll(canceled);
450
- return;
451
- }
452
- const modal = state.modals.find((item) => item.id === id);
453
- if ((modal == null ? void 0 : modal.type) === "confirm" && canceled) {
454
- (_b = (_a = modal.props) == null ? void 0 : _a.onCancel) == null ? void 0 : _b.call(_a);
455
- }
456
- (_d = (_c = modal == null ? void 0 : modal.props) == null ? void 0 : _c.onClose) == null ? void 0 : _d.call(_c);
457
- dispatch({
458
- type: "CLOSE",
459
- payload: modal.id
460
- });
461
- };
462
- const ctx = {
463
- modals: state.modals,
464
- openModal,
465
- openConfirmModal,
466
- openContextModal,
467
- closeModal,
468
- closeAll
469
- };
470
- const getCurrentModal = () => {
471
- var _a;
472
- switch ((_a = state.current) == null ? void 0 : _a.type) {
473
- case "context": {
474
- const _b = state.current.props, {
475
- innerProps
476
- } = _b, rest = __objRest2(_b, ["innerProps"]);
477
- const ContextModal = modals[state.current.ctx];
478
- return {
479
- modalProps: rest,
480
- content: /* @__PURE__ */ jsx(ContextModal, {
481
- innerProps,
482
- context: ctx,
483
- id: state.current.id
484
- })
485
- };
486
- }
487
- case "confirm": {
488
- const {
489
- modalProps: separatedModalProps,
490
- confirmProps: separatedConfirmProps
491
- } = separateConfirmModalProps(state.current.props);
492
- return {
493
- modalProps: separatedModalProps,
494
- content: /* @__PURE__ */ jsx(ConfirmModal, __spreadValues({}, __spreadProps2(__spreadValues2({}, separatedConfirmProps), {
495
- id: state.current.id,
496
- labels: state.current.props.labels || labels
497
- })))
498
- };
499
- }
500
- case "content": {
501
- const _c = state.current.props, {
502
- children: currentModalChildren
503
- } = _c, rest = __objRest2(_c, ["children"]);
504
- return {
505
- modalProps: rest,
506
- content: /* @__PURE__ */ jsx(Fragment, {
507
- children: currentModalChildren
508
- })
509
- };
510
- }
511
- default: {
512
- return {
513
- modalProps: {},
514
- content: null
515
- };
516
- }
517
- }
518
- };
519
- const {
520
- modalProps: currentModalProps,
521
- content
522
- } = getCurrentModal();
523
- return /* @__PURE__ */ jsxs(ModalsContext.Provider, {
524
- value: ctx,
525
- children: [/* @__PURE__ */ jsx(Modal, __spreadProps(__spreadValues({}, __spreadProps2(__spreadValues2(__spreadValues2({}, modalProps), currentModalProps), {
526
- opened: state.modals.length > 0,
527
- onClose: () => closeModal(state.current.id)
528
- })), {
529
- children: content
530
- })), children]
531
- });
532
- }
533
- const initialContext$1 = {
534
- addPanel: _.noop,
535
- duplidatePanel: _.noop,
536
- removePanelByID: _.noop,
537
- viewPanelInFullScreen: _.noop,
538
- inFullScreen: false
539
- };
540
- const DashboardActionContext = React.createContext(initialContext$1);
541
- const initialContext = {
542
- sqlSnippets: [],
543
- setSQLSnippets: () => {
544
- },
545
- queries: [],
546
- setQueries: () => {
547
- }
548
- };
549
- const DefinitionContext = React.createContext(initialContext);
550
215
  function DescriptionPopover({
551
216
  position = "bottom",
552
217
  trigger = "hover"
@@ -960,1315 +625,50 @@ function Sunbrust({
960
625
  width,
961
626
  height
962
627
  }) {
963
- const _a = conf, {
628
+ const {
964
629
  label_field = "name",
965
- value_field = "value"
966
- } = _a, restConf = __objRest(_a, [
967
- "label_field",
968
- "value_field"
969
- ]);
630
+ value_field = "value",
631
+ ...restConf
632
+ } = conf;
970
633
  const chartData = React.useMemo(() => {
971
- return data.map((d) => ({
972
- name: d[label_field],
973
- value: Number(d[value_field])
974
- }));
975
- }, [data, label_field, value_field]);
976
- const max = React.useMemo(() => {
977
- var _a2, _b;
978
- return (_b = (_a2 = _.maxBy(chartData, (d) => d.value)) == null ? void 0 : _a2.value) != null ? _b : 1;
979
- }, [chartData]);
980
- const labelOption = React.useMemo(() => ({
981
- series: {
982
- label: {
983
- formatter: ({
984
- name,
985
- value
986
- }) => {
987
- if (value / max < 0.2) {
988
- return " ";
989
- }
990
- return name;
991
- }
992
- }
993
- }
994
- }), [max]);
995
- const option = _.merge({}, defaultOption$2, labelOption, restConf, {
996
- series: {
997
- data: chartData
998
- }
999
- });
1000
- return /* @__PURE__ */ jsx(ReactEChartsCore, {
1001
- echarts,
1002
- option,
1003
- style: {
1004
- width,
1005
- height
1006
- }
1007
- });
1008
- }
1009
- var ecStat = { exports: {} };
1010
- (function(module, exports) {
1011
- (function webpackUniversalModuleDefinition(root, factory) {
1012
- module.exports = factory();
1013
- })(commonjsGlobal, function() {
1014
- return function(modules) {
1015
- var installedModules = {};
1016
- function __webpack_require__(moduleId) {
1017
- if (installedModules[moduleId])
1018
- return installedModules[moduleId].exports;
1019
- var module2 = installedModules[moduleId] = {
1020
- exports: {},
1021
- id: moduleId,
1022
- loaded: false
1023
- };
1024
- modules[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
1025
- module2.loaded = true;
1026
- return module2.exports;
1027
- }
1028
- __webpack_require__.m = modules;
1029
- __webpack_require__.c = installedModules;
1030
- __webpack_require__.p = "";
1031
- return __webpack_require__(0);
1032
- }([
1033
- function(module2, exports2, __webpack_require__) {
1034
- var __WEBPACK_AMD_DEFINE_RESULT__;
1035
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1036
- return {
1037
- clustering: __webpack_require__(1),
1038
- regression: __webpack_require__(5),
1039
- statistics: __webpack_require__(6),
1040
- histogram: __webpack_require__(15),
1041
- transform: {
1042
- regression: __webpack_require__(18),
1043
- histogram: __webpack_require__(21),
1044
- clustering: __webpack_require__(22)
1045
- }
1046
- };
1047
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1048
- },
1049
- function(module2, exports2, __webpack_require__) {
1050
- var __WEBPACK_AMD_DEFINE_RESULT__;
1051
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1052
- var dataProcess = __webpack_require__(2);
1053
- var dataPreprocess = dataProcess.dataPreprocess;
1054
- var normalizeDimensions = dataProcess.normalizeDimensions;
1055
- var arrayUtil = __webpack_require__(3);
1056
- var numberUtil = __webpack_require__(4);
1057
- var arraySize = arrayUtil.size;
1058
- var sumOfColumn = arrayUtil.sumOfColumn;
1059
- var arraySum = arrayUtil.sum;
1060
- var zeros = arrayUtil.zeros;
1061
- var numberUtil = __webpack_require__(4);
1062
- var isNumber = numberUtil.isNumber;
1063
- var mathPow = Math.pow;
1064
- var OutputType = {
1065
- SINGLE: "single",
1066
- MULTIPLE: "multiple"
1067
- };
1068
- function kMeans(data, k2, dataMeta) {
1069
- var clusterAssigned = zeros(data.length, 2);
1070
- var centroids = createRandCent(k2, calcExtents(data, dataMeta.dimensions));
1071
- var clusterChanged = true;
1072
- var minDist;
1073
- var minIndex;
1074
- var distIJ;
1075
- var ptsInClust;
1076
- while (clusterChanged) {
1077
- clusterChanged = false;
1078
- for (var i = 0; i < data.length; i++) {
1079
- minDist = Infinity;
1080
- minIndex = -1;
1081
- for (var j = 0; j < k2; j++) {
1082
- distIJ = distEuclid(data[i], centroids[j], dataMeta);
1083
- if (distIJ < minDist) {
1084
- minDist = distIJ;
1085
- minIndex = j;
1086
- }
1087
- }
1088
- if (clusterAssigned[i][0] !== minIndex) {
1089
- clusterChanged = true;
1090
- }
1091
- clusterAssigned[i][0] = minIndex;
1092
- clusterAssigned[i][1] = minDist;
1093
- }
1094
- for (var i = 0; i < k2; i++) {
1095
- ptsInClust = [];
1096
- for (var j = 0; j < clusterAssigned.length; j++) {
1097
- if (clusterAssigned[j][0] === i) {
1098
- ptsInClust.push(data[j]);
1099
- }
1100
- }
1101
- centroids[i] = meanInColumns(ptsInClust, dataMeta);
1102
- }
1103
- }
1104
- var clusterWithKmeans = {
1105
- centroids,
1106
- clusterAssigned
1107
- };
1108
- return clusterWithKmeans;
1109
- }
1110
- function meanInColumns(dataList, dataMeta) {
1111
- var meanArray = [];
1112
- var sum;
1113
- var mean;
1114
- for (var j = 0; j < dataMeta.dimensions.length; j++) {
1115
- var dimIdx = dataMeta.dimensions[j];
1116
- sum = 0;
1117
- for (var i = 0; i < dataList.length; i++) {
1118
- sum += dataList[i][dimIdx];
1119
- }
1120
- mean = sum / dataList.length;
1121
- meanArray.push(mean);
1122
- }
1123
- return meanArray;
1124
- }
1125
- function hierarchicalKMeans(data, clusterCountOrConfig, stepByStep) {
1126
- var config = (isNumber(clusterCountOrConfig) ? { clusterCount: clusterCountOrConfig, stepByStep } : clusterCountOrConfig) || { clusterCount: 2 };
1127
- var k2 = config.clusterCount;
1128
- if (k2 < 2) {
1129
- return;
1130
- }
1131
- var dataMeta = parseDataMeta(data, config);
1132
- var isOutputTypeSingle = dataMeta.outputType === OutputType.SINGLE;
1133
- var dataSet = dataPreprocess(data, { dimensions: dataMeta.dimensions });
1134
- var clusterAssment = zeros(dataSet.length, 2);
1135
- var outputSingleData;
1136
- var setClusterIndex;
1137
- var getClusterIndex;
1138
- function setDistance(dataIndex, dist2) {
1139
- clusterAssment[dataIndex][1] = dist2;
1140
- }
1141
- function getDistance(dataIndex) {
1142
- return clusterAssment[dataIndex][1];
1143
- }
1144
- if (isOutputTypeSingle) {
1145
- outputSingleData = [];
1146
- var outputClusterIndexDimension = dataMeta.outputClusterIndexDimension;
1147
- setClusterIndex = function(dataIndex, clusterIndex) {
1148
- outputSingleData[dataIndex][outputClusterIndexDimension] = clusterIndex;
1149
- };
1150
- getClusterIndex = function(dataIndex) {
1151
- return outputSingleData[dataIndex][outputClusterIndexDimension];
1152
- };
1153
- for (var i = 0; i < dataSet.length; i++) {
1154
- outputSingleData.push(dataSet[i].slice());
1155
- setDistance(i, 0);
1156
- setClusterIndex(i, 0);
1157
- }
1158
- } else {
1159
- setClusterIndex = function(dataIndex, clusterIndex) {
1160
- clusterAssment[dataIndex][0] = clusterIndex;
1161
- };
1162
- getClusterIndex = function(dataIndex) {
1163
- return clusterAssment[dataIndex][0];
1164
- };
1165
- }
1166
- var centroid0 = meanInColumns(dataSet, dataMeta);
1167
- var centList = [centroid0];
1168
- for (var i = 0; i < dataSet.length; i++) {
1169
- var dist = distEuclid(dataSet[i], centroid0, dataMeta);
1170
- setDistance(i, dist);
1171
- }
1172
- var lowestSSE;
1173
- var ptsInClust;
1174
- var ptsNotClust;
1175
- var clusterInfo;
1176
- var sseSplit;
1177
- var sseNotSplit;
1178
- var index2 = 1;
1179
- var result = {
1180
- data: outputSingleData,
1181
- centroids: centList,
1182
- isEnd: false
1183
- };
1184
- if (!isOutputTypeSingle) {
1185
- result.clusterAssment = clusterAssment;
1186
- }
1187
- function oneStep() {
1188
- if (index2 < k2) {
1189
- lowestSSE = Infinity;
1190
- var centSplit;
1191
- var newCentroid;
1192
- var newClusterAss;
1193
- for (var j = 0; j < centList.length; j++) {
1194
- ptsInClust = [];
1195
- ptsNotClust = [];
1196
- for (var i2 = 0; i2 < dataSet.length; i2++) {
1197
- if (getClusterIndex(i2) === j) {
1198
- ptsInClust.push(dataSet[i2]);
1199
- } else {
1200
- ptsNotClust.push(getDistance(i2));
1201
- }
1202
- }
1203
- clusterInfo = kMeans(ptsInClust, 2, dataMeta);
1204
- sseSplit = sumOfColumn(clusterInfo.clusterAssigned, 1);
1205
- sseNotSplit = arraySum(ptsNotClust);
1206
- if (sseSplit + sseNotSplit < lowestSSE) {
1207
- lowestSSE = sseNotSplit + sseSplit;
1208
- centSplit = j;
1209
- newCentroid = clusterInfo.centroids;
1210
- newClusterAss = clusterInfo.clusterAssigned;
1211
- }
1212
- }
1213
- for (var i2 = 0; i2 < newClusterAss.length; i2++) {
1214
- if (newClusterAss[i2][0] === 0) {
1215
- newClusterAss[i2][0] = centSplit;
1216
- } else if (newClusterAss[i2][0] === 1) {
1217
- newClusterAss[i2][0] = centList.length;
1218
- }
1219
- }
1220
- centList[centSplit] = newCentroid[0];
1221
- centList.push(newCentroid[1]);
1222
- for (var i2 = 0, j = 0; i2 < dataSet.length && j < newClusterAss.length; i2++) {
1223
- if (getClusterIndex(i2) === centSplit) {
1224
- setClusterIndex(i2, newClusterAss[j][0]);
1225
- setDistance(i2, newClusterAss[j++][1]);
1226
- }
1227
- }
1228
- var pointInClust = [];
1229
- if (!isOutputTypeSingle) {
1230
- for (var i2 = 0; i2 < centList.length; i2++) {
1231
- pointInClust[i2] = [];
1232
- for (var j = 0; j < dataSet.length; j++) {
1233
- if (getClusterIndex(j) === i2) {
1234
- pointInClust[i2].push(dataSet[j]);
1235
- }
1236
- }
1237
- }
1238
- result.pointsInCluster = pointInClust;
1239
- }
1240
- index2++;
1241
- } else {
1242
- result.isEnd = true;
1243
- }
1244
- }
1245
- if (!config.stepByStep) {
1246
- while (oneStep(), !result.isEnd)
1247
- ;
1248
- } else {
1249
- result.next = function() {
1250
- oneStep();
1251
- setCentroidToResultData(result, dataMeta);
1252
- return result;
1253
- };
1254
- }
1255
- setCentroidToResultData(result, dataMeta);
1256
- return result;
1257
- }
1258
- function setCentroidToResultData(result, dataMeta) {
1259
- var outputCentroidDimensions = dataMeta.outputCentroidDimensions;
1260
- if (dataMeta.outputType !== OutputType.SINGLE || outputCentroidDimensions == null) {
1261
- return;
1262
- }
1263
- var outputSingleData = result.data;
1264
- var centroids = result.centroids;
1265
- for (var i = 0; i < outputSingleData.length; i++) {
1266
- var line = outputSingleData[i];
1267
- var clusterIndex = line[dataMeta.outputClusterIndexDimension];
1268
- var centroid = centroids[clusterIndex];
1269
- var dimLen = Math.min(centroid.length, outputCentroidDimensions.length);
1270
- for (var j = 0; j < dimLen; j++) {
1271
- line[outputCentroidDimensions[j]] = centroid[j];
1272
- }
1273
- }
1274
- }
1275
- function createRandCent(k2, extents) {
1276
- var centroids = zeros(k2, extents.length);
1277
- for (var j = 0; j < extents.length; j++) {
1278
- var extentItem = extents[j];
1279
- for (var i = 0; i < k2; i++) {
1280
- centroids[i][j] = extentItem.min + extentItem.span * Math.random();
1281
- }
1282
- }
1283
- return centroids;
1284
- }
1285
- function distEuclid(dataItem, centroid, dataMeta) {
1286
- var powerSum = 0;
1287
- var dimensions = dataMeta.dimensions;
1288
- var extents = dataMeta.rawExtents;
1289
- for (var i = 0; i < dimensions.length; i++) {
1290
- var span = extents[i].span;
1291
- if (span) {
1292
- var dimIdx = dimensions[i];
1293
- var dist = (dataItem[dimIdx] - centroid[i]) / span;
1294
- powerSum += mathPow(dist, 2);
1295
- }
1296
- }
1297
- return powerSum;
1298
- }
1299
- function parseDataMeta(dataSet, config) {
1300
- var size = arraySize(dataSet);
1301
- if (size.length < 1) {
1302
- throw new Error("The input data of clustering should be two-dimension array.");
1303
- }
1304
- var colCount = size[1];
1305
- var defaultDimensions = [];
1306
- for (var i = 0; i < colCount; i++) {
1307
- defaultDimensions.push(i);
1308
- }
1309
- var dimensions = normalizeDimensions(config.dimensions, defaultDimensions);
1310
- var outputType = config.outputType || OutputType.MULTIPLE;
1311
- var outputClusterIndexDimension = config.outputClusterIndexDimension;
1312
- if (outputType === OutputType.SINGLE && !numberUtil.isNumber(outputClusterIndexDimension)) {
1313
- throw new Error("outputClusterIndexDimension is required as a number.");
1314
- }
1315
- var extents = calcExtents(dataSet, dimensions);
1316
- return {
1317
- dimensions,
1318
- rawExtents: extents,
1319
- outputType,
1320
- outputClusterIndexDimension,
1321
- outputCentroidDimensions: config.outputCentroidDimensions
1322
- };
1323
- }
1324
- function calcExtents(dataSet, dimensions) {
1325
- var extents = [];
1326
- var dimLen = dimensions.length;
1327
- for (var i = 0; i < dimLen; i++) {
1328
- extents.push({ min: Infinity, max: -Infinity });
1329
- }
1330
- for (var i = 0; i < dataSet.length; i++) {
1331
- var line = dataSet[i];
1332
- for (var j = 0; j < dimLen; j++) {
1333
- var extentItem = extents[j];
1334
- var val = line[dimensions[j]];
1335
- extentItem.min > val && (extentItem.min = val);
1336
- extentItem.max < val && (extentItem.max = val);
1337
- }
1338
- }
1339
- for (var i = 0; i < dimLen; i++) {
1340
- extents[i].span = extents[i].max - extents[i].min;
1341
- }
1342
- return extents;
1343
- }
1344
- return {
1345
- OutputType,
1346
- hierarchicalKMeans
1347
- };
1348
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1349
- },
1350
- function(module2, exports2, __webpack_require__) {
1351
- var __WEBPACK_AMD_DEFINE_RESULT__;
1352
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1353
- var array = __webpack_require__(3);
1354
- var isArray = array.isArray;
1355
- var size = array.size;
1356
- var number2 = __webpack_require__(4);
1357
- var isNumber = number2.isNumber;
1358
- function normalizeDimensions(dimensions, defaultDimensions) {
1359
- return typeof dimensions === "number" ? [dimensions] : dimensions == null ? defaultDimensions : dimensions;
1360
- }
1361
- function dataPreprocess(data, opt) {
1362
- opt = opt || {};
1363
- var dimensions = opt.dimensions;
1364
- var numberDimensionMap = {};
1365
- if (dimensions != null) {
1366
- for (var i = 0; i < dimensions.length; i++) {
1367
- numberDimensionMap[dimensions[i]] = true;
1368
- }
1369
- }
1370
- var targetOneDim = opt.toOneDimensionArray ? dimensions ? dimensions[0] : 0 : null;
1371
- function shouldBeNumberDimension(dimIdx) {
1372
- return !dimensions || numberDimensionMap.hasOwnProperty(dimIdx);
1373
- }
1374
- if (!isArray(data)) {
1375
- throw new Error("Invalid data type, you should input an array");
1376
- }
1377
- var predata = [];
1378
- var arraySize = size(data);
1379
- if (arraySize.length === 1) {
1380
- for (var i = 0; i < arraySize[0]; i++) {
1381
- var item = data[i];
1382
- if (isNumber(item)) {
1383
- predata.push(item);
1384
- }
1385
- }
1386
- } else if (arraySize.length === 2) {
1387
- for (var i = 0; i < arraySize[0]; i++) {
1388
- var isCorrect = true;
1389
- var item = data[i];
1390
- for (var j = 0; j < arraySize[1]; j++) {
1391
- if (shouldBeNumberDimension(j) && !isNumber(item[j])) {
1392
- isCorrect = false;
1393
- }
1394
- }
1395
- if (isCorrect) {
1396
- predata.push(targetOneDim != null ? item[targetOneDim] : item);
1397
- }
1398
- }
1399
- }
1400
- return predata;
1401
- }
1402
- function getPrecision(val) {
1403
- var str = val.toString();
1404
- var dotIndex = str.indexOf(".");
1405
- return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;
1406
- }
1407
- return {
1408
- normalizeDimensions,
1409
- dataPreprocess,
1410
- getPrecision
1411
- };
1412
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1413
- },
1414
- function(module2, exports2, __webpack_require__) {
1415
- var __WEBPACK_AMD_DEFINE_RESULT__;
1416
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1417
- var objToString = Object.prototype.toString;
1418
- var arrayProto = Array.prototype;
1419
- var nativeMap = arrayProto.map;
1420
- function size(data) {
1421
- var s = [];
1422
- while (isArray(data)) {
1423
- s.push(data.length);
1424
- data = data[0];
1425
- }
1426
- return s;
1427
- }
1428
- function isArray(value) {
1429
- return objToString.call(value) === "[object Array]";
1430
- }
1431
- function zeros(m2, n2) {
1432
- var zeroArray = [];
1433
- for (var i = 0; i < m2; i++) {
1434
- zeroArray[i] = [];
1435
- for (var j = 0; j < n2; j++) {
1436
- zeroArray[i][j] = 0;
1437
- }
1438
- }
1439
- return zeroArray;
1440
- }
1441
- function sum(vector) {
1442
- var sum2 = 0;
1443
- for (var i = 0; i < vector.length; i++) {
1444
- sum2 += vector[i];
1445
- }
1446
- return sum2;
1447
- }
1448
- function sumOfColumn(dataList, n2) {
1449
- var sum2 = 0;
1450
- for (var i = 0; i < dataList.length; i++) {
1451
- sum2 += dataList[i][n2];
1452
- }
1453
- return sum2;
1454
- }
1455
- function ascending(a, b) {
1456
- return a > b ? 1 : a < b ? -1 : a === b ? 0 : NaN;
1457
- }
1458
- function bisect(array, value, start, end) {
1459
- if (start == null) {
1460
- start = 0;
1461
- }
1462
- if (end == null) {
1463
- end = array.length;
1464
- }
1465
- while (start < end) {
1466
- var mid = Math.floor((start + end) / 2);
1467
- var compare = ascending(array[mid], value);
1468
- if (compare > 0) {
1469
- end = mid;
1470
- } else if (compare < 0) {
1471
- start = mid + 1;
1472
- } else {
1473
- return mid + 1;
1474
- }
1475
- }
1476
- return start;
1477
- }
1478
- function map(obj, cb, context) {
1479
- if (!(obj && cb)) {
1480
- return;
1481
- }
1482
- if (obj.map && obj.map === nativeMap) {
1483
- return obj.map(cb, context);
1484
- } else {
1485
- var result = [];
1486
- for (var i = 0, len = obj.length; i < len; i++) {
1487
- result.push(cb.call(context, obj[i], i, obj));
1488
- }
1489
- return result;
1490
- }
1491
- }
1492
- return {
1493
- size,
1494
- isArray,
1495
- zeros,
1496
- sum,
1497
- sumOfColumn,
1498
- ascending,
1499
- bisect,
1500
- map
1501
- };
1502
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1503
- },
1504
- function(module2, exports2, __webpack_require__) {
1505
- var __WEBPACK_AMD_DEFINE_RESULT__;
1506
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1507
- function isNumber(value) {
1508
- value = value === null ? NaN : +value;
1509
- return typeof value === "number" && !isNaN(value);
1510
- }
1511
- function isInteger(value) {
1512
- return isFinite(value) && value === Math.round(value);
1513
- }
1514
- function quantityExponent(val) {
1515
- if (val === 0) {
1516
- return 0;
1517
- }
1518
- var exp = Math.floor(Math.log(val) / Math.LN10);
1519
- if (val / Math.pow(10, exp) >= 10) {
1520
- exp++;
1521
- }
1522
- return exp;
1523
- }
1524
- return {
1525
- isNumber,
1526
- isInteger,
1527
- quantityExponent
1528
- };
1529
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1530
- },
1531
- function(module2, exports2, __webpack_require__) {
1532
- var __WEBPACK_AMD_DEFINE_RESULT__;
1533
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1534
- var dataProcess = __webpack_require__(2);
1535
- var dataPreprocess = dataProcess.dataPreprocess;
1536
- var normalizeDimensions = dataProcess.normalizeDimensions;
1537
- var regreMethods = {
1538
- linear: function(predata, opt) {
1539
- var xDimIdx = opt.dimensions[0];
1540
- var yDimIdx = opt.dimensions[1];
1541
- var sumX = 0;
1542
- var sumY = 0;
1543
- var sumXY = 0;
1544
- var sumXX = 0;
1545
- var len = predata.length;
1546
- for (var i = 0; i < len; i++) {
1547
- var rawItem = predata[i];
1548
- sumX += rawItem[xDimIdx];
1549
- sumY += rawItem[yDimIdx];
1550
- sumXY += rawItem[xDimIdx] * rawItem[yDimIdx];
1551
- sumXX += rawItem[xDimIdx] * rawItem[xDimIdx];
1552
- }
1553
- var gradient = (len * sumXY - sumX * sumY) / (len * sumXX - sumX * sumX);
1554
- var intercept = sumY / len - gradient * sumX / len;
1555
- var result = [];
1556
- for (var j = 0; j < predata.length; j++) {
1557
- var rawItem = predata[j];
1558
- var resultItem = rawItem.slice();
1559
- resultItem[xDimIdx] = rawItem[xDimIdx];
1560
- resultItem[yDimIdx] = gradient * rawItem[xDimIdx] + intercept;
1561
- result.push(resultItem);
1562
- }
1563
- var expression = "y = " + Math.round(gradient * 100) / 100 + "x + " + Math.round(intercept * 100) / 100;
1564
- return {
1565
- points: result,
1566
- parameter: {
1567
- gradient,
1568
- intercept
1569
- },
1570
- expression
1571
- };
1572
- },
1573
- linearThroughOrigin: function(predata, opt) {
1574
- var xDimIdx = opt.dimensions[0];
1575
- var yDimIdx = opt.dimensions[1];
1576
- var sumXX = 0;
1577
- var sumXY = 0;
1578
- for (var i = 0; i < predata.length; i++) {
1579
- var rawItem = predata[i];
1580
- sumXX += rawItem[xDimIdx] * rawItem[xDimIdx];
1581
- sumXY += rawItem[xDimIdx] * rawItem[yDimIdx];
1582
- }
1583
- var gradient = sumXY / sumXX;
1584
- var result = [];
1585
- for (var j = 0; j < predata.length; j++) {
1586
- var rawItem = predata[j];
1587
- var resultItem = rawItem.slice();
1588
- resultItem[xDimIdx] = rawItem[xDimIdx];
1589
- resultItem[yDimIdx] = rawItem[xDimIdx] * gradient;
1590
- result.push(resultItem);
1591
- }
1592
- var expression = "y = " + Math.round(gradient * 100) / 100 + "x";
1593
- return {
1594
- points: result,
1595
- parameter: {
1596
- gradient
1597
- },
1598
- expression
1599
- };
1600
- },
1601
- exponential: function(predata, opt) {
1602
- var xDimIdx = opt.dimensions[0];
1603
- var yDimIdx = opt.dimensions[1];
1604
- var sumX = 0;
1605
- var sumY = 0;
1606
- var sumXXY = 0;
1607
- var sumYlny = 0;
1608
- var sumXYlny = 0;
1609
- var sumXY = 0;
1610
- for (var i = 0; i < predata.length; i++) {
1611
- var rawItem = predata[i];
1612
- sumX += rawItem[xDimIdx];
1613
- sumY += rawItem[yDimIdx];
1614
- sumXY += rawItem[xDimIdx] * rawItem[yDimIdx];
1615
- sumXXY += rawItem[xDimIdx] * rawItem[xDimIdx] * rawItem[yDimIdx];
1616
- sumYlny += rawItem[yDimIdx] * Math.log(rawItem[yDimIdx]);
1617
- sumXYlny += rawItem[xDimIdx] * rawItem[yDimIdx] * Math.log(rawItem[yDimIdx]);
1618
- }
1619
- var denominator = sumY * sumXXY - sumXY * sumXY;
1620
- var coefficient = Math.pow(Math.E, (sumXXY * sumYlny - sumXY * sumXYlny) / denominator);
1621
- var index2 = (sumY * sumXYlny - sumXY * sumYlny) / denominator;
1622
- var result = [];
1623
- for (var j = 0; j < predata.length; j++) {
1624
- var rawItem = predata[j];
1625
- var resultItem = rawItem.slice();
1626
- resultItem[xDimIdx] = rawItem[xDimIdx];
1627
- resultItem[yDimIdx] = coefficient * Math.pow(Math.E, index2 * rawItem[xDimIdx]);
1628
- result.push(resultItem);
1629
- }
1630
- var expression = "y = " + Math.round(coefficient * 100) / 100 + "e^(" + Math.round(index2 * 100) / 100 + "x)";
1631
- return {
1632
- points: result,
1633
- parameter: {
1634
- coefficient,
1635
- index: index2
1636
- },
1637
- expression
1638
- };
1639
- },
1640
- logarithmic: function(predata, opt) {
1641
- var xDimIdx = opt.dimensions[0];
1642
- var yDimIdx = opt.dimensions[1];
1643
- var sumlnx = 0;
1644
- var sumYlnx = 0;
1645
- var sumY = 0;
1646
- var sumlnxlnx = 0;
1647
- for (var i = 0; i < predata.length; i++) {
1648
- var rawItem = predata[i];
1649
- sumlnx += Math.log(rawItem[xDimIdx]);
1650
- sumYlnx += rawItem[yDimIdx] * Math.log(rawItem[xDimIdx]);
1651
- sumY += rawItem[yDimIdx];
1652
- sumlnxlnx += Math.pow(Math.log(rawItem[xDimIdx]), 2);
1653
- }
1654
- var gradient = (i * sumYlnx - sumY * sumlnx) / (i * sumlnxlnx - sumlnx * sumlnx);
1655
- var intercept = (sumY - gradient * sumlnx) / i;
1656
- var result = [];
1657
- for (var j = 0; j < predata.length; j++) {
1658
- var rawItem = predata[j];
1659
- var resultItem = rawItem.slice();
1660
- resultItem[xDimIdx] = rawItem[xDimIdx];
1661
- resultItem[yDimIdx] = gradient * Math.log(rawItem[xDimIdx]) + intercept;
1662
- result.push(resultItem);
1663
- }
1664
- var expression = "y = " + Math.round(intercept * 100) / 100 + " + " + Math.round(gradient * 100) / 100 + "ln(x)";
1665
- return {
1666
- points: result,
1667
- parameter: {
1668
- gradient,
1669
- intercept
1670
- },
1671
- expression
1672
- };
1673
- },
1674
- polynomial: function(predata, opt) {
1675
- var xDimIdx = opt.dimensions[0];
1676
- var yDimIdx = opt.dimensions[1];
1677
- var order = opt.order;
1678
- if (order == null) {
1679
- order = 2;
1680
- }
1681
- var coeMatrix = [];
1682
- var lhs = [];
1683
- var k2 = order + 1;
1684
- for (var i = 0; i < k2; i++) {
1685
- var sumA = 0;
1686
- for (var n2 = 0; n2 < predata.length; n2++) {
1687
- var rawItem = predata[n2];
1688
- sumA += rawItem[yDimIdx] * Math.pow(rawItem[xDimIdx], i);
1689
- }
1690
- lhs.push(sumA);
1691
- var temp = [];
1692
- for (var j = 0; j < k2; j++) {
1693
- var sumB = 0;
1694
- for (var m2 = 0; m2 < predata.length; m2++) {
1695
- sumB += Math.pow(predata[m2][xDimIdx], i + j);
1696
- }
1697
- temp.push(sumB);
1698
- }
1699
- coeMatrix.push(temp);
1700
- }
1701
- coeMatrix.push(lhs);
1702
- var coeArray = gaussianElimination(coeMatrix, k2);
1703
- var result = [];
1704
- for (var i = 0; i < predata.length; i++) {
1705
- var value = 0;
1706
- var rawItem = predata[i];
1707
- for (var n2 = 0; n2 < coeArray.length; n2++) {
1708
- value += coeArray[n2] * Math.pow(rawItem[xDimIdx], n2);
1709
- }
1710
- var resultItem = rawItem.slice();
1711
- resultItem[xDimIdx] = rawItem[xDimIdx];
1712
- resultItem[yDimIdx] = value;
1713
- result.push(resultItem);
1714
- }
1715
- var expression = "y = ";
1716
- for (var i = coeArray.length - 1; i >= 0; i--) {
1717
- if (i > 1) {
1718
- expression += Math.round(coeArray[i] * Math.pow(10, i + 1)) / Math.pow(10, i + 1) + "x^" + i + " + ";
1719
- } else if (i === 1) {
1720
- expression += Math.round(coeArray[i] * 100) / 100 + "x + ";
1721
- } else {
1722
- expression += Math.round(coeArray[i] * 100) / 100;
1723
- }
1724
- }
1725
- return {
1726
- points: result,
1727
- parameter: coeArray,
1728
- expression
1729
- };
1730
- }
1731
- };
1732
- function gaussianElimination(matrix, number2) {
1733
- for (var i = 0; i < matrix.length - 1; i++) {
1734
- var maxColumn = i;
1735
- for (var j = i + 1; j < matrix.length - 1; j++) {
1736
- if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][maxColumn])) {
1737
- maxColumn = j;
1738
- }
1739
- }
1740
- for (var k2 = i; k2 < matrix.length; k2++) {
1741
- var temp = matrix[k2][i];
1742
- matrix[k2][i] = matrix[k2][maxColumn];
1743
- matrix[k2][maxColumn] = temp;
1744
- }
1745
- for (var n2 = i + 1; n2 < matrix.length - 1; n2++) {
1746
- for (var m2 = matrix.length - 1; m2 >= i; m2--) {
1747
- matrix[m2][n2] -= matrix[m2][i] / matrix[i][i] * matrix[i][n2];
1748
- }
1749
- }
1750
- }
1751
- var data = new Array(number2);
1752
- var len = matrix.length - 1;
1753
- for (var j = matrix.length - 2; j >= 0; j--) {
1754
- var temp = 0;
1755
- for (var i = j + 1; i < matrix.length - 1; i++) {
1756
- temp += matrix[i][j] * data[i];
1757
- }
1758
- data[j] = (matrix[len][j] - temp) / matrix[j][j];
1759
- }
1760
- return data;
1761
- }
1762
- var regression = function(regreMethod, data, optOrOrder) {
1763
- var opt = typeof optOrOrder === "number" ? { order: optOrOrder } : optOrOrder || {};
1764
- var dimensions = normalizeDimensions(opt.dimensions, [0, 1]);
1765
- var predata = dataPreprocess(data, { dimensions });
1766
- var result = regreMethods[regreMethod](predata, {
1767
- order: opt.order,
1768
- dimensions
1769
- });
1770
- var xDimIdx = dimensions[0];
1771
- result.points.sort(function(itemA, itemB) {
1772
- return itemA[xDimIdx] - itemB[xDimIdx];
1773
- });
1774
- return result;
1775
- };
1776
- return regression;
1777
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1778
- },
1779
- function(module2, exports2, __webpack_require__) {
1780
- var __WEBPACK_AMD_DEFINE_RESULT__;
1781
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1782
- var statistics = {};
1783
- statistics.max = __webpack_require__(7);
1784
- statistics.deviation = __webpack_require__(8);
1785
- statistics.mean = __webpack_require__(10);
1786
- statistics.median = __webpack_require__(12);
1787
- statistics.min = __webpack_require__(14);
1788
- statistics.quantile = __webpack_require__(13);
1789
- statistics.sampleVariance = __webpack_require__(9);
1790
- statistics.sum = __webpack_require__(11);
1791
- return statistics;
1792
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1793
- },
1794
- function(module2, exports2, __webpack_require__) {
1795
- var __WEBPACK_AMD_DEFINE_RESULT__;
1796
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1797
- var number2 = __webpack_require__(4);
1798
- var isNumber = number2.isNumber;
1799
- function max(data) {
1800
- var maxData = -Infinity;
1801
- for (var i = 0; i < data.length; i++) {
1802
- if (isNumber(data[i]) && data[i] > maxData) {
1803
- maxData = data[i];
1804
- }
1805
- }
1806
- return maxData;
1807
- }
1808
- return max;
1809
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1810
- },
1811
- function(module2, exports2, __webpack_require__) {
1812
- var __WEBPACK_AMD_DEFINE_RESULT__;
1813
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1814
- var variance = __webpack_require__(9);
1815
- return function(data) {
1816
- var squaredDeviation = variance(data);
1817
- return squaredDeviation ? Math.sqrt(squaredDeviation) : squaredDeviation;
1818
- };
1819
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1820
- },
1821
- function(module2, exports2, __webpack_require__) {
1822
- var __WEBPACK_AMD_DEFINE_RESULT__;
1823
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1824
- var number2 = __webpack_require__(4);
1825
- var isNumber = number2.isNumber;
1826
- var mean = __webpack_require__(10);
1827
- function sampleVariance(data) {
1828
- var len = data.length;
1829
- if (!len || len < 2) {
1830
- return 0;
1831
- }
1832
- if (data.length >= 2) {
1833
- var meanValue = mean(data);
1834
- var sum = 0;
1835
- var temple;
1836
- for (var i = 0; i < data.length; i++) {
1837
- if (isNumber(data[i])) {
1838
- temple = data[i] - meanValue;
1839
- sum += temple * temple;
1840
- }
1841
- }
1842
- return sum / (data.length - 1);
1843
- }
1844
- }
1845
- return sampleVariance;
1846
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1847
- },
1848
- function(module2, exports2, __webpack_require__) {
1849
- var __WEBPACK_AMD_DEFINE_RESULT__;
1850
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1851
- var sum = __webpack_require__(11);
1852
- function mean(data) {
1853
- var len = data.length;
1854
- if (!len) {
1855
- return 0;
1856
- }
1857
- return sum(data) / data.length;
1858
- }
1859
- return mean;
1860
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1861
- },
1862
- function(module2, exports2, __webpack_require__) {
1863
- var __WEBPACK_AMD_DEFINE_RESULT__;
1864
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1865
- var number2 = __webpack_require__(4);
1866
- var isNumber = number2.isNumber;
1867
- function sum(data) {
1868
- var len = data.length;
1869
- if (!len) {
1870
- return 0;
1871
- }
1872
- var sumData = 0;
1873
- for (var i = 0; i < len; i++) {
1874
- if (isNumber(data[i])) {
1875
- sumData += data[i];
1876
- }
1877
- }
1878
- return sumData;
1879
- }
1880
- return sum;
1881
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1882
- },
1883
- function(module2, exports2, __webpack_require__) {
1884
- var __WEBPACK_AMD_DEFINE_RESULT__;
1885
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1886
- var quantile = __webpack_require__(13);
1887
- function median2(data) {
1888
- return quantile(data, 0.5);
1889
- }
1890
- return median2;
1891
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1892
- },
1893
- function(module2, exports2, __webpack_require__) {
1894
- var __WEBPACK_AMD_DEFINE_RESULT__;
1895
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1896
- return function(data, p2) {
1897
- var len = data.length;
1898
- if (!len) {
1899
- return 0;
1900
- }
1901
- if (p2 <= 0 || len < 2) {
1902
- return data[0];
1903
- }
1904
- if (p2 >= 1) {
1905
- return data[len - 1];
1906
- }
1907
- var h = (len - 1) * p2;
1908
- var i = Math.floor(h);
1909
- var a = data[i];
1910
- var b = data[i + 1];
1911
- return a + (b - a) * (h - i);
1912
- };
1913
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1914
- },
1915
- function(module2, exports2, __webpack_require__) {
1916
- var __WEBPACK_AMD_DEFINE_RESULT__;
1917
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1918
- var number2 = __webpack_require__(4);
1919
- var isNumber = number2.isNumber;
1920
- function min(data) {
1921
- var minData = Infinity;
1922
- for (var i = 0; i < data.length; i++) {
1923
- if (isNumber(data[i]) && data[i] < minData) {
1924
- minData = data[i];
1925
- }
1926
- }
1927
- return minData;
1928
- }
1929
- return min;
1930
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1931
- },
1932
- function(module2, exports2, __webpack_require__) {
1933
- var __WEBPACK_AMD_DEFINE_RESULT__;
1934
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1935
- var max = __webpack_require__(7);
1936
- var min = __webpack_require__(14);
1937
- var quantile = __webpack_require__(13);
1938
- var deviation = __webpack_require__(8);
1939
- var dataProcess = __webpack_require__(2);
1940
- var dataPreprocess = dataProcess.dataPreprocess;
1941
- var normalizeDimensions = dataProcess.normalizeDimensions;
1942
- var array = __webpack_require__(3);
1943
- var ascending = array.ascending;
1944
- var map = array.map;
1945
- var range = __webpack_require__(16);
1946
- var bisect = array.bisect;
1947
- var tickStep = __webpack_require__(17);
1948
- function computeBins(data, optOrMethod) {
1949
- var opt = typeof optOrMethod === "string" ? { method: optOrMethod } : optOrMethod || {};
1950
- var threshold = opt.method == null ? thresholdMethod.squareRoot : thresholdMethod[opt.method];
1951
- var dimensions = normalizeDimensions(opt.dimensions);
1952
- var values = dataPreprocess(data, {
1953
- dimensions,
1954
- toOneDimensionArray: true
1955
- });
1956
- var maxValue = max(values);
1957
- var minValue = min(values);
1958
- var binsNumber = threshold(values, minValue, maxValue);
1959
- var tickStepResult = tickStep(minValue, maxValue, binsNumber);
1960
- var step = tickStepResult.step;
1961
- var toFixedPrecision = tickStepResult.toFixedPrecision;
1962
- var rangeArray = range(+(Math.ceil(minValue / step) * step).toFixed(toFixedPrecision), +(Math.floor(maxValue / step) * step).toFixed(toFixedPrecision), step, toFixedPrecision);
1963
- var len = rangeArray.length;
1964
- var bins = new Array(len + 1);
1965
- for (var i = 0; i <= len; i++) {
1966
- bins[i] = {};
1967
- bins[i].sample = [];
1968
- bins[i].x0 = i > 0 ? rangeArray[i - 1] : rangeArray[i] - minValue === step ? minValue : rangeArray[i] - step;
1969
- bins[i].x1 = i < len ? rangeArray[i] : maxValue - rangeArray[i - 1] === step ? maxValue : rangeArray[i - 1] + step;
1970
- }
1971
- for (var i = 0; i < values.length; i++) {
1972
- if (minValue <= values[i] && values[i] <= maxValue) {
1973
- bins[bisect(rangeArray, values[i], 0, len)].sample.push(values[i]);
1974
- }
1975
- }
1976
- var data = map(bins, function(bin) {
1977
- return [
1978
- +((bin.x0 + bin.x1) / 2).toFixed(toFixedPrecision),
1979
- bin.sample.length,
1980
- bin.x0,
1981
- bin.x1,
1982
- bin.x0 + " - " + bin.x1
1983
- ];
1984
- });
1985
- var customData = map(bins, function(bin) {
1986
- return [bin.x0, bin.x1, bin.sample.length];
1987
- });
1988
- return {
1989
- bins,
1990
- data,
1991
- customData
1992
- };
1993
- }
1994
- var thresholdMethod = {
1995
- squareRoot: function(data) {
1996
- var bins = Math.ceil(Math.sqrt(data.length));
1997
- return bins > 50 ? 50 : bins;
1998
- },
1999
- scott: function(data, min2, max2) {
2000
- return Math.ceil((max2 - min2) / (3.5 * deviation(data) * Math.pow(data.length, -1 / 3)));
2001
- },
2002
- freedmanDiaconis: function(data, min2, max2) {
2003
- data.sort(ascending);
2004
- return Math.ceil((max2 - min2) / (2 * (quantile(data, 0.75) - quantile(data, 0.25)) * Math.pow(data.length, -1 / 3)));
2005
- },
2006
- sturges: function(data) {
2007
- return Math.ceil(Math.log(data.length) / Math.LN2) + 1;
2008
- }
2009
- };
2010
- return computeBins;
2011
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2012
- },
2013
- function(module2, exports2, __webpack_require__) {
2014
- var __WEBPACK_AMD_DEFINE_RESULT__;
2015
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2016
- var dataProcess = __webpack_require__(2);
2017
- var getPrecision = dataProcess.getPrecision;
2018
- return function(start, end, step, precision) {
2019
- var len = arguments.length;
2020
- if (len < 2) {
2021
- end = start;
2022
- start = 0;
2023
- step = 1;
2024
- } else if (len < 3) {
2025
- step = 1;
2026
- } else if (len < 4) {
2027
- step = +step;
2028
- precision = getPrecision(step);
2029
- } else {
2030
- precision = +precision;
2031
- }
2032
- var n2 = Math.ceil(((end - start) / step).toFixed(precision));
2033
- var range = new Array(n2 + 1);
2034
- for (var i = 0; i < n2 + 1; i++) {
2035
- range[i] = +(start + i * step).toFixed(precision);
2036
- }
2037
- return range;
2038
- };
2039
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2040
- },
2041
- function(module2, exports2, __webpack_require__) {
2042
- var __WEBPACK_AMD_DEFINE_RESULT__;
2043
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2044
- var numberUtil = __webpack_require__(4);
2045
- return function(start, stop, count) {
2046
- var step0 = Math.abs(stop - start) / count;
2047
- var precision = numberUtil.quantityExponent(step0);
2048
- var step1 = Math.pow(10, precision);
2049
- var error = step0 / step1;
2050
- if (error >= Math.sqrt(50)) {
2051
- step1 *= 10;
2052
- } else if (error >= Math.sqrt(10)) {
2053
- step1 *= 5;
2054
- } else if (error >= Math.sqrt(2)) {
2055
- step1 *= 2;
2056
- }
2057
- var toFixedPrecision = precision < 0 ? -precision : 0;
2058
- var resultStep = +(stop >= start ? step1 : -step1).toFixed(toFixedPrecision);
2059
- return {
2060
- step: resultStep,
2061
- toFixedPrecision
2062
- };
2063
- };
2064
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2065
- },
2066
- function(module2, exports2, __webpack_require__) {
2067
- var __WEBPACK_AMD_DEFINE_RESULT__;
2068
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2069
- var regression = __webpack_require__(5);
2070
- var transformHelper = __webpack_require__(19);
2071
- var FORMULA_DIMENSION = 2;
2072
- return {
2073
- type: "ecStat:regression",
2074
- transform: function transform(params) {
2075
- var upstream = params.upstream;
2076
- var config = params.config || {};
2077
- var method = config.method || "linear";
2078
- var result = regression(method, upstream.cloneRawData(), {
2079
- order: config.order,
2080
- dimensions: transformHelper.normalizeExistingDimensions(params, config.dimensions)
2081
- });
2082
- var points = result.points;
2083
- var formulaOn = config.formulaOn;
2084
- if (formulaOn == null) {
2085
- formulaOn = "end";
2086
- }
2087
- var dimensions;
2088
- if (formulaOn !== "none") {
2089
- for (var i = 0; i < points.length; i++) {
2090
- points[i][FORMULA_DIMENSION] = formulaOn === "start" && i === 0 || formulaOn === "all" || formulaOn === "end" && i === points.length - 1 ? result.expression : "";
2091
- }
2092
- dimensions = upstream.cloneAllDimensionInfo();
2093
- dimensions[FORMULA_DIMENSION] = {};
2094
- }
2095
- return [{
2096
- dimensions,
2097
- data: points
2098
- }];
2099
- }
2100
- };
2101
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2102
- },
2103
- function(module2, exports2, __webpack_require__) {
2104
- var __WEBPACK_AMD_DEFINE_RESULT__;
2105
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2106
- var arrayUtil = __webpack_require__(3);
2107
- var numberUtil = __webpack_require__(4);
2108
- var objectUtil = __webpack_require__(20);
2109
- function normalizeExistingDimensions(transformParams, dimensionsConfig) {
2110
- if (dimensionsConfig == null) {
2111
- return;
2112
- }
2113
- var upstream = transformParams.upstream;
2114
- if (arrayUtil.isArray(dimensionsConfig)) {
2115
- var result = [];
2116
- for (var i = 0; i < dimensionsConfig.length; i++) {
2117
- var dimInfo = upstream.getDimensionInfo(dimensionsConfig[i]);
2118
- validateDimensionExists(dimInfo, dimensionsConfig[i]);
2119
- result[i] = dimInfo.index;
2120
- }
2121
- return result;
2122
- } else {
2123
- var dimInfo = upstream.getDimensionInfo(dimensionsConfig);
2124
- validateDimensionExists(dimInfo, dimensionsConfig);
2125
- return dimInfo.index;
2126
- }
2127
- function validateDimensionExists(dimInfo2, dimConfig) {
2128
- if (!dimInfo2) {
2129
- throw new Error("Can not find dimension by " + dimConfig);
2130
- }
2131
- }
2132
- }
2133
- function normalizeNewDimensions(dimensionsConfig) {
2134
- if (arrayUtil.isArray(dimensionsConfig)) {
2135
- var names = [];
2136
- var indices = [];
2137
- for (var i = 0; i < dimensionsConfig.length; i++) {
2138
- var item = parseDimensionNewItem(dimensionsConfig[i]);
2139
- names.push(item.name);
2140
- indices.push(item.index);
2141
- }
2142
- return { name: names, index: indices };
2143
- } else if (dimensionsConfig != null) {
2144
- return parseDimensionNewItem(dimensionsConfig);
2145
- }
2146
- function parseDimensionNewItem(dimConfig) {
2147
- if (numberUtil.isNumber(dimConfig)) {
2148
- return { index: dimConfig };
2149
- } else if (objectUtil.isObject(dimConfig) && numberUtil.isNumber(dimConfig.index)) {
2150
- return dimConfig;
2151
- }
2152
- throw new Error("Illegle new dimensions config. Expect `{ name: string, index: number }`.");
2153
- }
2154
- }
2155
- return {
2156
- normalizeExistingDimensions,
2157
- normalizeNewDimensions
2158
- };
2159
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2160
- },
2161
- function(module2, exports2, __webpack_require__) {
2162
- var __WEBPACK_AMD_DEFINE_RESULT__;
2163
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2164
- function extend(target, source) {
2165
- if (Object.assign) {
2166
- Object.assign(target, source);
2167
- } else {
2168
- for (var key in source) {
2169
- if (source.hasOwnProperty(key)) {
2170
- target[key] = source[key];
2171
- }
2172
- }
2173
- }
2174
- return target;
2175
- }
2176
- function isObject(value) {
2177
- const type = typeof value;
2178
- return type === "function" || !!value && type === "object";
634
+ return data.map((d) => ({
635
+ name: d[label_field],
636
+ value: Number(d[value_field])
637
+ }));
638
+ }, [data, label_field, value_field]);
639
+ const max = React.useMemo(() => {
640
+ var _a, _b;
641
+ return (_b = (_a = _.maxBy(chartData, (d) => d.value)) == null ? void 0 : _a.value) != null ? _b : 1;
642
+ }, [chartData]);
643
+ const labelOption = React.useMemo(() => ({
644
+ series: {
645
+ label: {
646
+ formatter: ({
647
+ name,
648
+ value
649
+ }) => {
650
+ if (value / max < 0.2) {
651
+ return " ";
2179
652
  }
2180
- return {
2181
- extend,
2182
- isObject
2183
- };
2184
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2185
- },
2186
- function(module2, exports2, __webpack_require__) {
2187
- var __WEBPACK_AMD_DEFINE_RESULT__;
2188
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2189
- var histogram = __webpack_require__(15);
2190
- var transformHelper = __webpack_require__(19);
2191
- return {
2192
- type: "ecStat:histogram",
2193
- transform: function transform(params) {
2194
- var upstream = params.upstream;
2195
- var config = params.config || {};
2196
- var result = histogram(upstream.cloneRawData(), {
2197
- method: config.method,
2198
- dimensions: transformHelper.normalizeExistingDimensions(params, config.dimensions)
2199
- });
2200
- return [{
2201
- dimensions: ["MeanOfV0V1", "VCount", "V0", "V1", "DisplayableName"],
2202
- data: result.data
2203
- }, {
2204
- data: result.customData
2205
- }];
2206
- }
2207
- };
2208
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2209
- },
2210
- function(module2, exports2, __webpack_require__) {
2211
- var __WEBPACK_AMD_DEFINE_RESULT__;
2212
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2213
- var clustering = __webpack_require__(1);
2214
- var numberUtil = __webpack_require__(4);
2215
- var transformHelper = __webpack_require__(19);
2216
- var isNumber = numberUtil.isNumber;
2217
- return {
2218
- type: "ecStat:clustering",
2219
- transform: function transform(params) {
2220
- var upstream = params.upstream;
2221
- var config = params.config || {};
2222
- var clusterCount = config.clusterCount;
2223
- if (!isNumber(clusterCount) || clusterCount <= 0) {
2224
- throw new Error('config param "clusterCount" need to be specified as an interger greater than 1.');
2225
- }
2226
- if (clusterCount === 1) {
2227
- return [{}, {
2228
- data: []
2229
- }];
2230
- }
2231
- var outputClusterIndexDimension = transformHelper.normalizeNewDimensions(config.outputClusterIndexDimension);
2232
- var outputCentroidDimensions = transformHelper.normalizeNewDimensions(config.outputCentroidDimensions);
2233
- if (outputClusterIndexDimension == null) {
2234
- throw new Error("outputClusterIndexDimension is required as a number.");
2235
- }
2236
- var result = clustering.hierarchicalKMeans(upstream.cloneRawData(), {
2237
- clusterCount,
2238
- stepByStep: false,
2239
- dimensions: transformHelper.normalizeExistingDimensions(params, config.dimensions),
2240
- outputType: clustering.OutputType.SINGLE,
2241
- outputClusterIndexDimension: outputClusterIndexDimension.index,
2242
- outputCentroidDimensions: (outputCentroidDimensions || {}).index
2243
- });
2244
- var sourceDimAll = upstream.cloneAllDimensionInfo();
2245
- var resultDimsDef = [];
2246
- for (var i = 0; i < sourceDimAll.length; i++) {
2247
- var sourceDimItem = sourceDimAll[i];
2248
- resultDimsDef.push(sourceDimItem.name);
2249
- }
2250
- resultDimsDef[outputClusterIndexDimension.index] = outputClusterIndexDimension.name;
2251
- if (outputCentroidDimensions) {
2252
- for (var i = 0; i < outputCentroidDimensions.index.length; i++) {
2253
- if (outputCentroidDimensions.name[i] != null) {
2254
- resultDimsDef[outputCentroidDimensions.index[i]] = outputCentroidDimensions.name[i];
2255
- }
2256
- }
2257
- }
2258
- return [{
2259
- dimensions: resultDimsDef,
2260
- data: result.data
2261
- }, {
2262
- data: result.centroids
2263
- }];
2264
- }
2265
- };
2266
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
653
+ return name;
654
+ }
2267
655
  }
2268
- ]);
656
+ }
657
+ }), [max]);
658
+ const option = _.merge({}, defaultOption$2, labelOption, restConf, {
659
+ series: {
660
+ data: chartData
661
+ }
662
+ });
663
+ return /* @__PURE__ */ jsx(ReactEChartsCore, {
664
+ echarts,
665
+ option,
666
+ style: {
667
+ width,
668
+ height
669
+ }
2269
670
  });
2270
- })(ecStat);
2271
- var echartsStat = ecStat.exports;
671
+ }
2272
672
  function getRegressionConfs({ regressions = [] }, data) {
2273
673
  const regressionDataSets = [];
2274
674
  const regressionSeries = [];
@@ -2276,7 +676,7 @@ function getRegressionConfs({ regressions = [] }, data) {
2276
676
  if (data.length === 0) {
2277
677
  return { regressionDataSets, regressionSeries, regressionXAxes };
2278
678
  }
2279
- regressions.forEach(({ transform, plot, name, y_axis_data_key }) => {
679
+ regressions.forEach(({ transform: transform2, plot, name, y_axis_data_key }) => {
2280
680
  const xAxisId = `x-axis-for-${name}`;
2281
681
  const rawDatasetId = `dataset-for-${name}--raw`;
2282
682
  const regDatasetId = `dataset-for-${name}--transformed`;
@@ -2285,11 +685,12 @@ function getRegressionConfs({ regressions = [] }, data) {
2285
685
  source: data.map((d, i) => [i, d[y_axis_data_key]])
2286
686
  });
2287
687
  regressionDataSets.push({
2288
- transform,
688
+ transform: transform2,
2289
689
  id: regDatasetId,
2290
690
  fromDatasetId: rawDatasetId
2291
691
  });
2292
- regressionSeries.push(__spreadProps(__spreadValues({}, plot), {
692
+ regressionSeries.push({
693
+ ...plot,
2293
694
  name,
2294
695
  datasetId: regDatasetId,
2295
696
  xAxisId,
@@ -2297,7 +698,7 @@ function getRegressionConfs({ regressions = [] }, data) {
2297
698
  tooltip: {
2298
699
  show: false
2299
700
  }
2300
- }));
701
+ });
2301
702
  regressionXAxes.push({
2302
703
  type: "category",
2303
704
  id: xAxisId,
@@ -2333,7 +734,7 @@ const defaultOption$1 = {
2333
734
  }
2334
735
  };
2335
736
  function getOption(conf, data) {
2336
- var _c;
737
+ var _a;
2337
738
  const labelFormatters = conf.y_axes.reduce((ret, { label_formatter }, index2) => {
2338
739
  ret[index2] = function formatter(payload) {
2339
740
  const value = typeof payload === "object" ? payload.value : payload;
@@ -2355,9 +756,8 @@ function getOption(conf, data) {
2355
756
  ret[name] = yAxisIndex;
2356
757
  return ret;
2357
758
  }, {});
2358
- const series = conf.series.map((_a) => {
2359
- var _b = _a, { y_axis_data_key, yAxisIndex, label_position, name } = _b, rest = __objRest(_b, ["y_axis_data_key", "yAxisIndex", "label_position", "name"]);
2360
- const ret = __spreadValues({
759
+ const series = conf.series.map(({ y_axis_data_key, yAxisIndex, label_position, name, ...rest }) => {
760
+ const ret = {
2361
761
  data: data.map((d) => d[y_axis_data_key]),
2362
762
  label: {
2363
763
  show: !!label_position,
@@ -2366,8 +766,9 @@ function getOption(conf, data) {
2366
766
  },
2367
767
  name,
2368
768
  xAxisId: "main-x-axis",
2369
- yAxisIndex
2370
- }, rest);
769
+ yAxisIndex,
770
+ ...rest
771
+ };
2371
772
  return ret;
2372
773
  });
2373
774
  const { regressionDataSets, regressionSeries, regressionXAxes } = getRegressionConfs(conf, data);
@@ -2375,20 +776,20 @@ function getOption(conf, data) {
2375
776
  xAxis: [
2376
777
  {
2377
778
  data: data.map((d) => d[conf.x_axis_data_key]),
2378
- name: (_c = conf.x_axis_name) != null ? _c : "",
779
+ name: (_a = conf.x_axis_name) != null ? _a : "",
2379
780
  id: "main-x-axis"
2380
781
  },
2381
782
  ...regressionXAxes
2382
783
  ],
2383
- yAxis: conf.y_axes.map((_d, index2) => {
2384
- var _e = _d, { label_formatter } = _e, rest = __objRest(_e, ["label_formatter"]);
2385
- var _a;
2386
- return __spreadProps(__spreadValues({}, rest), {
784
+ yAxis: conf.y_axes.map(({ label_formatter, ...rest }, index2) => {
785
+ var _a2;
786
+ return {
787
+ ...rest,
2387
788
  axisLabel: {
2388
789
  show: true,
2389
- formatter: (_a = labelFormatters[index2]) != null ? _a : labelFormatters.default
790
+ formatter: (_a2 = labelFormatters[index2]) != null ? _a2 : labelFormatters.default
2390
791
  }
2391
- });
792
+ };
2392
793
  }),
2393
794
  dataset: [
2394
795
  ...regressionDataSets
@@ -2404,12 +805,12 @@ function getOption(conf, data) {
2404
805
  return "";
2405
806
  }
2406
807
  const lines = arr.map(({ seriesName, value }) => {
2407
- var _a;
808
+ var _a2;
2408
809
  if (!seriesName) {
2409
810
  return value;
2410
811
  }
2411
812
  const yAxisIndex = yAxisIndexMap[seriesName];
2412
- const formatter = (_a = labelFormatters[yAxisIndex]) != null ? _a : labelFormatters.default;
813
+ const formatter = (_a2 = labelFormatters[yAxisIndex]) != null ? _a2 : labelFormatters.default;
2413
814
  return `${seriesName}: ${formatter({ value })}`;
2414
815
  });
2415
816
  lines.unshift(`<strong>${arr[0].name}</strong>`);
@@ -2902,7 +1303,7 @@ function templateToJSX(template, variables, data) {
2902
1303
  });
2903
1304
  }
2904
1305
  echarts.use([BarChart, LineChart, ScatterChart, GridComponent, LegendComponent, TooltipComponent, CanvasRenderer]);
2905
- echarts.registerTransform(echartsStat.transform.regression);
1306
+ echarts.registerTransform(transform.regression);
2906
1307
  function templateNotEmpty(str) {
2907
1308
  return str.trim().length > 0;
2908
1309
  }
@@ -3050,15 +1451,12 @@ function VizTable({
3050
1451
  width,
3051
1452
  height
3052
1453
  }) {
3053
- const _a = conf, {
1454
+ const {
3054
1455
  id_field,
3055
1456
  use_raw_columns,
3056
- columns
3057
- } = _a, rest = __objRest(_a, [
3058
- "id_field",
3059
- "use_raw_columns",
3060
- "columns"
3061
- ]);
1457
+ columns,
1458
+ ...rest
1459
+ } = conf;
3062
1460
  const labels = React.useMemo(() => {
3063
1461
  if (use_raw_columns) {
3064
1462
  return Object.keys(data == null ? void 0 : data[0]);
@@ -3075,11 +1473,11 @@ function VizTable({
3075
1473
  }
3076
1474
  return columns;
3077
1475
  }, [use_raw_columns, columns, data]);
3078
- return /* @__PURE__ */ jsxs(Table, __spreadProps(__spreadValues({
1476
+ return /* @__PURE__ */ jsxs(Table, {
3079
1477
  sx: {
3080
1478
  maxHeight: height
3081
- }
3082
- }, rest), {
1479
+ },
1480
+ ...rest,
3083
1481
  children: [/* @__PURE__ */ jsx("thead", {
3084
1482
  children: /* @__PURE__ */ jsx("tr", {
3085
1483
  children: labels.map((label) => /* @__PURE__ */ jsx("th", {
@@ -3118,12 +1516,13 @@ function VizTable({
3118
1516
  })
3119
1517
  })
3120
1518
  })]
3121
- }));
1519
+ });
3122
1520
  }
3123
1521
  function interpolateString(template, params = {}) {
3124
- const extendedParams = __spreadProps(__spreadValues({}, params), {
1522
+ const extendedParams = {
1523
+ ...params,
3125
1524
  numbro
3126
- });
1525
+ };
3127
1526
  const names = Object.keys(extendedParams);
3128
1527
  const vals = Object.values(extendedParams);
3129
1528
  try {
@@ -3139,21 +1538,17 @@ function VizText({
3139
1538
  data
3140
1539
  }) {
3141
1540
  return /* @__PURE__ */ jsx(Fragment, {
3142
- children: paragraphs.map((_a, index2) => {
3143
- var _b = _a, {
3144
- template,
3145
- size
3146
- } = _b, rest = __objRest(_b, [
3147
- "template",
3148
- "size"
3149
- ]);
3150
- return /* @__PURE__ */ jsx(Text, __spreadProps(__spreadValues({}, rest), {
3151
- sx: {
3152
- fontSize: size
3153
- },
3154
- children: interpolateString(template, data[0])
3155
- }), `${template}---${index2}`);
3156
- })
1541
+ children: paragraphs.map(({
1542
+ template,
1543
+ size,
1544
+ ...rest
1545
+ }, index2) => /* @__PURE__ */ jsx(Text, {
1546
+ ...rest,
1547
+ sx: {
1548
+ fontSize: size
1549
+ },
1550
+ children: interpolateString(template, data[0])
1551
+ }, `${template}---${index2}`))
3157
1552
  });
3158
1553
  }
3159
1554
  echarts.use([GridComponent, VisualMapComponent, LegendComponent, TooltipComponent, CanvasRenderer]);
@@ -3163,22 +1558,19 @@ function VizBar3D({
3163
1558
  width,
3164
1559
  height
3165
1560
  }) {
3166
- const _a = conf, {
1561
+ const {
3167
1562
  x_axis_data_key,
3168
1563
  y_axis_data_key,
3169
- z_axis_data_key
3170
- } = _a, restConf = __objRest(_a, [
3171
- "x_axis_data_key",
3172
- "y_axis_data_key",
3173
- "z_axis_data_key"
3174
- ]);
1564
+ z_axis_data_key,
1565
+ ...restConf
1566
+ } = conf;
3175
1567
  const min = React.useMemo(() => {
3176
1568
  return _.minBy(data, (d) => d[z_axis_data_key])[z_axis_data_key];
3177
1569
  }, [data, z_axis_data_key]);
3178
1570
  const max = React.useMemo(() => {
3179
1571
  return _.maxBy(data, (d) => d[z_axis_data_key])[z_axis_data_key];
3180
1572
  }, [data, z_axis_data_key]);
3181
- const option = __spreadProps(__spreadValues({
1573
+ const option = {
3182
1574
  tooltip: {},
3183
1575
  backgroundColor: "#fff",
3184
1576
  visualMap: {
@@ -3211,14 +1603,14 @@ function VizBar3D({
3211
1603
  intensity: 1.5
3212
1604
  }
3213
1605
  }
3214
- }
3215
- }, restConf), {
1606
+ },
1607
+ ...restConf,
3216
1608
  series: [{
3217
1609
  type: "bar3D",
3218
1610
  wireframe: {},
3219
1611
  data: data.map((d) => [d[x_axis_data_key], d[y_axis_data_key], d[z_axis_data_key]])
3220
1612
  }]
3221
- });
1613
+ };
3222
1614
  return /* @__PURE__ */ jsx(ReactEChartsCore, {
3223
1615
  echarts,
3224
1616
  option,
@@ -3269,13 +1661,11 @@ function VizPie({
3269
1661
  width,
3270
1662
  height
3271
1663
  }) {
3272
- const _a = conf, {
1664
+ const {
3273
1665
  label_field = "name",
3274
- value_field = "value"
3275
- } = _a, restConf = __objRest(_a, [
3276
- "label_field",
3277
- "value_field"
3278
- ]);
1666
+ value_field = "value",
1667
+ ...restConf
1668
+ } = conf;
3279
1669
  const chartData = React.useMemo(() => {
3280
1670
  return data.map((d) => ({
3281
1671
  name: d[label_field],
@@ -3352,21 +1742,37 @@ function renderViz(width, height, data, viz) {
3352
1742
  };
3353
1743
  switch (viz.type) {
3354
1744
  case "sunburst":
3355
- return /* @__PURE__ */ jsx(Sunbrust, __spreadValues({}, props));
1745
+ return /* @__PURE__ */ jsx(Sunbrust, {
1746
+ ...props
1747
+ });
3356
1748
  case "cartesian":
3357
- return /* @__PURE__ */ jsx(VizCartesianChart, __spreadValues({}, props));
1749
+ return /* @__PURE__ */ jsx(VizCartesianChart, {
1750
+ ...props
1751
+ });
3358
1752
  case "table":
3359
- return /* @__PURE__ */ jsx(VizTable, __spreadValues({}, props));
1753
+ return /* @__PURE__ */ jsx(VizTable, {
1754
+ ...props
1755
+ });
3360
1756
  case "text":
3361
- return /* @__PURE__ */ jsx(VizText, __spreadValues({}, props));
1757
+ return /* @__PURE__ */ jsx(VizText, {
1758
+ ...props
1759
+ });
3362
1760
  case "stats":
3363
- return /* @__PURE__ */ jsx(VizStats, __spreadValues({}, props));
1761
+ return /* @__PURE__ */ jsx(VizStats, {
1762
+ ...props
1763
+ });
3364
1764
  case "rich-text":
3365
- return /* @__PURE__ */ jsx(VizRichText, __spreadValues({}, props));
1765
+ return /* @__PURE__ */ jsx(VizRichText, {
1766
+ ...props
1767
+ });
3366
1768
  case "bar-3d":
3367
- return /* @__PURE__ */ jsx(VizBar3D, __spreadValues({}, props));
1769
+ return /* @__PURE__ */ jsx(VizBar3D, {
1770
+ ...props
1771
+ });
3368
1772
  case "pie":
3369
- return /* @__PURE__ */ jsx(VizPie, __spreadValues({}, props));
1773
+ return /* @__PURE__ */ jsx(VizPie, {
1774
+ ...props
1775
+ });
3370
1776
  default:
3371
1777
  return null;
3372
1778
  }
@@ -3507,23 +1913,25 @@ function VizBar3DPanel({
3507
1913
  control,
3508
1914
  render: ({
3509
1915
  field
3510
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
1916
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3511
1917
  label: "Data Field",
3512
1918
  required: true,
3513
- data
3514
- }, field))
1919
+ data,
1920
+ ...field
1921
+ })
3515
1922
  }), /* @__PURE__ */ jsx(Controller, {
3516
1923
  name: "xAxis3D.name",
3517
1924
  control,
3518
1925
  render: ({
3519
1926
  field
3520
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
1927
+ }) => /* @__PURE__ */ jsx(TextInput, {
3521
1928
  sx: {
3522
1929
  flexGrow: 1
3523
1930
  },
3524
1931
  size: "md",
3525
- label: "Name"
3526
- }, field))
1932
+ label: "Name",
1933
+ ...field
1934
+ })
3527
1935
  })]
3528
1936
  }), /* @__PURE__ */ jsx(Text, {
3529
1937
  mt: "lg",
@@ -3541,23 +1949,25 @@ function VizBar3DPanel({
3541
1949
  control,
3542
1950
  render: ({
3543
1951
  field
3544
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
1952
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3545
1953
  label: "Data Field",
3546
1954
  required: true,
3547
- data
3548
- }, field))
1955
+ data,
1956
+ ...field
1957
+ })
3549
1958
  }), /* @__PURE__ */ jsx(Controller, {
3550
1959
  name: "yAxis3D.name",
3551
1960
  control,
3552
1961
  render: ({
3553
1962
  field
3554
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
1963
+ }) => /* @__PURE__ */ jsx(TextInput, {
3555
1964
  sx: {
3556
1965
  flexGrow: 1
3557
1966
  },
3558
1967
  size: "md",
3559
- label: "Name"
3560
- }, field))
1968
+ label: "Name",
1969
+ ...field
1970
+ })
3561
1971
  })]
3562
1972
  }), /* @__PURE__ */ jsx(Text, {
3563
1973
  mt: "lg",
@@ -3575,23 +1985,25 @@ function VizBar3DPanel({
3575
1985
  control,
3576
1986
  render: ({
3577
1987
  field
3578
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
1988
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3579
1989
  label: "Data Field",
3580
1990
  required: true,
3581
- data
3582
- }, field))
1991
+ data,
1992
+ ...field
1993
+ })
3583
1994
  }), /* @__PURE__ */ jsx(Controller, {
3584
1995
  name: "zAxis3D.name",
3585
1996
  control,
3586
1997
  render: ({
3587
1998
  field
3588
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
1999
+ }) => /* @__PURE__ */ jsx(TextInput, {
3589
2000
  sx: {
3590
2001
  flexGrow: 1
3591
2002
  },
3592
2003
  size: "md",
3593
- label: "Name"
3594
- }, field))
2004
+ label: "Name",
2005
+ ...field
2006
+ })
3595
2007
  })]
3596
2008
  }), /* @__PURE__ */ jsx(Group, {
3597
2009
  position: "center",
@@ -3681,24 +2093,26 @@ function BarFields({
3681
2093
  control,
3682
2094
  render: ({
3683
2095
  field
3684
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2096
+ }) => /* @__PURE__ */ jsx(TextInput, {
3685
2097
  label: "Stack",
3686
2098
  placeholder: "Stack bars by this ID",
3687
2099
  sx: {
3688
2100
  flexGrow: 1
3689
- }
3690
- }, field))
2101
+ },
2102
+ ...field
2103
+ })
3691
2104
  }), /* @__PURE__ */ jsx(Controller, {
3692
2105
  name: `series.${index2}.barWidth`,
3693
2106
  control,
3694
2107
  render: ({
3695
2108
  field
3696
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2109
+ }) => /* @__PURE__ */ jsx(TextInput, {
3697
2110
  label: "Bar Width",
3698
2111
  sx: {
3699
2112
  flexGrow: 1
3700
- }
3701
- }, field))
2113
+ },
2114
+ ...field
2115
+ })
3702
2116
  })]
3703
2117
  });
3704
2118
  }
@@ -3728,20 +2142,20 @@ function LineFields({
3728
2142
  control,
3729
2143
  render: ({
3730
2144
  field
3731
- }) => /* @__PURE__ */ jsx(Select, __spreadProps(__spreadValues({
2145
+ }) => /* @__PURE__ */ jsx(Select, {
3732
2146
  label: "Step",
3733
2147
  data: stepOptions,
3734
2148
  sx: {
3735
2149
  flexGrow: 1,
3736
2150
  maxWidth: "48%"
3737
- }
3738
- }, field), {
2151
+ },
2152
+ ...field,
3739
2153
  value: String(field.value),
3740
2154
  onChange: (v) => {
3741
2155
  const step = v === "false" ? false : v;
3742
2156
  field.onChange(step);
3743
2157
  }
3744
- }))
2158
+ })
3745
2159
  }), /* @__PURE__ */ jsx(Controller, {
3746
2160
  name: `series.${index2}.smooth`,
3747
2161
  control,
@@ -3788,15 +2202,15 @@ function ScatterFields({
3788
2202
  children: [/* @__PURE__ */ jsx(Text, {
3789
2203
  size: "sm",
3790
2204
  children: "Size"
3791
- }), /* @__PURE__ */ jsx(Slider, __spreadProps(__spreadValues({
2205
+ }), /* @__PURE__ */ jsx(Slider, {
3792
2206
  min: 1,
3793
2207
  max: 10,
3794
- marks: symbolSizeOptions
3795
- }, field), {
2208
+ marks: symbolSizeOptions,
2209
+ ...field,
3796
2210
  sx: {
3797
2211
  width: "100%"
3798
2212
  }
3799
- }))]
2213
+ })]
3800
2214
  })
3801
2215
  })
3802
2216
  });
@@ -3872,7 +2286,7 @@ function SeriesItemField({
3872
2286
  control,
3873
2287
  render: ({
3874
2288
  field
3875
- }) => /* @__PURE__ */ jsx(SegmentedControl, __spreadValues({
2289
+ }) => /* @__PURE__ */ jsx(SegmentedControl, {
3876
2290
  data: [{
3877
2291
  label: "Line",
3878
2292
  value: "line"
@@ -3886,21 +2300,23 @@ function SeriesItemField({
3886
2300
  label: "Boxplot",
3887
2301
  value: "boxplot",
3888
2302
  disabled: true
3889
- }]
3890
- }, field))
2303
+ }],
2304
+ ...field
2305
+ })
3891
2306
  })
3892
2307
  }), /* @__PURE__ */ jsx(Controller, {
3893
2308
  name: `series.${index2}.name`,
3894
2309
  control,
3895
2310
  render: ({
3896
2311
  field
3897
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2312
+ }) => /* @__PURE__ */ jsx(TextInput, {
3898
2313
  label: "Name",
3899
2314
  required: true,
3900
2315
  sx: {
3901
2316
  flex: 1
3902
- }
3903
- }, field))
2317
+ },
2318
+ ...field
2319
+ })
3904
2320
  }), /* @__PURE__ */ jsxs(Group, {
3905
2321
  direction: "row",
3906
2322
  grow: true,
@@ -3910,34 +2326,32 @@ function SeriesItemField({
3910
2326
  control,
3911
2327
  render: ({
3912
2328
  field
3913
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
2329
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3914
2330
  label: "Value Field",
3915
2331
  required: true,
3916
2332
  data,
3917
2333
  sx: {
3918
2334
  flex: 1
3919
- }
3920
- }, field))
2335
+ },
2336
+ ...field
2337
+ })
3921
2338
  }), /* @__PURE__ */ jsx(Controller, {
3922
2339
  name: `series.${index2}.yAxisIndex`,
3923
2340
  control,
3924
- render: (_a) => {
3925
- var {
3926
- field: _b
3927
- } = _a, _c = _b, {
2341
+ render: ({
2342
+ field: {
3928
2343
  value,
3929
- onChange
3930
- } = _c, rest = __objRest(_c, [
3931
- "value",
3932
- "onChange"
3933
- ]);
3934
- var _a2;
3935
- return /* @__PURE__ */ jsx(Select, __spreadProps(__spreadValues({
2344
+ onChange,
2345
+ ...rest
2346
+ }
2347
+ }) => {
2348
+ var _a;
2349
+ return /* @__PURE__ */ jsx(Select, {
3936
2350
  label: "Y Axis",
3937
2351
  data: yAxisOptions,
3938
- disabled: yAxisOptions.length === 0
3939
- }, rest), {
3940
- value: (_a2 = value == null ? void 0 : value.toString()) != null ? _a2 : "",
2352
+ disabled: yAxisOptions.length === 0,
2353
+ ...rest,
2354
+ value: (_a = value == null ? void 0 : value.toString()) != null ? _a : "",
3941
2355
  onChange: (value2) => {
3942
2356
  if (!value2) {
3943
2357
  onChange(0);
@@ -3948,7 +2362,7 @@ function SeriesItemField({
3948
2362
  sx: {
3949
2363
  flex: 1
3950
2364
  }
3951
- }));
2365
+ });
3952
2366
  }
3953
2367
  })]
3954
2368
  }), type === "line" && /* @__PURE__ */ jsx(LineFields, {
@@ -3965,10 +2379,11 @@ function SeriesItemField({
3965
2379
  control,
3966
2380
  render: ({
3967
2381
  field
3968
- }) => /* @__PURE__ */ jsx(Select, __spreadValues({
2382
+ }) => /* @__PURE__ */ jsx(Select, {
3969
2383
  label: "Label Position",
3970
- data: labelPositions
3971
- }, field))
2384
+ data: labelPositions,
2385
+ ...field
2386
+ })
3972
2387
  }), /* @__PURE__ */ jsxs(Group, {
3973
2388
  direction: "column",
3974
2389
  grow: true,
@@ -3981,7 +2396,9 @@ function SeriesItemField({
3981
2396
  control,
3982
2397
  render: ({
3983
2398
  field
3984
- }) => /* @__PURE__ */ jsx(MantineColorSelector, __spreadValues({}, field))
2399
+ }) => /* @__PURE__ */ jsx(MantineColorSelector, {
2400
+ ...field
2401
+ })
3985
2402
  })]
3986
2403
  }), /* @__PURE__ */ jsx(ActionIcon, {
3987
2404
  color: "red",
@@ -4014,7 +2431,10 @@ function SeriesField({
4014
2431
  });
4015
2432
  const watchFieldArray = watch("series");
4016
2433
  const controlledFields = fields.map((field, index2) => {
4017
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
2434
+ return {
2435
+ ...field,
2436
+ ...watchFieldArray[index2]
2437
+ };
4018
2438
  });
4019
2439
  const addSeries = () => append({
4020
2440
  type: "bar",
@@ -4066,21 +2486,24 @@ function _NumbroFormatSelector({
4066
2486
  onChange
4067
2487
  }, ref) {
4068
2488
  const changeOutput = (output) => {
4069
- onChange(__spreadProps(__spreadValues({}, value), {
2489
+ onChange({
2490
+ ...value,
4070
2491
  output
4071
- }));
2492
+ });
4072
2493
  };
4073
2494
  const changeMantissa = (mantissa) => {
4074
2495
  const trimMantissa = mantissa === 0 ? false : value.trimMantissa;
4075
- onChange(__spreadProps(__spreadValues({}, value), {
2496
+ onChange({
2497
+ ...value,
4076
2498
  mantissa,
4077
2499
  trimMantissa
4078
- }));
2500
+ });
4079
2501
  };
4080
2502
  const changeTrimMantissa = (event) => {
4081
- onChange(__spreadProps(__spreadValues({}, value), {
2503
+ onChange({
2504
+ ...value,
4082
2505
  trimMantissa: event.currentTarget.checked
4083
- }));
2506
+ });
4084
2507
  };
4085
2508
  return /* @__PURE__ */ jsx(Group, {
4086
2509
  direction: "column",
@@ -4143,13 +2566,14 @@ function YAxisField({
4143
2566
  control,
4144
2567
  render: ({
4145
2568
  field
4146
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2569
+ }) => /* @__PURE__ */ jsx(TextInput, {
4147
2570
  label: "Name",
4148
2571
  required: true,
4149
2572
  sx: {
4150
2573
  flex: 1
4151
- }
4152
- }, field))
2574
+ },
2575
+ ...field
2576
+ })
4153
2577
  })
4154
2578
  }), /* @__PURE__ */ jsx(Group, {
4155
2579
  direction: "column",
@@ -4160,7 +2584,9 @@ function YAxisField({
4160
2584
  control,
4161
2585
  render: ({
4162
2586
  field
4163
- }) => /* @__PURE__ */ jsx(NumbroFormatSelector, __spreadValues({}, field))
2587
+ }) => /* @__PURE__ */ jsx(NumbroFormatSelector, {
2588
+ ...field
2589
+ })
4164
2590
  })
4165
2591
  }), /* @__PURE__ */ jsx(ActionIcon, {
4166
2592
  color: "red",
@@ -4192,7 +2618,10 @@ function YAxesField({
4192
2618
  });
4193
2619
  const watchFieldArray = watch("y_axes");
4194
2620
  const controlledFields = fields.map((field, index2) => {
4195
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
2621
+ return {
2622
+ ...field,
2623
+ ...watchFieldArray[index2]
2624
+ };
4196
2625
  });
4197
2626
  const addYAxis = () => append({
4198
2627
  name: "",
@@ -4252,13 +2681,14 @@ function RegressionField({
4252
2681
  control,
4253
2682
  render: ({
4254
2683
  field
4255
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2684
+ }) => /* @__PURE__ */ jsx(TextInput, {
4256
2685
  label: "Name",
4257
2686
  required: true,
4258
2687
  sx: {
4259
2688
  flex: 1
4260
- }
4261
- }, field))
2689
+ },
2690
+ ...field
2691
+ })
4262
2692
  }), /* @__PURE__ */ jsxs(Group, {
4263
2693
  direction: "row",
4264
2694
  grow: true,
@@ -4268,34 +2698,32 @@ function RegressionField({
4268
2698
  control,
4269
2699
  render: ({
4270
2700
  field
4271
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
2701
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
4272
2702
  label: "Value Field",
4273
2703
  required: true,
4274
2704
  data,
4275
2705
  sx: {
4276
2706
  flex: 1
4277
- }
4278
- }, field))
2707
+ },
2708
+ ...field
2709
+ })
4279
2710
  }), /* @__PURE__ */ jsx(Controller, {
4280
2711
  name: `regressions.${index2}.plot.yAxisIndex`,
4281
2712
  control,
4282
- render: (_a) => {
4283
- var {
4284
- field: _b
4285
- } = _a, _c = _b, {
2713
+ render: ({
2714
+ field: {
4286
2715
  value,
4287
- onChange
4288
- } = _c, rest = __objRest(_c, [
4289
- "value",
4290
- "onChange"
4291
- ]);
4292
- var _a2;
4293
- return /* @__PURE__ */ jsx(Select, __spreadProps(__spreadValues({
2716
+ onChange,
2717
+ ...rest
2718
+ }
2719
+ }) => {
2720
+ var _a;
2721
+ return /* @__PURE__ */ jsx(Select, {
4294
2722
  label: "Y Axis",
4295
2723
  data: yAxisOptions,
4296
- disabled: yAxisOptions.length === 0
4297
- }, rest), {
4298
- value: (_a2 = value == null ? void 0 : value.toString()) != null ? _a2 : "",
2724
+ disabled: yAxisOptions.length === 0,
2725
+ ...rest,
2726
+ value: (_a = value == null ? void 0 : value.toString()) != null ? _a : "",
4299
2727
  onChange: (value2) => {
4300
2728
  if (!value2) {
4301
2729
  onChange(0);
@@ -4306,7 +2734,7 @@ function RegressionField({
4306
2734
  sx: {
4307
2735
  flex: 1
4308
2736
  }
4309
- }));
2737
+ });
4310
2738
  }
4311
2739
  })]
4312
2740
  }), /* @__PURE__ */ jsxs(Group, {
@@ -4318,24 +2746,26 @@ function RegressionField({
4318
2746
  control,
4319
2747
  render: ({
4320
2748
  field
4321
- }) => /* @__PURE__ */ jsx(Select, __spreadValues({
2749
+ }) => /* @__PURE__ */ jsx(Select, {
4322
2750
  label: "Method",
4323
2751
  data: regressionOptions,
4324
2752
  sx: {
4325
2753
  flex: 1
4326
- }
4327
- }, field))
2754
+ },
2755
+ ...field
2756
+ })
4328
2757
  }), method === "polynomial" && /* @__PURE__ */ jsx(Controller, {
4329
2758
  name: `regressions.${index2}.transform.config.order`,
4330
2759
  control,
4331
2760
  render: ({
4332
2761
  field
4333
- }) => /* @__PURE__ */ jsx(NumberInput, __spreadValues({
2762
+ }) => /* @__PURE__ */ jsx(NumberInput, {
4334
2763
  label: "Order",
4335
2764
  sx: {
4336
2765
  flex: 1
4337
- }
4338
- }, field))
2766
+ },
2767
+ ...field
2768
+ })
4339
2769
  })]
4340
2770
  }), /* @__PURE__ */ jsxs(Group, {
4341
2771
  direction: "column",
@@ -4349,7 +2779,9 @@ function RegressionField({
4349
2779
  control,
4350
2780
  render: ({
4351
2781
  field
4352
- }) => /* @__PURE__ */ jsx(MantineColorSelector, __spreadValues({}, field))
2782
+ }) => /* @__PURE__ */ jsx(MantineColorSelector, {
2783
+ ...field
2784
+ })
4353
2785
  })]
4354
2786
  }), /* @__PURE__ */ jsx(ActionIcon, {
4355
2787
  color: "red",
@@ -4382,7 +2814,10 @@ function RegressionsField({
4382
2814
  });
4383
2815
  const watchFieldArray = watch("regressions");
4384
2816
  const controlledFields = fields.map((field, index2) => {
4385
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
2817
+ return {
2818
+ ...field,
2819
+ ...watchFieldArray[index2]
2820
+ };
4386
2821
  });
4387
2822
  const yAxisOptions = React.useMemo(() => {
4388
2823
  return getValues().y_axes.map(({
@@ -4671,19 +3106,17 @@ function getANewVariable() {
4671
3106
  }
4672
3107
  };
4673
3108
  }
4674
- const TemplateInput = React.forwardRef(function TemplateInput2(_a, ref) {
4675
- var _b = _a, {
4676
- value,
4677
- onChange
4678
- } = _b, rest = __objRest(_b, [
4679
- "value",
4680
- "onChange"
4681
- ]);
4682
- return /* @__PURE__ */ jsx(TextInput, __spreadValues({
3109
+ const TemplateInput = React.forwardRef(function TemplateInput2({
3110
+ value,
3111
+ onChange,
3112
+ ...rest
3113
+ }, ref) {
3114
+ return /* @__PURE__ */ jsx(TextInput, {
4683
3115
  ref,
4684
3116
  value,
4685
- onChange
4686
- }, rest));
3117
+ onChange,
3118
+ ...rest
3119
+ });
4687
3120
  });
4688
3121
  function TemplateVariableField({
4689
3122
  value,
@@ -4817,9 +3250,10 @@ function VariableField$1({
4817
3250
  control,
4818
3251
  render: ({
4819
3252
  field
4820
- }) => /* @__PURE__ */ jsx(TemplateVariableField, __spreadValues({
4821
- data
4822
- }, field))
3253
+ }) => /* @__PURE__ */ jsx(TemplateVariableField, {
3254
+ data,
3255
+ ...field
3256
+ })
4823
3257
  }), /* @__PURE__ */ jsx(ActionIcon, {
4824
3258
  color: "red",
4825
3259
  variant: "hover",
@@ -4851,7 +3285,10 @@ function StatsField({
4851
3285
  watch("stats.templates");
4852
3286
  const watchFieldArray = watch("stats.variables");
4853
3287
  const controlledFields = fields.map((field, index2) => {
4854
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
3288
+ return {
3289
+ ...field,
3290
+ ...watchFieldArray[index2]
3291
+ };
4855
3292
  });
4856
3293
  const add = () => append(getANewVariable());
4857
3294
  return /* @__PURE__ */ jsxs(Group, {
@@ -4867,25 +3304,27 @@ function StatsField({
4867
3304
  control,
4868
3305
  render: ({
4869
3306
  field
4870
- }) => /* @__PURE__ */ jsx(TemplateInput, __spreadValues({
3307
+ }) => /* @__PURE__ */ jsx(TemplateInput, {
4871
3308
  label: "Template for stats above the chart",
4872
3309
  py: "md",
4873
3310
  sx: {
4874
3311
  flexGrow: 1
4875
- }
4876
- }, field))
3312
+ },
3313
+ ...field
3314
+ })
4877
3315
  }), /* @__PURE__ */ jsx(Controller, {
4878
3316
  name: "stats.templates.bottom",
4879
3317
  control,
4880
3318
  render: ({
4881
3319
  field
4882
- }) => /* @__PURE__ */ jsx(TemplateInput, __spreadValues({
3320
+ }) => /* @__PURE__ */ jsx(TemplateInput, {
4883
3321
  label: "Template for stats under the chart",
4884
3322
  py: "md",
4885
3323
  sx: {
4886
3324
  flexGrow: 1
4887
- }
4888
- }, field))
3325
+ },
3326
+ ...field
3327
+ })
4889
3328
  })]
4890
3329
  }), controlledFields.map((_variableItem, index2) => /* @__PURE__ */ jsx(VariableField$1, {
4891
3330
  control,
@@ -4951,30 +3390,27 @@ function VizCartesianChartPanel({
4951
3390
  setConf,
4952
3391
  data
4953
3392
  }) {
4954
- const _a = conf, {
3393
+ const {
4955
3394
  series,
4956
- y_axes
4957
- } = _a, restConf = __objRest(_a, [
4958
- "series",
4959
- "y_axes"
4960
- ]);
3395
+ y_axes,
3396
+ ...restConf
3397
+ } = conf;
4961
3398
  const defaultValues = React.useMemo(() => {
4962
- const _a2 = restConf, {
3399
+ const {
4963
3400
  x_axis_name = "",
4964
- stats
4965
- } = _a2, rest = __objRest(_a2, [
4966
- "x_axis_name",
4967
- "stats"
4968
- ]);
4969
- return __spreadValues({
3401
+ stats,
3402
+ ...rest
3403
+ } = restConf;
3404
+ return {
4970
3405
  series: withDefaults(series != null ? series : []),
4971
3406
  x_axis_name,
4972
3407
  y_axes: y_axes != null ? y_axes : [{
4973
3408
  name: "Y Axis",
4974
3409
  label_formatter: defaultNumbroFormat
4975
3410
  }],
4976
- stats: normalizeStats(stats)
4977
- }, rest);
3411
+ stats: normalizeStats(stats),
3412
+ ...rest
3413
+ };
4978
3414
  }, [series, restConf]);
4979
3415
  React.useEffect(() => {
4980
3416
  const configMalformed = !_.isEqual(conf, defaultValues);
@@ -5040,25 +3476,27 @@ function VizCartesianChartPanel({
5040
3476
  control,
5041
3477
  render: ({
5042
3478
  field
5043
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3479
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
5044
3480
  label: "X Axis Data Field",
5045
3481
  required: true,
5046
3482
  data,
5047
3483
  sx: {
5048
3484
  flex: 1
5049
- }
5050
- }, field))
3485
+ },
3486
+ ...field
3487
+ })
5051
3488
  }), /* @__PURE__ */ jsx(Controller, {
5052
3489
  name: "x_axis_name",
5053
3490
  control,
5054
3491
  render: ({
5055
3492
  field
5056
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
3493
+ }) => /* @__PURE__ */ jsx(TextInput, {
5057
3494
  label: "X Axis Name",
5058
3495
  sx: {
5059
3496
  flex: 1
5060
- }
5061
- }, field))
3497
+ },
3498
+ ...field
3499
+ })
5062
3500
  })]
5063
3501
  })
5064
3502
  }), /* @__PURE__ */ jsx(Accordion.Item, {
@@ -5144,15 +3582,17 @@ function VizPiePanel({
5144
3582
  border: "1px solid #eee",
5145
3583
  borderRadius: "5px"
5146
3584
  },
5147
- children: [/* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3585
+ children: [/* @__PURE__ */ jsx(DataFieldSelector, {
5148
3586
  label: "Label Field",
5149
3587
  required: true,
5150
- data
5151
- }, form.getInputProps("label_field"))), /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3588
+ data,
3589
+ ...form.getInputProps("label_field")
3590
+ }), /* @__PURE__ */ jsx(DataFieldSelector, {
5152
3591
  label: "Value Field",
5153
3592
  required: true,
5154
- data
5155
- }, form.getInputProps("value_field")))]
3593
+ data,
3594
+ ...form.getInputProps("value_field")
3595
+ })]
5156
3596
  })]
5157
3597
  })
5158
3598
  });
@@ -5220,11 +3660,12 @@ function VizRichTextPanel({
5220
3660
  control,
5221
3661
  render: ({
5222
3662
  field
5223
- }) => /* @__PURE__ */ jsx(RichTextEditor, __spreadValues({
3663
+ }) => /* @__PURE__ */ jsx(RichTextEditor, {
5224
3664
  sx: {
5225
3665
  flex: 1
5226
- }
5227
- }, field))
3666
+ },
3667
+ ...field
3668
+ })
5228
3669
  })]
5229
3670
  })
5230
3671
  });
@@ -5286,9 +3727,10 @@ function VariableField({
5286
3727
  control,
5287
3728
  render: ({
5288
3729
  field
5289
- }) => /* @__PURE__ */ jsx(TemplateVariableField, __spreadValues({
5290
- data
5291
- }, field))
3730
+ }) => /* @__PURE__ */ jsx(TemplateVariableField, {
3731
+ data,
3732
+ ...field
3733
+ })
5292
3734
  }), /* @__PURE__ */ jsx(ActionIcon, {
5293
3735
  color: "red",
5294
3736
  variant: "hover",
@@ -5319,7 +3761,10 @@ function VariablesField({
5319
3761
  });
5320
3762
  const watchFieldArray = watch("variables");
5321
3763
  const controlledFields = fields.map((field, index2) => {
5322
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
3764
+ return {
3765
+ ...field,
3766
+ ...watchFieldArray[index2]
3767
+ };
5323
3768
  });
5324
3769
  const add = () => append(getANewVariable());
5325
3770
  return /* @__PURE__ */ jsxs(Group, {
@@ -5434,13 +3879,14 @@ function VizStatsPanel({
5434
3879
  control,
5435
3880
  render: ({
5436
3881
  field
5437
- }) => /* @__PURE__ */ jsx(TemplateInput, __spreadValues({
3882
+ }) => /* @__PURE__ */ jsx(TemplateInput, {
5438
3883
  label: "Template",
5439
3884
  py: "md",
5440
3885
  sx: {
5441
3886
  flexGrow: 1
5442
- }
5443
- }, field))
3887
+ },
3888
+ ...field
3889
+ })
5444
3890
  }), /* @__PURE__ */ jsx(Text, {
5445
3891
  pb: "sm",
5446
3892
  pt: "md",
@@ -5503,15 +3949,17 @@ function SunburstPanel({
5503
3949
  border: "1px solid #eee",
5504
3950
  borderRadius: "5px"
5505
3951
  },
5506
- children: [/* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3952
+ children: [/* @__PURE__ */ jsx(DataFieldSelector, {
5507
3953
  label: "Label Field",
5508
3954
  required: true,
5509
- data
5510
- }, form.getInputProps("label_field"))), /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3955
+ data,
3956
+ ...form.getInputProps("label_field")
3957
+ }), /* @__PURE__ */ jsx(DataFieldSelector, {
5511
3958
  label: "Value Field",
5512
3959
  required: true,
5513
- data
5514
- }, form.getInputProps("value_field")))]
3960
+ data,
3961
+ ...form.getInputProps("value_field")
3962
+ })]
5515
3963
  })]
5516
3964
  })
5517
3965
  });
@@ -5534,19 +3982,16 @@ function ValueTypeSelector({
5534
3982
  sx
5535
3983
  });
5536
3984
  }
5537
- function VizTablePanel(_c) {
5538
- var _d = _c, {
5539
- conf: _e
5540
- } = _d, _f = _e, {
5541
- columns
5542
- } = _f, restConf = __objRest(_f, [
5543
- "columns"
5544
- ]), {
5545
- setConf,
5546
- data
5547
- } = _d;
3985
+ function VizTablePanel({
3986
+ conf: {
3987
+ columns,
3988
+ ...restConf
3989
+ },
3990
+ setConf,
3991
+ data
3992
+ }) {
5548
3993
  const form = useForm$1({
5549
- initialValues: __spreadValues({
3994
+ initialValues: {
5550
3995
  id_field: "id",
5551
3996
  use_raw_columns: true,
5552
3997
  columns: formList(columns != null ? columns : []),
@@ -5554,8 +3999,9 @@ function VizTablePanel(_c) {
5554
3999
  horizontalSpacing: "sm",
5555
4000
  verticalSpacing: "sm",
5556
4001
  striped: false,
5557
- highlightOnHover: false
5558
- }, restConf)
4002
+ highlightOnHover: false,
4003
+ ...restConf
4004
+ }
5559
4005
  });
5560
4006
  const addColumn = () => form.addListItem("columns", {
5561
4007
  label: randomId(),
@@ -5597,11 +4043,12 @@ function VizTablePanel(_c) {
5597
4043
  border: "1px solid #eee",
5598
4044
  borderRadius: "5px"
5599
4045
  },
5600
- children: [/* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
4046
+ children: [/* @__PURE__ */ jsx(DataFieldSelector, {
5601
4047
  label: "ID Field",
5602
4048
  required: true,
5603
- data
5604
- }, form.getInputProps("id_field"))), /* @__PURE__ */ jsxs(Group, {
4049
+ data,
4050
+ ...form.getInputProps("id_field")
4051
+ }), /* @__PURE__ */ jsxs(Group, {
5605
4052
  position: "apart",
5606
4053
  mb: "lg",
5607
4054
  grow: true,
@@ -5610,21 +4057,23 @@ function VizTablePanel(_c) {
5610
4057
  flexGrow: 1
5611
4058
  }
5612
4059
  },
5613
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4060
+ children: [/* @__PURE__ */ jsx(TextInput, {
5614
4061
  label: "Horizontal Spacing",
5615
4062
  placeholder: "10px, 1em, 1rem, 100%...",
5616
4063
  required: true,
5617
4064
  sx: {
5618
4065
  flex: 1
5619
- }
5620
- }, form.getInputProps("horizontalSpacing"))), /* @__PURE__ */ jsx(TextInput, __spreadValues({
4066
+ },
4067
+ ...form.getInputProps("horizontalSpacing")
4068
+ }), /* @__PURE__ */ jsx(TextInput, {
5621
4069
  label: "Vertical Spacing",
5622
4070
  placeholder: "10px, 1em, 1rem, 100%...",
5623
4071
  required: true,
5624
4072
  sx: {
5625
4073
  flex: 1
5626
- }
5627
- }, form.getInputProps("verticalSpacing")))]
4074
+ },
4075
+ ...form.getInputProps("verticalSpacing")
4076
+ })]
5628
4077
  }), /* @__PURE__ */ jsx(Group, {
5629
4078
  position: "apart",
5630
4079
  mb: "lg",
@@ -5634,14 +4083,15 @@ function VizTablePanel(_c) {
5634
4083
  flexGrow: 1
5635
4084
  }
5636
4085
  },
5637
- children: /* @__PURE__ */ jsx(TextInput, __spreadValues({
4086
+ children: /* @__PURE__ */ jsx(TextInput, {
5638
4087
  label: "Font Size",
5639
4088
  placeholder: "10px, 1em, 1rem, 100%...",
5640
4089
  required: true,
5641
4090
  sx: {
5642
4091
  flex: 1
5643
- }
5644
- }, form.getInputProps("fontSize")))
4092
+ },
4093
+ ...form.getInputProps("fontSize")
4094
+ })
5645
4095
  }), /* @__PURE__ */ jsxs(Group, {
5646
4096
  direction: "column",
5647
4097
  grow: true,
@@ -5650,15 +4100,17 @@ function VizTablePanel(_c) {
5650
4100
  }), /* @__PURE__ */ jsxs(Group, {
5651
4101
  position: "apart",
5652
4102
  grow: true,
5653
- children: [/* @__PURE__ */ jsx(Switch, __spreadValues({
5654
- label: "Striped"
5655
- }, form.getInputProps("striped", {
5656
- type: "checkbox"
5657
- }))), /* @__PURE__ */ jsx(Switch, __spreadValues({
5658
- label: "Highlight on hover"
5659
- }, form.getInputProps("highlightOnHover", {
5660
- type: "checkbox"
5661
- })))]
4103
+ children: [/* @__PURE__ */ jsx(Switch, {
4104
+ label: "Striped",
4105
+ ...form.getInputProps("striped", {
4106
+ type: "checkbox"
4107
+ })
4108
+ }), /* @__PURE__ */ jsx(Switch, {
4109
+ label: "Highlight on hover",
4110
+ ...form.getInputProps("highlightOnHover", {
4111
+ type: "checkbox"
4112
+ })
4113
+ })]
5662
4114
  })]
5663
4115
  })]
5664
4116
  }), /* @__PURE__ */ jsxs(Group, {
@@ -5672,11 +4124,12 @@ function VizTablePanel(_c) {
5672
4124
  border: "1px solid #eee",
5673
4125
  borderRadius: "5px"
5674
4126
  },
5675
- children: [/* @__PURE__ */ jsx(Switch, __spreadValues({
5676
- label: "Use Original Data Columns"
5677
- }, form.getInputProps("use_raw_columns", {
5678
- type: "checkbox"
5679
- }))), !form.values.use_raw_columns && /* @__PURE__ */ jsxs(Group, {
4127
+ children: [/* @__PURE__ */ jsx(Switch, {
4128
+ label: "Use Original Data Columns",
4129
+ ...form.getInputProps("use_raw_columns", {
4130
+ type: "checkbox"
4131
+ })
4132
+ }), !form.values.use_raw_columns && /* @__PURE__ */ jsxs(Group, {
5680
4133
  direction: "column",
5681
4134
  grow: true,
5682
4135
  children: [/* @__PURE__ */ jsx(Text, {
@@ -5696,22 +4149,25 @@ function VizTablePanel(_c) {
5696
4149
  children: [/* @__PURE__ */ jsxs(Group, {
5697
4150
  position: "apart",
5698
4151
  grow: true,
5699
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4152
+ children: [/* @__PURE__ */ jsx(TextInput, {
5700
4153
  label: "Label",
5701
4154
  required: true,
5702
4155
  sx: {
5703
4156
  flex: 1
5704
- }
5705
- }, form.getListInputProps("columns", index2, "label"))), /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
4157
+ },
4158
+ ...form.getListInputProps("columns", index2, "label")
4159
+ }), /* @__PURE__ */ jsx(DataFieldSelector, {
5706
4160
  label: "Value Field",
5707
4161
  required: true,
5708
- data
5709
- }, form.getListInputProps("columns", index2, "value_field"))), /* @__PURE__ */ jsx(ValueTypeSelector, __spreadValues({
4162
+ data,
4163
+ ...form.getListInputProps("columns", index2, "value_field")
4164
+ }), /* @__PURE__ */ jsx(ValueTypeSelector, {
5710
4165
  label: "Value Type",
5711
4166
  sx: {
5712
4167
  flex: 1
5713
- }
5714
- }, form.getListInputProps("columns", index2, "value_type")))]
4168
+ },
4169
+ ...form.getListInputProps("columns", index2, "value_type")
4170
+ })]
5715
4171
  }), /* @__PURE__ */ jsx(ActionIcon, {
5716
4172
  color: "red",
5717
4173
  variant: "hover",
@@ -5770,9 +4226,10 @@ function VizTextPanel({
5770
4226
  paragraphs: formList((_a = conf.paragraphs) != null ? _a : sampleParagraphs)
5771
4227
  }
5772
4228
  });
5773
- const addParagraph = () => form.addListItem("paragraphs", __spreadProps(__spreadValues({}, sampleParagraphs[0]), {
4229
+ const addParagraph = () => form.addListItem("paragraphs", {
4230
+ ...sampleParagraphs[0],
5774
4231
  template: randomId()
5775
- }));
4232
+ });
5776
4233
  return /* @__PURE__ */ jsx(Group, {
5777
4234
  direction: "column",
5778
4235
  mt: "md",
@@ -5813,29 +4270,33 @@ function VizTextPanel({
5813
4270
  border: "1px solid #eee",
5814
4271
  position: "relative"
5815
4272
  },
5816
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4273
+ children: [/* @__PURE__ */ jsx(TextInput, {
5817
4274
  placeholder: "Time: ${new Date().toISOString()}",
5818
4275
  label: "Content Template",
5819
4276
  required: true,
5820
4277
  sx: {
5821
4278
  flex: 1
5822
- }
5823
- }, form.getListInputProps("paragraphs", index2, "template"))), /* @__PURE__ */ jsxs(Group, {
4279
+ },
4280
+ ...form.getListInputProps("paragraphs", index2, "template")
4281
+ }), /* @__PURE__ */ jsxs(Group, {
5824
4282
  direction: "column",
5825
4283
  grow: true,
5826
4284
  children: [/* @__PURE__ */ jsx(Text, {
5827
4285
  children: "Color"
5828
- }), /* @__PURE__ */ jsx(MantineColorSelector, __spreadValues({}, form.getListInputProps("paragraphs", index2, "color")))]
4286
+ }), /* @__PURE__ */ jsx(MantineColorSelector, {
4287
+ ...form.getListInputProps("paragraphs", index2, "color")
4288
+ })]
5829
4289
  }), /* @__PURE__ */ jsx(Group, {
5830
4290
  direction: "column",
5831
4291
  grow: true,
5832
- children: /* @__PURE__ */ jsx(TextInput, __spreadValues({
4292
+ children: /* @__PURE__ */ jsx(TextInput, {
5833
4293
  label: "Font Size",
5834
4294
  placeholder: "10px, 1em, 1rem, 100%...",
5835
4295
  sx: {
5836
4296
  flex: 1
5837
- }
5838
- }, form.getListInputProps("paragraphs", index2, "size")))
4297
+ },
4298
+ ...form.getListInputProps("paragraphs", index2, "size")
4299
+ })
5839
4300
  }), /* @__PURE__ */ jsx(Group, {
5840
4301
  position: "apart",
5841
4302
  grow: true,
@@ -5845,9 +4306,10 @@ function VizTextPanel({
5845
4306
  maxWidth: "100%"
5846
4307
  }
5847
4308
  },
5848
- children: /* @__PURE__ */ jsx(MantineFontWeightSlider, __spreadValues({
5849
- label: "Font Weight"
5850
- }, form.getListInputProps("paragraphs", index2, "weight")))
4309
+ children: /* @__PURE__ */ jsx(MantineFontWeightSlider, {
4310
+ label: "Font Weight",
4311
+ ...form.getListInputProps("paragraphs", index2, "weight")
4312
+ })
5851
4313
  }), /* @__PURE__ */ jsx(ActionIcon, {
5852
4314
  color: "red",
5853
4315
  variant: "hover",
@@ -5927,12 +4389,14 @@ function EditVizConf() {
5927
4389
  if (!changed) {
5928
4390
  return;
5929
4391
  }
5930
- setViz((v) => __spreadProps(__spreadValues({}, v), {
4392
+ setViz((v) => ({
4393
+ ...v,
5931
4394
  type
5932
4395
  }));
5933
4396
  }, [changed, type]);
5934
4397
  const setVizConf = (conf) => {
5935
- setViz((v) => __spreadProps(__spreadValues({}, v), {
4398
+ setViz((v) => ({
4399
+ ...v,
5936
4400
  conf
5937
4401
  }));
5938
4402
  };
@@ -6247,15 +4711,14 @@ function DashboardLayout({
6247
4711
  }) {
6248
4712
  const onLayoutChange = React.useCallback((currentLayout) => {
6249
4713
  const m2 = /* @__PURE__ */ new Map();
6250
- currentLayout.forEach((_a) => {
6251
- var _b = _a, {
6252
- i
6253
- } = _b, rest = __objRest(_b, [
6254
- "i"
6255
- ]);
4714
+ currentLayout.forEach(({
4715
+ i,
4716
+ ...rest
4717
+ }) => {
6256
4718
  m2.set(i, rest);
6257
4719
  });
6258
- const newPanels = panels.map((p2) => __spreadProps(__spreadValues({}, p2), {
4720
+ const newPanels = panels.map((p2) => ({
4721
+ ...p2,
6259
4722
  layout: m2.get(p2.id)
6260
4723
  }));
6261
4724
  setPanels(newPanels);
@@ -6266,24 +4729,22 @@ function DashboardLayout({
6266
4729
  rowHeight,
6267
4730
  isDraggable,
6268
4731
  isResizable,
6269
- children: panels.map((_a, index2) => {
6270
- var _b = _a, {
6271
- id
6272
- } = _b, rest = __objRest(_b, [
6273
- "id"
6274
- ]);
4732
+ children: panels.map(({
4733
+ id,
4734
+ ...rest
4735
+ }, index2) => {
6275
4736
  return /* @__PURE__ */ jsx("div", {
6276
4737
  "data-grid": rest.layout,
6277
- children: /* @__PURE__ */ jsx(Panel, __spreadProps(__spreadValues({
6278
- id
6279
- }, rest), {
4738
+ children: /* @__PURE__ */ jsx(Panel, {
4739
+ id,
4740
+ ...rest,
6280
4741
  update: (panel) => {
6281
4742
  setPanels((prevs) => {
6282
4743
  prevs.splice(index2, 1, panel);
6283
4744
  return [...prevs];
6284
4745
  });
6285
4746
  }
6286
- }))
4747
+ })
6287
4748
  }, id);
6288
4749
  })
6289
4750
  });
@@ -6508,39 +4969,42 @@ function QueryForm({
6508
4969
  pr: 40,
6509
4970
  children: [/* @__PURE__ */ jsxs(Group, {
6510
4971
  grow: true,
6511
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4972
+ children: [/* @__PURE__ */ jsx(TextInput, {
6512
4973
  placeholder: "An ID unique in this dashboard",
6513
4974
  label: "ID",
6514
4975
  required: true,
6515
4976
  sx: {
6516
4977
  flex: 1
6517
4978
  },
6518
- disabled: loading
6519
- }, form.getInputProps("id"))), /* @__PURE__ */ jsx(Select, __spreadValues({
4979
+ disabled: loading,
4980
+ ...form.getInputProps("id")
4981
+ }), /* @__PURE__ */ jsx(Select, {
6520
4982
  label: "Data Source Type",
6521
4983
  data: querySourceTypeOptions,
6522
4984
  sx: {
6523
4985
  flex: 1
6524
4986
  },
6525
- disabled: loading
6526
- }, form.getInputProps("type"))), /* @__PURE__ */ jsx(Select, __spreadValues({
4987
+ disabled: loading,
4988
+ ...form.getInputProps("type")
4989
+ }), /* @__PURE__ */ jsx(Select, {
6527
4990
  label: "Data Source Key",
6528
4991
  data: querySourceKeyOptions,
6529
4992
  sx: {
6530
4993
  flex: 1
6531
4994
  },
6532
- disabled: loading
6533
- }, form.getInputProps("key")))]
4995
+ disabled: loading,
4996
+ ...form.getInputProps("key")
4997
+ })]
6534
4998
  }), /* @__PURE__ */ jsxs(Tabs, {
6535
4999
  children: [/* @__PURE__ */ jsx(Tabs.Tab, {
6536
5000
  label: "SQL",
6537
- children: /* @__PURE__ */ jsx(Textarea, __spreadProps(__spreadValues({
5001
+ children: /* @__PURE__ */ jsx(Textarea, {
6538
5002
  autosize: true,
6539
5003
  minRows: 12,
6540
- maxRows: 24
6541
- }, form.getInputProps("sql")), {
5004
+ maxRows: 24,
5005
+ ...form.getInputProps("sql"),
6542
5006
  className: "code-textarea"
6543
- }))
5007
+ })
6544
5008
  }), /* @__PURE__ */ jsx(Tabs.Tab, {
6545
5009
  label: "Preview",
6546
5010
  children: /* @__PURE__ */ jsx(PreviewSQL, {
@@ -6857,16 +5321,17 @@ function SQLSnippetsEditor({}) {
6857
5321
  border: "1px solid #eee",
6858
5322
  position: "relative"
6859
5323
  },
6860
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
5324
+ children: [/* @__PURE__ */ jsx(TextInput, {
6861
5325
  label: "Key",
6862
- required: true
6863
- }, form.getListInputProps("snippets", index2, "key"))), /* @__PURE__ */ jsx(Textarea, __spreadProps(__spreadValues({
5326
+ required: true,
5327
+ ...form.getListInputProps("snippets", index2, "key")
5328
+ }), /* @__PURE__ */ jsx(Textarea, {
6864
5329
  minRows: 3,
6865
5330
  label: "Value",
6866
- required: true
6867
- }, form.getListInputProps("snippets", index2, "value")), {
5331
+ required: true,
5332
+ ...form.getListInputProps("snippets", index2, "value"),
6868
5333
  className: "code-textarea"
6869
- })), /* @__PURE__ */ jsx(PreviewSnippet, {
5334
+ }), /* @__PURE__ */ jsx(PreviewSnippet, {
6870
5335
  value: form.values.snippets[index2].value
6871
5336
  }), /* @__PURE__ */ jsx(ActionIcon, {
6872
5337
  color: "red",
@@ -7176,7 +5641,9 @@ function FullScreenPanel({
7176
5641
  flexGrow: 1,
7177
5642
  flexShrink: 0
7178
5643
  },
7179
- children: /* @__PURE__ */ jsx(Panel, __spreadValues({}, panel))
5644
+ children: /* @__PURE__ */ jsx(Panel, {
5645
+ ...panel
5646
+ })
7180
5647
  })]
7181
5648
  });
7182
5649
  }
@@ -7226,13 +5693,14 @@ function Dashboard({
7226
5693
  return !_.isEqual(queries, dashboard.definition.queries);
7227
5694
  }, [dashboard, panels, sqlSnippets, queries]);
7228
5695
  const saveDashboardChanges = async () => {
7229
- const d = __spreadProps(__spreadValues({}, dashboard), {
5696
+ const d = {
5697
+ ...dashboard,
7230
5698
  panels,
7231
5699
  definition: {
7232
5700
  sqlSnippets,
7233
5701
  queries
7234
5702
  }
7235
- });
5703
+ };
7236
5704
  await update(d);
7237
5705
  };
7238
5706
  const revertDashboardChanges = () => {
@@ -7266,13 +5734,15 @@ function Dashboard({
7266
5734
  if (!panel) {
7267
5735
  throw new Error(`[duplicate panel] Can't find a panel by id[${id}]`);
7268
5736
  }
7269
- const newPanel = __spreadProps(__spreadValues({}, panel), {
5737
+ const newPanel = {
5738
+ ...panel,
7270
5739
  id: randomId(),
7271
- layout: __spreadProps(__spreadValues({}, panel.layout), {
5740
+ layout: {
5741
+ ...panel.layout,
7272
5742
  x: 0,
7273
5743
  y: Infinity
7274
- })
7275
- });
5744
+ }
5745
+ };
7276
5746
  setPanels((prevs) => [...prevs, newPanel]);
7277
5747
  } catch (error) {
7278
5748
  console.error(error);
@@ -7371,17 +5841,16 @@ function ReadOnlyDashboardLayout({
7371
5841
  rowHeight,
7372
5842
  isDraggable: false,
7373
5843
  isResizable: false,
7374
- children: panels.map((_a) => {
7375
- var _b = _a, {
7376
- id
7377
- } = _b, rest = __objRest(_b, [
7378
- "id"
7379
- ]);
5844
+ children: panels.map(({
5845
+ id,
5846
+ ...rest
5847
+ }) => {
7380
5848
  return /* @__PURE__ */ jsx("div", {
7381
5849
  "data-grid": rest.layout,
7382
- children: /* @__PURE__ */ jsx(Panel, __spreadValues({
7383
- id
7384
- }, rest))
5850
+ children: /* @__PURE__ */ jsx(Panel, {
5851
+ id,
5852
+ ...rest
5853
+ })
7385
5854
  }, id);
7386
5855
  })
7387
5856
  });
@@ -7395,7 +5864,8 @@ function ReadOnlyDashboard({
7395
5864
  if (APIClient.baseURL !== config.apiBaseURL) {
7396
5865
  APIClient.baseURL = config.apiBaseURL;
7397
5866
  }
7398
- const definition = React.useMemo(() => __spreadProps(__spreadValues({}, dashboard.definition), {
5867
+ const definition = React.useMemo(() => ({
5868
+ ...dashboard.definition,
7399
5869
  setSQLSnippets: () => {
7400
5870
  },
7401
5871
  setQueries: () => {