@devtable/dashboard 1.29.0 → 1.32.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, Settings, Copy, Resize, Paint, PlayerPlay, Database, Recycle, Share } 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,240 +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
- };
538
- const DashboardActionContext = React.createContext(initialContext$1);
539
- const initialContext = {
540
- sqlSnippets: [],
541
- setSQLSnippets: () => {
542
- },
543
- queries: [],
544
- setQueries: () => {
545
- }
546
- };
547
- const DefinitionContext = React.createContext(initialContext);
548
215
  function DescriptionPopover({
549
216
  position = "bottom",
550
217
  trigger = "hover"
@@ -958,13 +625,11 @@ function Sunbrust({
958
625
  width,
959
626
  height
960
627
  }) {
961
- const _a = conf, {
628
+ const {
962
629
  label_field = "name",
963
- value_field = "value"
964
- } = _a, restConf = __objRest(_a, [
965
- "label_field",
966
- "value_field"
967
- ]);
630
+ value_field = "value",
631
+ ...restConf
632
+ } = conf;
968
633
  const chartData = React.useMemo(() => {
969
634
  return data.map((d) => ({
970
635
  name: d[label_field],
@@ -972,8 +637,8 @@ function Sunbrust({
972
637
  }));
973
638
  }, [data, label_field, value_field]);
974
639
  const max = React.useMemo(() => {
975
- var _a2, _b;
976
- return (_b = (_a2 = _.maxBy(chartData, (d) => d.value)) == null ? void 0 : _a2.value) != null ? _b : 1;
640
+ var _a, _b;
641
+ return (_b = (_a = _.maxBy(chartData, (d) => d.value)) == null ? void 0 : _a.value) != null ? _b : 1;
977
642
  }, [chartData]);
978
643
  const labelOption = React.useMemo(() => ({
979
644
  series: {
@@ -1004,1269 +669,6 @@ function Sunbrust({
1004
669
  }
1005
670
  });
1006
671
  }
1007
- var ecStat = { exports: {} };
1008
- (function(module, exports) {
1009
- (function webpackUniversalModuleDefinition(root, factory) {
1010
- module.exports = factory();
1011
- })(commonjsGlobal, function() {
1012
- return function(modules) {
1013
- var installedModules = {};
1014
- function __webpack_require__(moduleId) {
1015
- if (installedModules[moduleId])
1016
- return installedModules[moduleId].exports;
1017
- var module2 = installedModules[moduleId] = {
1018
- exports: {},
1019
- id: moduleId,
1020
- loaded: false
1021
- };
1022
- modules[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
1023
- module2.loaded = true;
1024
- return module2.exports;
1025
- }
1026
- __webpack_require__.m = modules;
1027
- __webpack_require__.c = installedModules;
1028
- __webpack_require__.p = "";
1029
- return __webpack_require__(0);
1030
- }([
1031
- function(module2, exports2, __webpack_require__) {
1032
- var __WEBPACK_AMD_DEFINE_RESULT__;
1033
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1034
- return {
1035
- clustering: __webpack_require__(1),
1036
- regression: __webpack_require__(5),
1037
- statistics: __webpack_require__(6),
1038
- histogram: __webpack_require__(15),
1039
- transform: {
1040
- regression: __webpack_require__(18),
1041
- histogram: __webpack_require__(21),
1042
- clustering: __webpack_require__(22)
1043
- }
1044
- };
1045
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1046
- },
1047
- function(module2, exports2, __webpack_require__) {
1048
- var __WEBPACK_AMD_DEFINE_RESULT__;
1049
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1050
- var dataProcess = __webpack_require__(2);
1051
- var dataPreprocess = dataProcess.dataPreprocess;
1052
- var normalizeDimensions = dataProcess.normalizeDimensions;
1053
- var arrayUtil = __webpack_require__(3);
1054
- var numberUtil = __webpack_require__(4);
1055
- var arraySize = arrayUtil.size;
1056
- var sumOfColumn = arrayUtil.sumOfColumn;
1057
- var arraySum = arrayUtil.sum;
1058
- var zeros = arrayUtil.zeros;
1059
- var numberUtil = __webpack_require__(4);
1060
- var isNumber = numberUtil.isNumber;
1061
- var mathPow = Math.pow;
1062
- var OutputType = {
1063
- SINGLE: "single",
1064
- MULTIPLE: "multiple"
1065
- };
1066
- function kMeans(data, k2, dataMeta) {
1067
- var clusterAssigned = zeros(data.length, 2);
1068
- var centroids = createRandCent(k2, calcExtents(data, dataMeta.dimensions));
1069
- var clusterChanged = true;
1070
- var minDist;
1071
- var minIndex;
1072
- var distIJ;
1073
- var ptsInClust;
1074
- while (clusterChanged) {
1075
- clusterChanged = false;
1076
- for (var i = 0; i < data.length; i++) {
1077
- minDist = Infinity;
1078
- minIndex = -1;
1079
- for (var j = 0; j < k2; j++) {
1080
- distIJ = distEuclid(data[i], centroids[j], dataMeta);
1081
- if (distIJ < minDist) {
1082
- minDist = distIJ;
1083
- minIndex = j;
1084
- }
1085
- }
1086
- if (clusterAssigned[i][0] !== minIndex) {
1087
- clusterChanged = true;
1088
- }
1089
- clusterAssigned[i][0] = minIndex;
1090
- clusterAssigned[i][1] = minDist;
1091
- }
1092
- for (var i = 0; i < k2; i++) {
1093
- ptsInClust = [];
1094
- for (var j = 0; j < clusterAssigned.length; j++) {
1095
- if (clusterAssigned[j][0] === i) {
1096
- ptsInClust.push(data[j]);
1097
- }
1098
- }
1099
- centroids[i] = meanInColumns(ptsInClust, dataMeta);
1100
- }
1101
- }
1102
- var clusterWithKmeans = {
1103
- centroids,
1104
- clusterAssigned
1105
- };
1106
- return clusterWithKmeans;
1107
- }
1108
- function meanInColumns(dataList, dataMeta) {
1109
- var meanArray = [];
1110
- var sum;
1111
- var mean;
1112
- for (var j = 0; j < dataMeta.dimensions.length; j++) {
1113
- var dimIdx = dataMeta.dimensions[j];
1114
- sum = 0;
1115
- for (var i = 0; i < dataList.length; i++) {
1116
- sum += dataList[i][dimIdx];
1117
- }
1118
- mean = sum / dataList.length;
1119
- meanArray.push(mean);
1120
- }
1121
- return meanArray;
1122
- }
1123
- function hierarchicalKMeans(data, clusterCountOrConfig, stepByStep) {
1124
- var config = (isNumber(clusterCountOrConfig) ? { clusterCount: clusterCountOrConfig, stepByStep } : clusterCountOrConfig) || { clusterCount: 2 };
1125
- var k2 = config.clusterCount;
1126
- if (k2 < 2) {
1127
- return;
1128
- }
1129
- var dataMeta = parseDataMeta(data, config);
1130
- var isOutputTypeSingle = dataMeta.outputType === OutputType.SINGLE;
1131
- var dataSet = dataPreprocess(data, { dimensions: dataMeta.dimensions });
1132
- var clusterAssment = zeros(dataSet.length, 2);
1133
- var outputSingleData;
1134
- var setClusterIndex;
1135
- var getClusterIndex;
1136
- function setDistance(dataIndex, dist2) {
1137
- clusterAssment[dataIndex][1] = dist2;
1138
- }
1139
- function getDistance(dataIndex) {
1140
- return clusterAssment[dataIndex][1];
1141
- }
1142
- if (isOutputTypeSingle) {
1143
- outputSingleData = [];
1144
- var outputClusterIndexDimension = dataMeta.outputClusterIndexDimension;
1145
- setClusterIndex = function(dataIndex, clusterIndex) {
1146
- outputSingleData[dataIndex][outputClusterIndexDimension] = clusterIndex;
1147
- };
1148
- getClusterIndex = function(dataIndex) {
1149
- return outputSingleData[dataIndex][outputClusterIndexDimension];
1150
- };
1151
- for (var i = 0; i < dataSet.length; i++) {
1152
- outputSingleData.push(dataSet[i].slice());
1153
- setDistance(i, 0);
1154
- setClusterIndex(i, 0);
1155
- }
1156
- } else {
1157
- setClusterIndex = function(dataIndex, clusterIndex) {
1158
- clusterAssment[dataIndex][0] = clusterIndex;
1159
- };
1160
- getClusterIndex = function(dataIndex) {
1161
- return clusterAssment[dataIndex][0];
1162
- };
1163
- }
1164
- var centroid0 = meanInColumns(dataSet, dataMeta);
1165
- var centList = [centroid0];
1166
- for (var i = 0; i < dataSet.length; i++) {
1167
- var dist = distEuclid(dataSet[i], centroid0, dataMeta);
1168
- setDistance(i, dist);
1169
- }
1170
- var lowestSSE;
1171
- var ptsInClust;
1172
- var ptsNotClust;
1173
- var clusterInfo;
1174
- var sseSplit;
1175
- var sseNotSplit;
1176
- var index2 = 1;
1177
- var result = {
1178
- data: outputSingleData,
1179
- centroids: centList,
1180
- isEnd: false
1181
- };
1182
- if (!isOutputTypeSingle) {
1183
- result.clusterAssment = clusterAssment;
1184
- }
1185
- function oneStep() {
1186
- if (index2 < k2) {
1187
- lowestSSE = Infinity;
1188
- var centSplit;
1189
- var newCentroid;
1190
- var newClusterAss;
1191
- for (var j = 0; j < centList.length; j++) {
1192
- ptsInClust = [];
1193
- ptsNotClust = [];
1194
- for (var i2 = 0; i2 < dataSet.length; i2++) {
1195
- if (getClusterIndex(i2) === j) {
1196
- ptsInClust.push(dataSet[i2]);
1197
- } else {
1198
- ptsNotClust.push(getDistance(i2));
1199
- }
1200
- }
1201
- clusterInfo = kMeans(ptsInClust, 2, dataMeta);
1202
- sseSplit = sumOfColumn(clusterInfo.clusterAssigned, 1);
1203
- sseNotSplit = arraySum(ptsNotClust);
1204
- if (sseSplit + sseNotSplit < lowestSSE) {
1205
- lowestSSE = sseNotSplit + sseSplit;
1206
- centSplit = j;
1207
- newCentroid = clusterInfo.centroids;
1208
- newClusterAss = clusterInfo.clusterAssigned;
1209
- }
1210
- }
1211
- for (var i2 = 0; i2 < newClusterAss.length; i2++) {
1212
- if (newClusterAss[i2][0] === 0) {
1213
- newClusterAss[i2][0] = centSplit;
1214
- } else if (newClusterAss[i2][0] === 1) {
1215
- newClusterAss[i2][0] = centList.length;
1216
- }
1217
- }
1218
- centList[centSplit] = newCentroid[0];
1219
- centList.push(newCentroid[1]);
1220
- for (var i2 = 0, j = 0; i2 < dataSet.length && j < newClusterAss.length; i2++) {
1221
- if (getClusterIndex(i2) === centSplit) {
1222
- setClusterIndex(i2, newClusterAss[j][0]);
1223
- setDistance(i2, newClusterAss[j++][1]);
1224
- }
1225
- }
1226
- var pointInClust = [];
1227
- if (!isOutputTypeSingle) {
1228
- for (var i2 = 0; i2 < centList.length; i2++) {
1229
- pointInClust[i2] = [];
1230
- for (var j = 0; j < dataSet.length; j++) {
1231
- if (getClusterIndex(j) === i2) {
1232
- pointInClust[i2].push(dataSet[j]);
1233
- }
1234
- }
1235
- }
1236
- result.pointsInCluster = pointInClust;
1237
- }
1238
- index2++;
1239
- } else {
1240
- result.isEnd = true;
1241
- }
1242
- }
1243
- if (!config.stepByStep) {
1244
- while (oneStep(), !result.isEnd)
1245
- ;
1246
- } else {
1247
- result.next = function() {
1248
- oneStep();
1249
- setCentroidToResultData(result, dataMeta);
1250
- return result;
1251
- };
1252
- }
1253
- setCentroidToResultData(result, dataMeta);
1254
- return result;
1255
- }
1256
- function setCentroidToResultData(result, dataMeta) {
1257
- var outputCentroidDimensions = dataMeta.outputCentroidDimensions;
1258
- if (dataMeta.outputType !== OutputType.SINGLE || outputCentroidDimensions == null) {
1259
- return;
1260
- }
1261
- var outputSingleData = result.data;
1262
- var centroids = result.centroids;
1263
- for (var i = 0; i < outputSingleData.length; i++) {
1264
- var line = outputSingleData[i];
1265
- var clusterIndex = line[dataMeta.outputClusterIndexDimension];
1266
- var centroid = centroids[clusterIndex];
1267
- var dimLen = Math.min(centroid.length, outputCentroidDimensions.length);
1268
- for (var j = 0; j < dimLen; j++) {
1269
- line[outputCentroidDimensions[j]] = centroid[j];
1270
- }
1271
- }
1272
- }
1273
- function createRandCent(k2, extents) {
1274
- var centroids = zeros(k2, extents.length);
1275
- for (var j = 0; j < extents.length; j++) {
1276
- var extentItem = extents[j];
1277
- for (var i = 0; i < k2; i++) {
1278
- centroids[i][j] = extentItem.min + extentItem.span * Math.random();
1279
- }
1280
- }
1281
- return centroids;
1282
- }
1283
- function distEuclid(dataItem, centroid, dataMeta) {
1284
- var powerSum = 0;
1285
- var dimensions = dataMeta.dimensions;
1286
- var extents = dataMeta.rawExtents;
1287
- for (var i = 0; i < dimensions.length; i++) {
1288
- var span = extents[i].span;
1289
- if (span) {
1290
- var dimIdx = dimensions[i];
1291
- var dist = (dataItem[dimIdx] - centroid[i]) / span;
1292
- powerSum += mathPow(dist, 2);
1293
- }
1294
- }
1295
- return powerSum;
1296
- }
1297
- function parseDataMeta(dataSet, config) {
1298
- var size = arraySize(dataSet);
1299
- if (size.length < 1) {
1300
- throw new Error("The input data of clustering should be two-dimension array.");
1301
- }
1302
- var colCount = size[1];
1303
- var defaultDimensions = [];
1304
- for (var i = 0; i < colCount; i++) {
1305
- defaultDimensions.push(i);
1306
- }
1307
- var dimensions = normalizeDimensions(config.dimensions, defaultDimensions);
1308
- var outputType = config.outputType || OutputType.MULTIPLE;
1309
- var outputClusterIndexDimension = config.outputClusterIndexDimension;
1310
- if (outputType === OutputType.SINGLE && !numberUtil.isNumber(outputClusterIndexDimension)) {
1311
- throw new Error("outputClusterIndexDimension is required as a number.");
1312
- }
1313
- var extents = calcExtents(dataSet, dimensions);
1314
- return {
1315
- dimensions,
1316
- rawExtents: extents,
1317
- outputType,
1318
- outputClusterIndexDimension,
1319
- outputCentroidDimensions: config.outputCentroidDimensions
1320
- };
1321
- }
1322
- function calcExtents(dataSet, dimensions) {
1323
- var extents = [];
1324
- var dimLen = dimensions.length;
1325
- for (var i = 0; i < dimLen; i++) {
1326
- extents.push({ min: Infinity, max: -Infinity });
1327
- }
1328
- for (var i = 0; i < dataSet.length; i++) {
1329
- var line = dataSet[i];
1330
- for (var j = 0; j < dimLen; j++) {
1331
- var extentItem = extents[j];
1332
- var val = line[dimensions[j]];
1333
- extentItem.min > val && (extentItem.min = val);
1334
- extentItem.max < val && (extentItem.max = val);
1335
- }
1336
- }
1337
- for (var i = 0; i < dimLen; i++) {
1338
- extents[i].span = extents[i].max - extents[i].min;
1339
- }
1340
- return extents;
1341
- }
1342
- return {
1343
- OutputType,
1344
- hierarchicalKMeans
1345
- };
1346
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1347
- },
1348
- function(module2, exports2, __webpack_require__) {
1349
- var __WEBPACK_AMD_DEFINE_RESULT__;
1350
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1351
- var array = __webpack_require__(3);
1352
- var isArray = array.isArray;
1353
- var size = array.size;
1354
- var number2 = __webpack_require__(4);
1355
- var isNumber = number2.isNumber;
1356
- function normalizeDimensions(dimensions, defaultDimensions) {
1357
- return typeof dimensions === "number" ? [dimensions] : dimensions == null ? defaultDimensions : dimensions;
1358
- }
1359
- function dataPreprocess(data, opt) {
1360
- opt = opt || {};
1361
- var dimensions = opt.dimensions;
1362
- var numberDimensionMap = {};
1363
- if (dimensions != null) {
1364
- for (var i = 0; i < dimensions.length; i++) {
1365
- numberDimensionMap[dimensions[i]] = true;
1366
- }
1367
- }
1368
- var targetOneDim = opt.toOneDimensionArray ? dimensions ? dimensions[0] : 0 : null;
1369
- function shouldBeNumberDimension(dimIdx) {
1370
- return !dimensions || numberDimensionMap.hasOwnProperty(dimIdx);
1371
- }
1372
- if (!isArray(data)) {
1373
- throw new Error("Invalid data type, you should input an array");
1374
- }
1375
- var predata = [];
1376
- var arraySize = size(data);
1377
- if (arraySize.length === 1) {
1378
- for (var i = 0; i < arraySize[0]; i++) {
1379
- var item = data[i];
1380
- if (isNumber(item)) {
1381
- predata.push(item);
1382
- }
1383
- }
1384
- } else if (arraySize.length === 2) {
1385
- for (var i = 0; i < arraySize[0]; i++) {
1386
- var isCorrect = true;
1387
- var item = data[i];
1388
- for (var j = 0; j < arraySize[1]; j++) {
1389
- if (shouldBeNumberDimension(j) && !isNumber(item[j])) {
1390
- isCorrect = false;
1391
- }
1392
- }
1393
- if (isCorrect) {
1394
- predata.push(targetOneDim != null ? item[targetOneDim] : item);
1395
- }
1396
- }
1397
- }
1398
- return predata;
1399
- }
1400
- function getPrecision(val) {
1401
- var str = val.toString();
1402
- var dotIndex = str.indexOf(".");
1403
- return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;
1404
- }
1405
- return {
1406
- normalizeDimensions,
1407
- dataPreprocess,
1408
- getPrecision
1409
- };
1410
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1411
- },
1412
- function(module2, exports2, __webpack_require__) {
1413
- var __WEBPACK_AMD_DEFINE_RESULT__;
1414
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1415
- var objToString = Object.prototype.toString;
1416
- var arrayProto = Array.prototype;
1417
- var nativeMap = arrayProto.map;
1418
- function size(data) {
1419
- var s = [];
1420
- while (isArray(data)) {
1421
- s.push(data.length);
1422
- data = data[0];
1423
- }
1424
- return s;
1425
- }
1426
- function isArray(value) {
1427
- return objToString.call(value) === "[object Array]";
1428
- }
1429
- function zeros(m2, n2) {
1430
- var zeroArray = [];
1431
- for (var i = 0; i < m2; i++) {
1432
- zeroArray[i] = [];
1433
- for (var j = 0; j < n2; j++) {
1434
- zeroArray[i][j] = 0;
1435
- }
1436
- }
1437
- return zeroArray;
1438
- }
1439
- function sum(vector) {
1440
- var sum2 = 0;
1441
- for (var i = 0; i < vector.length; i++) {
1442
- sum2 += vector[i];
1443
- }
1444
- return sum2;
1445
- }
1446
- function sumOfColumn(dataList, n2) {
1447
- var sum2 = 0;
1448
- for (var i = 0; i < dataList.length; i++) {
1449
- sum2 += dataList[i][n2];
1450
- }
1451
- return sum2;
1452
- }
1453
- function ascending(a, b) {
1454
- return a > b ? 1 : a < b ? -1 : a === b ? 0 : NaN;
1455
- }
1456
- function bisect(array, value, start, end) {
1457
- if (start == null) {
1458
- start = 0;
1459
- }
1460
- if (end == null) {
1461
- end = array.length;
1462
- }
1463
- while (start < end) {
1464
- var mid = Math.floor((start + end) / 2);
1465
- var compare = ascending(array[mid], value);
1466
- if (compare > 0) {
1467
- end = mid;
1468
- } else if (compare < 0) {
1469
- start = mid + 1;
1470
- } else {
1471
- return mid + 1;
1472
- }
1473
- }
1474
- return start;
1475
- }
1476
- function map(obj, cb, context) {
1477
- if (!(obj && cb)) {
1478
- return;
1479
- }
1480
- if (obj.map && obj.map === nativeMap) {
1481
- return obj.map(cb, context);
1482
- } else {
1483
- var result = [];
1484
- for (var i = 0, len = obj.length; i < len; i++) {
1485
- result.push(cb.call(context, obj[i], i, obj));
1486
- }
1487
- return result;
1488
- }
1489
- }
1490
- return {
1491
- size,
1492
- isArray,
1493
- zeros,
1494
- sum,
1495
- sumOfColumn,
1496
- ascending,
1497
- bisect,
1498
- map
1499
- };
1500
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1501
- },
1502
- function(module2, exports2, __webpack_require__) {
1503
- var __WEBPACK_AMD_DEFINE_RESULT__;
1504
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1505
- function isNumber(value) {
1506
- value = value === null ? NaN : +value;
1507
- return typeof value === "number" && !isNaN(value);
1508
- }
1509
- function isInteger(value) {
1510
- return isFinite(value) && value === Math.round(value);
1511
- }
1512
- function quantityExponent(val) {
1513
- if (val === 0) {
1514
- return 0;
1515
- }
1516
- var exp = Math.floor(Math.log(val) / Math.LN10);
1517
- if (val / Math.pow(10, exp) >= 10) {
1518
- exp++;
1519
- }
1520
- return exp;
1521
- }
1522
- return {
1523
- isNumber,
1524
- isInteger,
1525
- quantityExponent
1526
- };
1527
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1528
- },
1529
- function(module2, exports2, __webpack_require__) {
1530
- var __WEBPACK_AMD_DEFINE_RESULT__;
1531
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1532
- var dataProcess = __webpack_require__(2);
1533
- var dataPreprocess = dataProcess.dataPreprocess;
1534
- var normalizeDimensions = dataProcess.normalizeDimensions;
1535
- var regreMethods = {
1536
- linear: function(predata, opt) {
1537
- var xDimIdx = opt.dimensions[0];
1538
- var yDimIdx = opt.dimensions[1];
1539
- var sumX = 0;
1540
- var sumY = 0;
1541
- var sumXY = 0;
1542
- var sumXX = 0;
1543
- var len = predata.length;
1544
- for (var i = 0; i < len; i++) {
1545
- var rawItem = predata[i];
1546
- sumX += rawItem[xDimIdx];
1547
- sumY += rawItem[yDimIdx];
1548
- sumXY += rawItem[xDimIdx] * rawItem[yDimIdx];
1549
- sumXX += rawItem[xDimIdx] * rawItem[xDimIdx];
1550
- }
1551
- var gradient = (len * sumXY - sumX * sumY) / (len * sumXX - sumX * sumX);
1552
- var intercept = sumY / len - gradient * sumX / len;
1553
- var result = [];
1554
- for (var j = 0; j < predata.length; j++) {
1555
- var rawItem = predata[j];
1556
- var resultItem = rawItem.slice();
1557
- resultItem[xDimIdx] = rawItem[xDimIdx];
1558
- resultItem[yDimIdx] = gradient * rawItem[xDimIdx] + intercept;
1559
- result.push(resultItem);
1560
- }
1561
- var expression = "y = " + Math.round(gradient * 100) / 100 + "x + " + Math.round(intercept * 100) / 100;
1562
- return {
1563
- points: result,
1564
- parameter: {
1565
- gradient,
1566
- intercept
1567
- },
1568
- expression
1569
- };
1570
- },
1571
- linearThroughOrigin: function(predata, opt) {
1572
- var xDimIdx = opt.dimensions[0];
1573
- var yDimIdx = opt.dimensions[1];
1574
- var sumXX = 0;
1575
- var sumXY = 0;
1576
- for (var i = 0; i < predata.length; i++) {
1577
- var rawItem = predata[i];
1578
- sumXX += rawItem[xDimIdx] * rawItem[xDimIdx];
1579
- sumXY += rawItem[xDimIdx] * rawItem[yDimIdx];
1580
- }
1581
- var gradient = sumXY / sumXX;
1582
- var result = [];
1583
- for (var j = 0; j < predata.length; j++) {
1584
- var rawItem = predata[j];
1585
- var resultItem = rawItem.slice();
1586
- resultItem[xDimIdx] = rawItem[xDimIdx];
1587
- resultItem[yDimIdx] = rawItem[xDimIdx] * gradient;
1588
- result.push(resultItem);
1589
- }
1590
- var expression = "y = " + Math.round(gradient * 100) / 100 + "x";
1591
- return {
1592
- points: result,
1593
- parameter: {
1594
- gradient
1595
- },
1596
- expression
1597
- };
1598
- },
1599
- exponential: function(predata, opt) {
1600
- var xDimIdx = opt.dimensions[0];
1601
- var yDimIdx = opt.dimensions[1];
1602
- var sumX = 0;
1603
- var sumY = 0;
1604
- var sumXXY = 0;
1605
- var sumYlny = 0;
1606
- var sumXYlny = 0;
1607
- var sumXY = 0;
1608
- for (var i = 0; i < predata.length; i++) {
1609
- var rawItem = predata[i];
1610
- sumX += rawItem[xDimIdx];
1611
- sumY += rawItem[yDimIdx];
1612
- sumXY += rawItem[xDimIdx] * rawItem[yDimIdx];
1613
- sumXXY += rawItem[xDimIdx] * rawItem[xDimIdx] * rawItem[yDimIdx];
1614
- sumYlny += rawItem[yDimIdx] * Math.log(rawItem[yDimIdx]);
1615
- sumXYlny += rawItem[xDimIdx] * rawItem[yDimIdx] * Math.log(rawItem[yDimIdx]);
1616
- }
1617
- var denominator = sumY * sumXXY - sumXY * sumXY;
1618
- var coefficient = Math.pow(Math.E, (sumXXY * sumYlny - sumXY * sumXYlny) / denominator);
1619
- var index2 = (sumY * sumXYlny - sumXY * sumYlny) / denominator;
1620
- var result = [];
1621
- for (var j = 0; j < predata.length; j++) {
1622
- var rawItem = predata[j];
1623
- var resultItem = rawItem.slice();
1624
- resultItem[xDimIdx] = rawItem[xDimIdx];
1625
- resultItem[yDimIdx] = coefficient * Math.pow(Math.E, index2 * rawItem[xDimIdx]);
1626
- result.push(resultItem);
1627
- }
1628
- var expression = "y = " + Math.round(coefficient * 100) / 100 + "e^(" + Math.round(index2 * 100) / 100 + "x)";
1629
- return {
1630
- points: result,
1631
- parameter: {
1632
- coefficient,
1633
- index: index2
1634
- },
1635
- expression
1636
- };
1637
- },
1638
- logarithmic: function(predata, opt) {
1639
- var xDimIdx = opt.dimensions[0];
1640
- var yDimIdx = opt.dimensions[1];
1641
- var sumlnx = 0;
1642
- var sumYlnx = 0;
1643
- var sumY = 0;
1644
- var sumlnxlnx = 0;
1645
- for (var i = 0; i < predata.length; i++) {
1646
- var rawItem = predata[i];
1647
- sumlnx += Math.log(rawItem[xDimIdx]);
1648
- sumYlnx += rawItem[yDimIdx] * Math.log(rawItem[xDimIdx]);
1649
- sumY += rawItem[yDimIdx];
1650
- sumlnxlnx += Math.pow(Math.log(rawItem[xDimIdx]), 2);
1651
- }
1652
- var gradient = (i * sumYlnx - sumY * sumlnx) / (i * sumlnxlnx - sumlnx * sumlnx);
1653
- var intercept = (sumY - gradient * sumlnx) / i;
1654
- var result = [];
1655
- for (var j = 0; j < predata.length; j++) {
1656
- var rawItem = predata[j];
1657
- var resultItem = rawItem.slice();
1658
- resultItem[xDimIdx] = rawItem[xDimIdx];
1659
- resultItem[yDimIdx] = gradient * Math.log(rawItem[xDimIdx]) + intercept;
1660
- result.push(resultItem);
1661
- }
1662
- var expression = "y = " + Math.round(intercept * 100) / 100 + " + " + Math.round(gradient * 100) / 100 + "ln(x)";
1663
- return {
1664
- points: result,
1665
- parameter: {
1666
- gradient,
1667
- intercept
1668
- },
1669
- expression
1670
- };
1671
- },
1672
- polynomial: function(predata, opt) {
1673
- var xDimIdx = opt.dimensions[0];
1674
- var yDimIdx = opt.dimensions[1];
1675
- var order = opt.order;
1676
- if (order == null) {
1677
- order = 2;
1678
- }
1679
- var coeMatrix = [];
1680
- var lhs = [];
1681
- var k2 = order + 1;
1682
- for (var i = 0; i < k2; i++) {
1683
- var sumA = 0;
1684
- for (var n2 = 0; n2 < predata.length; n2++) {
1685
- var rawItem = predata[n2];
1686
- sumA += rawItem[yDimIdx] * Math.pow(rawItem[xDimIdx], i);
1687
- }
1688
- lhs.push(sumA);
1689
- var temp = [];
1690
- for (var j = 0; j < k2; j++) {
1691
- var sumB = 0;
1692
- for (var m2 = 0; m2 < predata.length; m2++) {
1693
- sumB += Math.pow(predata[m2][xDimIdx], i + j);
1694
- }
1695
- temp.push(sumB);
1696
- }
1697
- coeMatrix.push(temp);
1698
- }
1699
- coeMatrix.push(lhs);
1700
- var coeArray = gaussianElimination(coeMatrix, k2);
1701
- var result = [];
1702
- for (var i = 0; i < predata.length; i++) {
1703
- var value = 0;
1704
- var rawItem = predata[i];
1705
- for (var n2 = 0; n2 < coeArray.length; n2++) {
1706
- value += coeArray[n2] * Math.pow(rawItem[xDimIdx], n2);
1707
- }
1708
- var resultItem = rawItem.slice();
1709
- resultItem[xDimIdx] = rawItem[xDimIdx];
1710
- resultItem[yDimIdx] = value;
1711
- result.push(resultItem);
1712
- }
1713
- var expression = "y = ";
1714
- for (var i = coeArray.length - 1; i >= 0; i--) {
1715
- if (i > 1) {
1716
- expression += Math.round(coeArray[i] * Math.pow(10, i + 1)) / Math.pow(10, i + 1) + "x^" + i + " + ";
1717
- } else if (i === 1) {
1718
- expression += Math.round(coeArray[i] * 100) / 100 + "x + ";
1719
- } else {
1720
- expression += Math.round(coeArray[i] * 100) / 100;
1721
- }
1722
- }
1723
- return {
1724
- points: result,
1725
- parameter: coeArray,
1726
- expression
1727
- };
1728
- }
1729
- };
1730
- function gaussianElimination(matrix, number2) {
1731
- for (var i = 0; i < matrix.length - 1; i++) {
1732
- var maxColumn = i;
1733
- for (var j = i + 1; j < matrix.length - 1; j++) {
1734
- if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][maxColumn])) {
1735
- maxColumn = j;
1736
- }
1737
- }
1738
- for (var k2 = i; k2 < matrix.length; k2++) {
1739
- var temp = matrix[k2][i];
1740
- matrix[k2][i] = matrix[k2][maxColumn];
1741
- matrix[k2][maxColumn] = temp;
1742
- }
1743
- for (var n2 = i + 1; n2 < matrix.length - 1; n2++) {
1744
- for (var m2 = matrix.length - 1; m2 >= i; m2--) {
1745
- matrix[m2][n2] -= matrix[m2][i] / matrix[i][i] * matrix[i][n2];
1746
- }
1747
- }
1748
- }
1749
- var data = new Array(number2);
1750
- var len = matrix.length - 1;
1751
- for (var j = matrix.length - 2; j >= 0; j--) {
1752
- var temp = 0;
1753
- for (var i = j + 1; i < matrix.length - 1; i++) {
1754
- temp += matrix[i][j] * data[i];
1755
- }
1756
- data[j] = (matrix[len][j] - temp) / matrix[j][j];
1757
- }
1758
- return data;
1759
- }
1760
- var regression = function(regreMethod, data, optOrOrder) {
1761
- var opt = typeof optOrOrder === "number" ? { order: optOrOrder } : optOrOrder || {};
1762
- var dimensions = normalizeDimensions(opt.dimensions, [0, 1]);
1763
- var predata = dataPreprocess(data, { dimensions });
1764
- var result = regreMethods[regreMethod](predata, {
1765
- order: opt.order,
1766
- dimensions
1767
- });
1768
- var xDimIdx = dimensions[0];
1769
- result.points.sort(function(itemA, itemB) {
1770
- return itemA[xDimIdx] - itemB[xDimIdx];
1771
- });
1772
- return result;
1773
- };
1774
- return regression;
1775
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1776
- },
1777
- function(module2, exports2, __webpack_require__) {
1778
- var __WEBPACK_AMD_DEFINE_RESULT__;
1779
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1780
- var statistics = {};
1781
- statistics.max = __webpack_require__(7);
1782
- statistics.deviation = __webpack_require__(8);
1783
- statistics.mean = __webpack_require__(10);
1784
- statistics.median = __webpack_require__(12);
1785
- statistics.min = __webpack_require__(14);
1786
- statistics.quantile = __webpack_require__(13);
1787
- statistics.sampleVariance = __webpack_require__(9);
1788
- statistics.sum = __webpack_require__(11);
1789
- return statistics;
1790
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1791
- },
1792
- function(module2, exports2, __webpack_require__) {
1793
- var __WEBPACK_AMD_DEFINE_RESULT__;
1794
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1795
- var number2 = __webpack_require__(4);
1796
- var isNumber = number2.isNumber;
1797
- function max(data) {
1798
- var maxData = -Infinity;
1799
- for (var i = 0; i < data.length; i++) {
1800
- if (isNumber(data[i]) && data[i] > maxData) {
1801
- maxData = data[i];
1802
- }
1803
- }
1804
- return maxData;
1805
- }
1806
- return max;
1807
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1808
- },
1809
- function(module2, exports2, __webpack_require__) {
1810
- var __WEBPACK_AMD_DEFINE_RESULT__;
1811
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1812
- var variance = __webpack_require__(9);
1813
- return function(data) {
1814
- var squaredDeviation = variance(data);
1815
- return squaredDeviation ? Math.sqrt(squaredDeviation) : squaredDeviation;
1816
- };
1817
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1818
- },
1819
- function(module2, exports2, __webpack_require__) {
1820
- var __WEBPACK_AMD_DEFINE_RESULT__;
1821
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1822
- var number2 = __webpack_require__(4);
1823
- var isNumber = number2.isNumber;
1824
- var mean = __webpack_require__(10);
1825
- function sampleVariance(data) {
1826
- var len = data.length;
1827
- if (!len || len < 2) {
1828
- return 0;
1829
- }
1830
- if (data.length >= 2) {
1831
- var meanValue = mean(data);
1832
- var sum = 0;
1833
- var temple;
1834
- for (var i = 0; i < data.length; i++) {
1835
- if (isNumber(data[i])) {
1836
- temple = data[i] - meanValue;
1837
- sum += temple * temple;
1838
- }
1839
- }
1840
- return sum / (data.length - 1);
1841
- }
1842
- }
1843
- return sampleVariance;
1844
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1845
- },
1846
- function(module2, exports2, __webpack_require__) {
1847
- var __WEBPACK_AMD_DEFINE_RESULT__;
1848
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1849
- var sum = __webpack_require__(11);
1850
- function mean(data) {
1851
- var len = data.length;
1852
- if (!len) {
1853
- return 0;
1854
- }
1855
- return sum(data) / data.length;
1856
- }
1857
- return mean;
1858
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1859
- },
1860
- function(module2, exports2, __webpack_require__) {
1861
- var __WEBPACK_AMD_DEFINE_RESULT__;
1862
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1863
- var number2 = __webpack_require__(4);
1864
- var isNumber = number2.isNumber;
1865
- function sum(data) {
1866
- var len = data.length;
1867
- if (!len) {
1868
- return 0;
1869
- }
1870
- var sumData = 0;
1871
- for (var i = 0; i < len; i++) {
1872
- if (isNumber(data[i])) {
1873
- sumData += data[i];
1874
- }
1875
- }
1876
- return sumData;
1877
- }
1878
- return sum;
1879
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1880
- },
1881
- function(module2, exports2, __webpack_require__) {
1882
- var __WEBPACK_AMD_DEFINE_RESULT__;
1883
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1884
- var quantile = __webpack_require__(13);
1885
- function median2(data) {
1886
- return quantile(data, 0.5);
1887
- }
1888
- return median2;
1889
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1890
- },
1891
- function(module2, exports2, __webpack_require__) {
1892
- var __WEBPACK_AMD_DEFINE_RESULT__;
1893
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1894
- return function(data, p2) {
1895
- var len = data.length;
1896
- if (!len) {
1897
- return 0;
1898
- }
1899
- if (p2 <= 0 || len < 2) {
1900
- return data[0];
1901
- }
1902
- if (p2 >= 1) {
1903
- return data[len - 1];
1904
- }
1905
- var h = (len - 1) * p2;
1906
- var i = Math.floor(h);
1907
- var a = data[i];
1908
- var b = data[i + 1];
1909
- return a + (b - a) * (h - i);
1910
- };
1911
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1912
- },
1913
- function(module2, exports2, __webpack_require__) {
1914
- var __WEBPACK_AMD_DEFINE_RESULT__;
1915
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1916
- var number2 = __webpack_require__(4);
1917
- var isNumber = number2.isNumber;
1918
- function min(data) {
1919
- var minData = Infinity;
1920
- for (var i = 0; i < data.length; i++) {
1921
- if (isNumber(data[i]) && data[i] < minData) {
1922
- minData = data[i];
1923
- }
1924
- }
1925
- return minData;
1926
- }
1927
- return min;
1928
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1929
- },
1930
- function(module2, exports2, __webpack_require__) {
1931
- var __WEBPACK_AMD_DEFINE_RESULT__;
1932
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
1933
- var max = __webpack_require__(7);
1934
- var min = __webpack_require__(14);
1935
- var quantile = __webpack_require__(13);
1936
- var deviation = __webpack_require__(8);
1937
- var dataProcess = __webpack_require__(2);
1938
- var dataPreprocess = dataProcess.dataPreprocess;
1939
- var normalizeDimensions = dataProcess.normalizeDimensions;
1940
- var array = __webpack_require__(3);
1941
- var ascending = array.ascending;
1942
- var map = array.map;
1943
- var range = __webpack_require__(16);
1944
- var bisect = array.bisect;
1945
- var tickStep = __webpack_require__(17);
1946
- function computeBins(data, optOrMethod) {
1947
- var opt = typeof optOrMethod === "string" ? { method: optOrMethod } : optOrMethod || {};
1948
- var threshold = opt.method == null ? thresholdMethod.squareRoot : thresholdMethod[opt.method];
1949
- var dimensions = normalizeDimensions(opt.dimensions);
1950
- var values = dataPreprocess(data, {
1951
- dimensions,
1952
- toOneDimensionArray: true
1953
- });
1954
- var maxValue = max(values);
1955
- var minValue = min(values);
1956
- var binsNumber = threshold(values, minValue, maxValue);
1957
- var tickStepResult = tickStep(minValue, maxValue, binsNumber);
1958
- var step = tickStepResult.step;
1959
- var toFixedPrecision = tickStepResult.toFixedPrecision;
1960
- var rangeArray = range(+(Math.ceil(minValue / step) * step).toFixed(toFixedPrecision), +(Math.floor(maxValue / step) * step).toFixed(toFixedPrecision), step, toFixedPrecision);
1961
- var len = rangeArray.length;
1962
- var bins = new Array(len + 1);
1963
- for (var i = 0; i <= len; i++) {
1964
- bins[i] = {};
1965
- bins[i].sample = [];
1966
- bins[i].x0 = i > 0 ? rangeArray[i - 1] : rangeArray[i] - minValue === step ? minValue : rangeArray[i] - step;
1967
- bins[i].x1 = i < len ? rangeArray[i] : maxValue - rangeArray[i - 1] === step ? maxValue : rangeArray[i - 1] + step;
1968
- }
1969
- for (var i = 0; i < values.length; i++) {
1970
- if (minValue <= values[i] && values[i] <= maxValue) {
1971
- bins[bisect(rangeArray, values[i], 0, len)].sample.push(values[i]);
1972
- }
1973
- }
1974
- var data = map(bins, function(bin) {
1975
- return [
1976
- +((bin.x0 + bin.x1) / 2).toFixed(toFixedPrecision),
1977
- bin.sample.length,
1978
- bin.x0,
1979
- bin.x1,
1980
- bin.x0 + " - " + bin.x1
1981
- ];
1982
- });
1983
- var customData = map(bins, function(bin) {
1984
- return [bin.x0, bin.x1, bin.sample.length];
1985
- });
1986
- return {
1987
- bins,
1988
- data,
1989
- customData
1990
- };
1991
- }
1992
- var thresholdMethod = {
1993
- squareRoot: function(data) {
1994
- var bins = Math.ceil(Math.sqrt(data.length));
1995
- return bins > 50 ? 50 : bins;
1996
- },
1997
- scott: function(data, min2, max2) {
1998
- return Math.ceil((max2 - min2) / (3.5 * deviation(data) * Math.pow(data.length, -1 / 3)));
1999
- },
2000
- freedmanDiaconis: function(data, min2, max2) {
2001
- data.sort(ascending);
2002
- return Math.ceil((max2 - min2) / (2 * (quantile(data, 0.75) - quantile(data, 0.25)) * Math.pow(data.length, -1 / 3)));
2003
- },
2004
- sturges: function(data) {
2005
- return Math.ceil(Math.log(data.length) / Math.LN2) + 1;
2006
- }
2007
- };
2008
- return computeBins;
2009
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2010
- },
2011
- function(module2, exports2, __webpack_require__) {
2012
- var __WEBPACK_AMD_DEFINE_RESULT__;
2013
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2014
- var dataProcess = __webpack_require__(2);
2015
- var getPrecision = dataProcess.getPrecision;
2016
- return function(start, end, step, precision) {
2017
- var len = arguments.length;
2018
- if (len < 2) {
2019
- end = start;
2020
- start = 0;
2021
- step = 1;
2022
- } else if (len < 3) {
2023
- step = 1;
2024
- } else if (len < 4) {
2025
- step = +step;
2026
- precision = getPrecision(step);
2027
- } else {
2028
- precision = +precision;
2029
- }
2030
- var n2 = Math.ceil(((end - start) / step).toFixed(precision));
2031
- var range = new Array(n2 + 1);
2032
- for (var i = 0; i < n2 + 1; i++) {
2033
- range[i] = +(start + i * step).toFixed(precision);
2034
- }
2035
- return range;
2036
- };
2037
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2038
- },
2039
- function(module2, exports2, __webpack_require__) {
2040
- var __WEBPACK_AMD_DEFINE_RESULT__;
2041
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2042
- var numberUtil = __webpack_require__(4);
2043
- return function(start, stop, count) {
2044
- var step0 = Math.abs(stop - start) / count;
2045
- var precision = numberUtil.quantityExponent(step0);
2046
- var step1 = Math.pow(10, precision);
2047
- var error = step0 / step1;
2048
- if (error >= Math.sqrt(50)) {
2049
- step1 *= 10;
2050
- } else if (error >= Math.sqrt(10)) {
2051
- step1 *= 5;
2052
- } else if (error >= Math.sqrt(2)) {
2053
- step1 *= 2;
2054
- }
2055
- var toFixedPrecision = precision < 0 ? -precision : 0;
2056
- var resultStep = +(stop >= start ? step1 : -step1).toFixed(toFixedPrecision);
2057
- return {
2058
- step: resultStep,
2059
- toFixedPrecision
2060
- };
2061
- };
2062
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2063
- },
2064
- function(module2, exports2, __webpack_require__) {
2065
- var __WEBPACK_AMD_DEFINE_RESULT__;
2066
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2067
- var regression = __webpack_require__(5);
2068
- var transformHelper = __webpack_require__(19);
2069
- var FORMULA_DIMENSION = 2;
2070
- return {
2071
- type: "ecStat:regression",
2072
- transform: function transform(params) {
2073
- var upstream = params.upstream;
2074
- var config = params.config || {};
2075
- var method = config.method || "linear";
2076
- var result = regression(method, upstream.cloneRawData(), {
2077
- order: config.order,
2078
- dimensions: transformHelper.normalizeExistingDimensions(params, config.dimensions)
2079
- });
2080
- var points = result.points;
2081
- var formulaOn = config.formulaOn;
2082
- if (formulaOn == null) {
2083
- formulaOn = "end";
2084
- }
2085
- var dimensions;
2086
- if (formulaOn !== "none") {
2087
- for (var i = 0; i < points.length; i++) {
2088
- points[i][FORMULA_DIMENSION] = formulaOn === "start" && i === 0 || formulaOn === "all" || formulaOn === "end" && i === points.length - 1 ? result.expression : "";
2089
- }
2090
- dimensions = upstream.cloneAllDimensionInfo();
2091
- dimensions[FORMULA_DIMENSION] = {};
2092
- }
2093
- return [{
2094
- dimensions,
2095
- data: points
2096
- }];
2097
- }
2098
- };
2099
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2100
- },
2101
- function(module2, exports2, __webpack_require__) {
2102
- var __WEBPACK_AMD_DEFINE_RESULT__;
2103
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2104
- var arrayUtil = __webpack_require__(3);
2105
- var numberUtil = __webpack_require__(4);
2106
- var objectUtil = __webpack_require__(20);
2107
- function normalizeExistingDimensions(transformParams, dimensionsConfig) {
2108
- if (dimensionsConfig == null) {
2109
- return;
2110
- }
2111
- var upstream = transformParams.upstream;
2112
- if (arrayUtil.isArray(dimensionsConfig)) {
2113
- var result = [];
2114
- for (var i = 0; i < dimensionsConfig.length; i++) {
2115
- var dimInfo = upstream.getDimensionInfo(dimensionsConfig[i]);
2116
- validateDimensionExists(dimInfo, dimensionsConfig[i]);
2117
- result[i] = dimInfo.index;
2118
- }
2119
- return result;
2120
- } else {
2121
- var dimInfo = upstream.getDimensionInfo(dimensionsConfig);
2122
- validateDimensionExists(dimInfo, dimensionsConfig);
2123
- return dimInfo.index;
2124
- }
2125
- function validateDimensionExists(dimInfo2, dimConfig) {
2126
- if (!dimInfo2) {
2127
- throw new Error("Can not find dimension by " + dimConfig);
2128
- }
2129
- }
2130
- }
2131
- function normalizeNewDimensions(dimensionsConfig) {
2132
- if (arrayUtil.isArray(dimensionsConfig)) {
2133
- var names = [];
2134
- var indices = [];
2135
- for (var i = 0; i < dimensionsConfig.length; i++) {
2136
- var item = parseDimensionNewItem(dimensionsConfig[i]);
2137
- names.push(item.name);
2138
- indices.push(item.index);
2139
- }
2140
- return { name: names, index: indices };
2141
- } else if (dimensionsConfig != null) {
2142
- return parseDimensionNewItem(dimensionsConfig);
2143
- }
2144
- function parseDimensionNewItem(dimConfig) {
2145
- if (numberUtil.isNumber(dimConfig)) {
2146
- return { index: dimConfig };
2147
- } else if (objectUtil.isObject(dimConfig) && numberUtil.isNumber(dimConfig.index)) {
2148
- return dimConfig;
2149
- }
2150
- throw new Error("Illegle new dimensions config. Expect `{ name: string, index: number }`.");
2151
- }
2152
- }
2153
- return {
2154
- normalizeExistingDimensions,
2155
- normalizeNewDimensions
2156
- };
2157
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2158
- },
2159
- function(module2, exports2, __webpack_require__) {
2160
- var __WEBPACK_AMD_DEFINE_RESULT__;
2161
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2162
- function extend(target, source) {
2163
- if (Object.assign) {
2164
- Object.assign(target, source);
2165
- } else {
2166
- for (var key in source) {
2167
- if (source.hasOwnProperty(key)) {
2168
- target[key] = source[key];
2169
- }
2170
- }
2171
- }
2172
- return target;
2173
- }
2174
- function isObject(value) {
2175
- const type = typeof value;
2176
- return type === "function" || !!value && type === "object";
2177
- }
2178
- return {
2179
- extend,
2180
- isObject
2181
- };
2182
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2183
- },
2184
- function(module2, exports2, __webpack_require__) {
2185
- var __WEBPACK_AMD_DEFINE_RESULT__;
2186
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2187
- var histogram = __webpack_require__(15);
2188
- var transformHelper = __webpack_require__(19);
2189
- return {
2190
- type: "ecStat:histogram",
2191
- transform: function transform(params) {
2192
- var upstream = params.upstream;
2193
- var config = params.config || {};
2194
- var result = histogram(upstream.cloneRawData(), {
2195
- method: config.method,
2196
- dimensions: transformHelper.normalizeExistingDimensions(params, config.dimensions)
2197
- });
2198
- return [{
2199
- dimensions: ["MeanOfV0V1", "VCount", "V0", "V1", "DisplayableName"],
2200
- data: result.data
2201
- }, {
2202
- data: result.customData
2203
- }];
2204
- }
2205
- };
2206
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2207
- },
2208
- function(module2, exports2, __webpack_require__) {
2209
- var __WEBPACK_AMD_DEFINE_RESULT__;
2210
- !(__WEBPACK_AMD_DEFINE_RESULT__ = function(require2) {
2211
- var clustering = __webpack_require__(1);
2212
- var numberUtil = __webpack_require__(4);
2213
- var transformHelper = __webpack_require__(19);
2214
- var isNumber = numberUtil.isNumber;
2215
- return {
2216
- type: "ecStat:clustering",
2217
- transform: function transform(params) {
2218
- var upstream = params.upstream;
2219
- var config = params.config || {};
2220
- var clusterCount = config.clusterCount;
2221
- if (!isNumber(clusterCount) || clusterCount <= 0) {
2222
- throw new Error('config param "clusterCount" need to be specified as an interger greater than 1.');
2223
- }
2224
- if (clusterCount === 1) {
2225
- return [{}, {
2226
- data: []
2227
- }];
2228
- }
2229
- var outputClusterIndexDimension = transformHelper.normalizeNewDimensions(config.outputClusterIndexDimension);
2230
- var outputCentroidDimensions = transformHelper.normalizeNewDimensions(config.outputCentroidDimensions);
2231
- if (outputClusterIndexDimension == null) {
2232
- throw new Error("outputClusterIndexDimension is required as a number.");
2233
- }
2234
- var result = clustering.hierarchicalKMeans(upstream.cloneRawData(), {
2235
- clusterCount,
2236
- stepByStep: false,
2237
- dimensions: transformHelper.normalizeExistingDimensions(params, config.dimensions),
2238
- outputType: clustering.OutputType.SINGLE,
2239
- outputClusterIndexDimension: outputClusterIndexDimension.index,
2240
- outputCentroidDimensions: (outputCentroidDimensions || {}).index
2241
- });
2242
- var sourceDimAll = upstream.cloneAllDimensionInfo();
2243
- var resultDimsDef = [];
2244
- for (var i = 0; i < sourceDimAll.length; i++) {
2245
- var sourceDimItem = sourceDimAll[i];
2246
- resultDimsDef.push(sourceDimItem.name);
2247
- }
2248
- resultDimsDef[outputClusterIndexDimension.index] = outputClusterIndexDimension.name;
2249
- if (outputCentroidDimensions) {
2250
- for (var i = 0; i < outputCentroidDimensions.index.length; i++) {
2251
- if (outputCentroidDimensions.name[i] != null) {
2252
- resultDimsDef[outputCentroidDimensions.index[i]] = outputCentroidDimensions.name[i];
2253
- }
2254
- }
2255
- }
2256
- return [{
2257
- dimensions: resultDimsDef,
2258
- data: result.data
2259
- }, {
2260
- data: result.centroids
2261
- }];
2262
- }
2263
- };
2264
- }.call(exports2, __webpack_require__, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2265
- }
2266
- ]);
2267
- });
2268
- })(ecStat);
2269
- var echartsStat = ecStat.exports;
2270
672
  function getRegressionConfs({ regressions = [] }, data) {
2271
673
  const regressionDataSets = [];
2272
674
  const regressionSeries = [];
@@ -2274,7 +676,7 @@ function getRegressionConfs({ regressions = [] }, data) {
2274
676
  if (data.length === 0) {
2275
677
  return { regressionDataSets, regressionSeries, regressionXAxes };
2276
678
  }
2277
- regressions.forEach(({ transform, plot, name, y_axis_data_key }) => {
679
+ regressions.forEach(({ transform: transform2, plot, name, y_axis_data_key }) => {
2278
680
  const xAxisId = `x-axis-for-${name}`;
2279
681
  const rawDatasetId = `dataset-for-${name}--raw`;
2280
682
  const regDatasetId = `dataset-for-${name}--transformed`;
@@ -2283,11 +685,12 @@ function getRegressionConfs({ regressions = [] }, data) {
2283
685
  source: data.map((d, i) => [i, d[y_axis_data_key]])
2284
686
  });
2285
687
  regressionDataSets.push({
2286
- transform,
688
+ transform: transform2,
2287
689
  id: regDatasetId,
2288
690
  fromDatasetId: rawDatasetId
2289
691
  });
2290
- regressionSeries.push(__spreadProps(__spreadValues({}, plot), {
692
+ regressionSeries.push({
693
+ ...plot,
2291
694
  name,
2292
695
  datasetId: regDatasetId,
2293
696
  xAxisId,
@@ -2295,7 +698,7 @@ function getRegressionConfs({ regressions = [] }, data) {
2295
698
  tooltip: {
2296
699
  show: false
2297
700
  }
2298
- }));
701
+ });
2299
702
  regressionXAxes.push({
2300
703
  type: "category",
2301
704
  id: xAxisId,
@@ -2331,7 +734,7 @@ const defaultOption$1 = {
2331
734
  }
2332
735
  };
2333
736
  function getOption(conf, data) {
2334
- var _c;
737
+ var _a;
2335
738
  const labelFormatters = conf.y_axes.reduce((ret, { label_formatter }, index2) => {
2336
739
  ret[index2] = function formatter(payload) {
2337
740
  const value = typeof payload === "object" ? payload.value : payload;
@@ -2353,9 +756,8 @@ function getOption(conf, data) {
2353
756
  ret[name] = yAxisIndex;
2354
757
  return ret;
2355
758
  }, {});
2356
- const series = conf.series.map((_a) => {
2357
- var _b = _a, { y_axis_data_key, yAxisIndex, label_position, name } = _b, rest = __objRest(_b, ["y_axis_data_key", "yAxisIndex", "label_position", "name"]);
2358
- const ret = __spreadValues({
759
+ const series = conf.series.map(({ y_axis_data_key, yAxisIndex, label_position, name, ...rest }) => {
760
+ const ret = {
2359
761
  data: data.map((d) => d[y_axis_data_key]),
2360
762
  label: {
2361
763
  show: !!label_position,
@@ -2364,8 +766,9 @@ function getOption(conf, data) {
2364
766
  },
2365
767
  name,
2366
768
  xAxisId: "main-x-axis",
2367
- yAxisIndex
2368
- }, rest);
769
+ yAxisIndex,
770
+ ...rest
771
+ };
2369
772
  return ret;
2370
773
  });
2371
774
  const { regressionDataSets, regressionSeries, regressionXAxes } = getRegressionConfs(conf, data);
@@ -2373,20 +776,20 @@ function getOption(conf, data) {
2373
776
  xAxis: [
2374
777
  {
2375
778
  data: data.map((d) => d[conf.x_axis_data_key]),
2376
- name: (_c = conf.x_axis_name) != null ? _c : "",
779
+ name: (_a = conf.x_axis_name) != null ? _a : "",
2377
780
  id: "main-x-axis"
2378
781
  },
2379
782
  ...regressionXAxes
2380
783
  ],
2381
- yAxis: conf.y_axes.map((_d, index2) => {
2382
- var _e = _d, { label_formatter } = _e, rest = __objRest(_e, ["label_formatter"]);
2383
- var _a;
2384
- return __spreadProps(__spreadValues({}, rest), {
784
+ yAxis: conf.y_axes.map(({ label_formatter, ...rest }, index2) => {
785
+ var _a2;
786
+ return {
787
+ ...rest,
2385
788
  axisLabel: {
2386
789
  show: true,
2387
- formatter: (_a = labelFormatters[index2]) != null ? _a : labelFormatters.default
790
+ formatter: (_a2 = labelFormatters[index2]) != null ? _a2 : labelFormatters.default
2388
791
  }
2389
- });
792
+ };
2390
793
  }),
2391
794
  dataset: [
2392
795
  ...regressionDataSets
@@ -2402,12 +805,12 @@ function getOption(conf, data) {
2402
805
  return "";
2403
806
  }
2404
807
  const lines = arr.map(({ seriesName, value }) => {
2405
- var _a;
808
+ var _a2;
2406
809
  if (!seriesName) {
2407
810
  return value;
2408
811
  }
2409
812
  const yAxisIndex = yAxisIndexMap[seriesName];
2410
- const formatter = (_a = labelFormatters[yAxisIndex]) != null ? _a : labelFormatters.default;
813
+ const formatter = (_a2 = labelFormatters[yAxisIndex]) != null ? _a2 : labelFormatters.default;
2411
814
  return `${seriesName}: ${formatter({ value })}`;
2412
815
  });
2413
816
  lines.unshift(`<strong>${arr[0].name}</strong>`);
@@ -2900,7 +1303,7 @@ function templateToJSX(template, variables, data) {
2900
1303
  });
2901
1304
  }
2902
1305
  echarts.use([BarChart, LineChart, ScatterChart, GridComponent, LegendComponent, TooltipComponent, CanvasRenderer]);
2903
- echarts.registerTransform(echartsStat.transform.regression);
1306
+ echarts.registerTransform(transform.regression);
2904
1307
  function templateNotEmpty(str) {
2905
1308
  return str.trim().length > 0;
2906
1309
  }
@@ -3048,15 +1451,12 @@ function VizTable({
3048
1451
  width,
3049
1452
  height
3050
1453
  }) {
3051
- const _a = conf, {
1454
+ const {
3052
1455
  id_field,
3053
1456
  use_raw_columns,
3054
- columns
3055
- } = _a, rest = __objRest(_a, [
3056
- "id_field",
3057
- "use_raw_columns",
3058
- "columns"
3059
- ]);
1457
+ columns,
1458
+ ...rest
1459
+ } = conf;
3060
1460
  const labels = React.useMemo(() => {
3061
1461
  if (use_raw_columns) {
3062
1462
  return Object.keys(data == null ? void 0 : data[0]);
@@ -3073,11 +1473,11 @@ function VizTable({
3073
1473
  }
3074
1474
  return columns;
3075
1475
  }, [use_raw_columns, columns, data]);
3076
- return /* @__PURE__ */ jsxs(Table, __spreadProps(__spreadValues({
1476
+ return /* @__PURE__ */ jsxs(Table, {
3077
1477
  sx: {
3078
1478
  maxHeight: height
3079
- }
3080
- }, rest), {
1479
+ },
1480
+ ...rest,
3081
1481
  children: [/* @__PURE__ */ jsx("thead", {
3082
1482
  children: /* @__PURE__ */ jsx("tr", {
3083
1483
  children: labels.map((label) => /* @__PURE__ */ jsx("th", {
@@ -3116,12 +1516,13 @@ function VizTable({
3116
1516
  })
3117
1517
  })
3118
1518
  })]
3119
- }));
1519
+ });
3120
1520
  }
3121
1521
  function interpolateString(template, params = {}) {
3122
- const extendedParams = __spreadProps(__spreadValues({}, params), {
1522
+ const extendedParams = {
1523
+ ...params,
3123
1524
  numbro
3124
- });
1525
+ };
3125
1526
  const names = Object.keys(extendedParams);
3126
1527
  const vals = Object.values(extendedParams);
3127
1528
  try {
@@ -3137,21 +1538,17 @@ function VizText({
3137
1538
  data
3138
1539
  }) {
3139
1540
  return /* @__PURE__ */ jsx(Fragment, {
3140
- children: paragraphs.map((_a, index2) => {
3141
- var _b = _a, {
3142
- template,
3143
- size
3144
- } = _b, rest = __objRest(_b, [
3145
- "template",
3146
- "size"
3147
- ]);
3148
- return /* @__PURE__ */ jsx(Text, __spreadProps(__spreadValues({}, rest), {
3149
- sx: {
3150
- fontSize: size
3151
- },
3152
- children: interpolateString(template, data[0])
3153
- }), `${template}---${index2}`);
3154
- })
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}`))
3155
1552
  });
3156
1553
  }
3157
1554
  echarts.use([GridComponent, VisualMapComponent, LegendComponent, TooltipComponent, CanvasRenderer]);
@@ -3161,22 +1558,19 @@ function VizBar3D({
3161
1558
  width,
3162
1559
  height
3163
1560
  }) {
3164
- const _a = conf, {
1561
+ const {
3165
1562
  x_axis_data_key,
3166
1563
  y_axis_data_key,
3167
- z_axis_data_key
3168
- } = _a, restConf = __objRest(_a, [
3169
- "x_axis_data_key",
3170
- "y_axis_data_key",
3171
- "z_axis_data_key"
3172
- ]);
1564
+ z_axis_data_key,
1565
+ ...restConf
1566
+ } = conf;
3173
1567
  const min = React.useMemo(() => {
3174
1568
  return _.minBy(data, (d) => d[z_axis_data_key])[z_axis_data_key];
3175
1569
  }, [data, z_axis_data_key]);
3176
1570
  const max = React.useMemo(() => {
3177
1571
  return _.maxBy(data, (d) => d[z_axis_data_key])[z_axis_data_key];
3178
1572
  }, [data, z_axis_data_key]);
3179
- const option = __spreadProps(__spreadValues({
1573
+ const option = {
3180
1574
  tooltip: {},
3181
1575
  backgroundColor: "#fff",
3182
1576
  visualMap: {
@@ -3209,14 +1603,14 @@ function VizBar3D({
3209
1603
  intensity: 1.5
3210
1604
  }
3211
1605
  }
3212
- }
3213
- }, restConf), {
1606
+ },
1607
+ ...restConf,
3214
1608
  series: [{
3215
1609
  type: "bar3D",
3216
1610
  wireframe: {},
3217
1611
  data: data.map((d) => [d[x_axis_data_key], d[y_axis_data_key], d[z_axis_data_key]])
3218
1612
  }]
3219
- });
1613
+ };
3220
1614
  return /* @__PURE__ */ jsx(ReactEChartsCore, {
3221
1615
  echarts,
3222
1616
  option,
@@ -3267,13 +1661,11 @@ function VizPie({
3267
1661
  width,
3268
1662
  height
3269
1663
  }) {
3270
- const _a = conf, {
1664
+ const {
3271
1665
  label_field = "name",
3272
- value_field = "value"
3273
- } = _a, restConf = __objRest(_a, [
3274
- "label_field",
3275
- "value_field"
3276
- ]);
1666
+ value_field = "value",
1667
+ ...restConf
1668
+ } = conf;
3277
1669
  const chartData = React.useMemo(() => {
3278
1670
  return data.map((d) => ({
3279
1671
  name: d[label_field],
@@ -3350,21 +1742,37 @@ function renderViz(width, height, data, viz) {
3350
1742
  };
3351
1743
  switch (viz.type) {
3352
1744
  case "sunburst":
3353
- return /* @__PURE__ */ jsx(Sunbrust, __spreadValues({}, props));
1745
+ return /* @__PURE__ */ jsx(Sunbrust, {
1746
+ ...props
1747
+ });
3354
1748
  case "cartesian":
3355
- return /* @__PURE__ */ jsx(VizCartesianChart, __spreadValues({}, props));
1749
+ return /* @__PURE__ */ jsx(VizCartesianChart, {
1750
+ ...props
1751
+ });
3356
1752
  case "table":
3357
- return /* @__PURE__ */ jsx(VizTable, __spreadValues({}, props));
1753
+ return /* @__PURE__ */ jsx(VizTable, {
1754
+ ...props
1755
+ });
3358
1756
  case "text":
3359
- return /* @__PURE__ */ jsx(VizText, __spreadValues({}, props));
1757
+ return /* @__PURE__ */ jsx(VizText, {
1758
+ ...props
1759
+ });
3360
1760
  case "stats":
3361
- return /* @__PURE__ */ jsx(VizStats, __spreadValues({}, props));
1761
+ return /* @__PURE__ */ jsx(VizStats, {
1762
+ ...props
1763
+ });
3362
1764
  case "rich-text":
3363
- return /* @__PURE__ */ jsx(VizRichText, __spreadValues({}, props));
1765
+ return /* @__PURE__ */ jsx(VizRichText, {
1766
+ ...props
1767
+ });
3364
1768
  case "bar-3d":
3365
- return /* @__PURE__ */ jsx(VizBar3D, __spreadValues({}, props));
1769
+ return /* @__PURE__ */ jsx(VizBar3D, {
1770
+ ...props
1771
+ });
3366
1772
  case "pie":
3367
- return /* @__PURE__ */ jsx(VizPie, __spreadValues({}, props));
1773
+ return /* @__PURE__ */ jsx(VizPie, {
1774
+ ...props
1775
+ });
3368
1776
  default:
3369
1777
  return null;
3370
1778
  }
@@ -3505,23 +1913,25 @@ function VizBar3DPanel({
3505
1913
  control,
3506
1914
  render: ({
3507
1915
  field
3508
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
1916
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3509
1917
  label: "Data Field",
3510
1918
  required: true,
3511
- data
3512
- }, field))
1919
+ data,
1920
+ ...field
1921
+ })
3513
1922
  }), /* @__PURE__ */ jsx(Controller, {
3514
1923
  name: "xAxis3D.name",
3515
1924
  control,
3516
1925
  render: ({
3517
1926
  field
3518
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
1927
+ }) => /* @__PURE__ */ jsx(TextInput, {
3519
1928
  sx: {
3520
1929
  flexGrow: 1
3521
1930
  },
3522
1931
  size: "md",
3523
- label: "Name"
3524
- }, field))
1932
+ label: "Name",
1933
+ ...field
1934
+ })
3525
1935
  })]
3526
1936
  }), /* @__PURE__ */ jsx(Text, {
3527
1937
  mt: "lg",
@@ -3539,23 +1949,25 @@ function VizBar3DPanel({
3539
1949
  control,
3540
1950
  render: ({
3541
1951
  field
3542
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
1952
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3543
1953
  label: "Data Field",
3544
1954
  required: true,
3545
- data
3546
- }, field))
1955
+ data,
1956
+ ...field
1957
+ })
3547
1958
  }), /* @__PURE__ */ jsx(Controller, {
3548
1959
  name: "yAxis3D.name",
3549
1960
  control,
3550
1961
  render: ({
3551
1962
  field
3552
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
1963
+ }) => /* @__PURE__ */ jsx(TextInput, {
3553
1964
  sx: {
3554
1965
  flexGrow: 1
3555
1966
  },
3556
1967
  size: "md",
3557
- label: "Name"
3558
- }, field))
1968
+ label: "Name",
1969
+ ...field
1970
+ })
3559
1971
  })]
3560
1972
  }), /* @__PURE__ */ jsx(Text, {
3561
1973
  mt: "lg",
@@ -3573,23 +1985,25 @@ function VizBar3DPanel({
3573
1985
  control,
3574
1986
  render: ({
3575
1987
  field
3576
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
1988
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3577
1989
  label: "Data Field",
3578
1990
  required: true,
3579
- data
3580
- }, field))
1991
+ data,
1992
+ ...field
1993
+ })
3581
1994
  }), /* @__PURE__ */ jsx(Controller, {
3582
1995
  name: "zAxis3D.name",
3583
1996
  control,
3584
1997
  render: ({
3585
1998
  field
3586
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
1999
+ }) => /* @__PURE__ */ jsx(TextInput, {
3587
2000
  sx: {
3588
2001
  flexGrow: 1
3589
2002
  },
3590
2003
  size: "md",
3591
- label: "Name"
3592
- }, field))
2004
+ label: "Name",
2005
+ ...field
2006
+ })
3593
2007
  })]
3594
2008
  }), /* @__PURE__ */ jsx(Group, {
3595
2009
  position: "center",
@@ -3679,24 +2093,26 @@ function BarFields({
3679
2093
  control,
3680
2094
  render: ({
3681
2095
  field
3682
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2096
+ }) => /* @__PURE__ */ jsx(TextInput, {
3683
2097
  label: "Stack",
3684
2098
  placeholder: "Stack bars by this ID",
3685
2099
  sx: {
3686
2100
  flexGrow: 1
3687
- }
3688
- }, field))
2101
+ },
2102
+ ...field
2103
+ })
3689
2104
  }), /* @__PURE__ */ jsx(Controller, {
3690
2105
  name: `series.${index2}.barWidth`,
3691
2106
  control,
3692
2107
  render: ({
3693
2108
  field
3694
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2109
+ }) => /* @__PURE__ */ jsx(TextInput, {
3695
2110
  label: "Bar Width",
3696
2111
  sx: {
3697
2112
  flexGrow: 1
3698
- }
3699
- }, field))
2113
+ },
2114
+ ...field
2115
+ })
3700
2116
  })]
3701
2117
  });
3702
2118
  }
@@ -3726,20 +2142,20 @@ function LineFields({
3726
2142
  control,
3727
2143
  render: ({
3728
2144
  field
3729
- }) => /* @__PURE__ */ jsx(Select, __spreadProps(__spreadValues({
2145
+ }) => /* @__PURE__ */ jsx(Select, {
3730
2146
  label: "Step",
3731
2147
  data: stepOptions,
3732
2148
  sx: {
3733
2149
  flexGrow: 1,
3734
2150
  maxWidth: "48%"
3735
- }
3736
- }, field), {
2151
+ },
2152
+ ...field,
3737
2153
  value: String(field.value),
3738
2154
  onChange: (v) => {
3739
2155
  const step = v === "false" ? false : v;
3740
2156
  field.onChange(step);
3741
2157
  }
3742
- }))
2158
+ })
3743
2159
  }), /* @__PURE__ */ jsx(Controller, {
3744
2160
  name: `series.${index2}.smooth`,
3745
2161
  control,
@@ -3786,15 +2202,15 @@ function ScatterFields({
3786
2202
  children: [/* @__PURE__ */ jsx(Text, {
3787
2203
  size: "sm",
3788
2204
  children: "Size"
3789
- }), /* @__PURE__ */ jsx(Slider, __spreadProps(__spreadValues({
2205
+ }), /* @__PURE__ */ jsx(Slider, {
3790
2206
  min: 1,
3791
2207
  max: 10,
3792
- marks: symbolSizeOptions
3793
- }, field), {
2208
+ marks: symbolSizeOptions,
2209
+ ...field,
3794
2210
  sx: {
3795
2211
  width: "100%"
3796
2212
  }
3797
- }))]
2213
+ })]
3798
2214
  })
3799
2215
  })
3800
2216
  });
@@ -3870,7 +2286,7 @@ function SeriesItemField({
3870
2286
  control,
3871
2287
  render: ({
3872
2288
  field
3873
- }) => /* @__PURE__ */ jsx(SegmentedControl, __spreadValues({
2289
+ }) => /* @__PURE__ */ jsx(SegmentedControl, {
3874
2290
  data: [{
3875
2291
  label: "Line",
3876
2292
  value: "line"
@@ -3884,21 +2300,23 @@ function SeriesItemField({
3884
2300
  label: "Boxplot",
3885
2301
  value: "boxplot",
3886
2302
  disabled: true
3887
- }]
3888
- }, field))
2303
+ }],
2304
+ ...field
2305
+ })
3889
2306
  })
3890
2307
  }), /* @__PURE__ */ jsx(Controller, {
3891
2308
  name: `series.${index2}.name`,
3892
2309
  control,
3893
2310
  render: ({
3894
2311
  field
3895
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2312
+ }) => /* @__PURE__ */ jsx(TextInput, {
3896
2313
  label: "Name",
3897
2314
  required: true,
3898
2315
  sx: {
3899
2316
  flex: 1
3900
- }
3901
- }, field))
2317
+ },
2318
+ ...field
2319
+ })
3902
2320
  }), /* @__PURE__ */ jsxs(Group, {
3903
2321
  direction: "row",
3904
2322
  grow: true,
@@ -3908,34 +2326,32 @@ function SeriesItemField({
3908
2326
  control,
3909
2327
  render: ({
3910
2328
  field
3911
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
2329
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
3912
2330
  label: "Value Field",
3913
2331
  required: true,
3914
2332
  data,
3915
2333
  sx: {
3916
2334
  flex: 1
3917
- }
3918
- }, field))
2335
+ },
2336
+ ...field
2337
+ })
3919
2338
  }), /* @__PURE__ */ jsx(Controller, {
3920
2339
  name: `series.${index2}.yAxisIndex`,
3921
2340
  control,
3922
- render: (_a) => {
3923
- var {
3924
- field: _b
3925
- } = _a, _c = _b, {
2341
+ render: ({
2342
+ field: {
3926
2343
  value,
3927
- onChange
3928
- } = _c, rest = __objRest(_c, [
3929
- "value",
3930
- "onChange"
3931
- ]);
3932
- var _a2;
3933
- return /* @__PURE__ */ jsx(Select, __spreadProps(__spreadValues({
2344
+ onChange,
2345
+ ...rest
2346
+ }
2347
+ }) => {
2348
+ var _a;
2349
+ return /* @__PURE__ */ jsx(Select, {
3934
2350
  label: "Y Axis",
3935
2351
  data: yAxisOptions,
3936
- disabled: yAxisOptions.length === 0
3937
- }, rest), {
3938
- 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 : "",
3939
2355
  onChange: (value2) => {
3940
2356
  if (!value2) {
3941
2357
  onChange(0);
@@ -3946,7 +2362,7 @@ function SeriesItemField({
3946
2362
  sx: {
3947
2363
  flex: 1
3948
2364
  }
3949
- }));
2365
+ });
3950
2366
  }
3951
2367
  })]
3952
2368
  }), type === "line" && /* @__PURE__ */ jsx(LineFields, {
@@ -3963,10 +2379,11 @@ function SeriesItemField({
3963
2379
  control,
3964
2380
  render: ({
3965
2381
  field
3966
- }) => /* @__PURE__ */ jsx(Select, __spreadValues({
2382
+ }) => /* @__PURE__ */ jsx(Select, {
3967
2383
  label: "Label Position",
3968
- data: labelPositions
3969
- }, field))
2384
+ data: labelPositions,
2385
+ ...field
2386
+ })
3970
2387
  }), /* @__PURE__ */ jsxs(Group, {
3971
2388
  direction: "column",
3972
2389
  grow: true,
@@ -3979,7 +2396,9 @@ function SeriesItemField({
3979
2396
  control,
3980
2397
  render: ({
3981
2398
  field
3982
- }) => /* @__PURE__ */ jsx(MantineColorSelector, __spreadValues({}, field))
2399
+ }) => /* @__PURE__ */ jsx(MantineColorSelector, {
2400
+ ...field
2401
+ })
3983
2402
  })]
3984
2403
  }), /* @__PURE__ */ jsx(ActionIcon, {
3985
2404
  color: "red",
@@ -4012,7 +2431,10 @@ function SeriesField({
4012
2431
  });
4013
2432
  const watchFieldArray = watch("series");
4014
2433
  const controlledFields = fields.map((field, index2) => {
4015
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
2434
+ return {
2435
+ ...field,
2436
+ ...watchFieldArray[index2]
2437
+ };
4016
2438
  });
4017
2439
  const addSeries = () => append({
4018
2440
  type: "bar",
@@ -4064,21 +2486,24 @@ function _NumbroFormatSelector({
4064
2486
  onChange
4065
2487
  }, ref) {
4066
2488
  const changeOutput = (output) => {
4067
- onChange(__spreadProps(__spreadValues({}, value), {
2489
+ onChange({
2490
+ ...value,
4068
2491
  output
4069
- }));
2492
+ });
4070
2493
  };
4071
2494
  const changeMantissa = (mantissa) => {
4072
2495
  const trimMantissa = mantissa === 0 ? false : value.trimMantissa;
4073
- onChange(__spreadProps(__spreadValues({}, value), {
2496
+ onChange({
2497
+ ...value,
4074
2498
  mantissa,
4075
2499
  trimMantissa
4076
- }));
2500
+ });
4077
2501
  };
4078
2502
  const changeTrimMantissa = (event) => {
4079
- onChange(__spreadProps(__spreadValues({}, value), {
2503
+ onChange({
2504
+ ...value,
4080
2505
  trimMantissa: event.currentTarget.checked
4081
- }));
2506
+ });
4082
2507
  };
4083
2508
  return /* @__PURE__ */ jsx(Group, {
4084
2509
  direction: "column",
@@ -4141,13 +2566,14 @@ function YAxisField({
4141
2566
  control,
4142
2567
  render: ({
4143
2568
  field
4144
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2569
+ }) => /* @__PURE__ */ jsx(TextInput, {
4145
2570
  label: "Name",
4146
2571
  required: true,
4147
2572
  sx: {
4148
2573
  flex: 1
4149
- }
4150
- }, field))
2574
+ },
2575
+ ...field
2576
+ })
4151
2577
  })
4152
2578
  }), /* @__PURE__ */ jsx(Group, {
4153
2579
  direction: "column",
@@ -4158,7 +2584,9 @@ function YAxisField({
4158
2584
  control,
4159
2585
  render: ({
4160
2586
  field
4161
- }) => /* @__PURE__ */ jsx(NumbroFormatSelector, __spreadValues({}, field))
2587
+ }) => /* @__PURE__ */ jsx(NumbroFormatSelector, {
2588
+ ...field
2589
+ })
4162
2590
  })
4163
2591
  }), /* @__PURE__ */ jsx(ActionIcon, {
4164
2592
  color: "red",
@@ -4190,7 +2618,10 @@ function YAxesField({
4190
2618
  });
4191
2619
  const watchFieldArray = watch("y_axes");
4192
2620
  const controlledFields = fields.map((field, index2) => {
4193
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
2621
+ return {
2622
+ ...field,
2623
+ ...watchFieldArray[index2]
2624
+ };
4194
2625
  });
4195
2626
  const addYAxis = () => append({
4196
2627
  name: "",
@@ -4250,13 +2681,14 @@ function RegressionField({
4250
2681
  control,
4251
2682
  render: ({
4252
2683
  field
4253
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
2684
+ }) => /* @__PURE__ */ jsx(TextInput, {
4254
2685
  label: "Name",
4255
2686
  required: true,
4256
2687
  sx: {
4257
2688
  flex: 1
4258
- }
4259
- }, field))
2689
+ },
2690
+ ...field
2691
+ })
4260
2692
  }), /* @__PURE__ */ jsxs(Group, {
4261
2693
  direction: "row",
4262
2694
  grow: true,
@@ -4266,34 +2698,32 @@ function RegressionField({
4266
2698
  control,
4267
2699
  render: ({
4268
2700
  field
4269
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
2701
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
4270
2702
  label: "Value Field",
4271
2703
  required: true,
4272
2704
  data,
4273
2705
  sx: {
4274
2706
  flex: 1
4275
- }
4276
- }, field))
2707
+ },
2708
+ ...field
2709
+ })
4277
2710
  }), /* @__PURE__ */ jsx(Controller, {
4278
2711
  name: `regressions.${index2}.plot.yAxisIndex`,
4279
2712
  control,
4280
- render: (_a) => {
4281
- var {
4282
- field: _b
4283
- } = _a, _c = _b, {
2713
+ render: ({
2714
+ field: {
4284
2715
  value,
4285
- onChange
4286
- } = _c, rest = __objRest(_c, [
4287
- "value",
4288
- "onChange"
4289
- ]);
4290
- var _a2;
4291
- return /* @__PURE__ */ jsx(Select, __spreadProps(__spreadValues({
2716
+ onChange,
2717
+ ...rest
2718
+ }
2719
+ }) => {
2720
+ var _a;
2721
+ return /* @__PURE__ */ jsx(Select, {
4292
2722
  label: "Y Axis",
4293
2723
  data: yAxisOptions,
4294
- disabled: yAxisOptions.length === 0
4295
- }, rest), {
4296
- 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 : "",
4297
2727
  onChange: (value2) => {
4298
2728
  if (!value2) {
4299
2729
  onChange(0);
@@ -4304,7 +2734,7 @@ function RegressionField({
4304
2734
  sx: {
4305
2735
  flex: 1
4306
2736
  }
4307
- }));
2737
+ });
4308
2738
  }
4309
2739
  })]
4310
2740
  }), /* @__PURE__ */ jsxs(Group, {
@@ -4316,24 +2746,26 @@ function RegressionField({
4316
2746
  control,
4317
2747
  render: ({
4318
2748
  field
4319
- }) => /* @__PURE__ */ jsx(Select, __spreadValues({
2749
+ }) => /* @__PURE__ */ jsx(Select, {
4320
2750
  label: "Method",
4321
2751
  data: regressionOptions,
4322
2752
  sx: {
4323
2753
  flex: 1
4324
- }
4325
- }, field))
2754
+ },
2755
+ ...field
2756
+ })
4326
2757
  }), method === "polynomial" && /* @__PURE__ */ jsx(Controller, {
4327
2758
  name: `regressions.${index2}.transform.config.order`,
4328
2759
  control,
4329
2760
  render: ({
4330
2761
  field
4331
- }) => /* @__PURE__ */ jsx(NumberInput, __spreadValues({
2762
+ }) => /* @__PURE__ */ jsx(NumberInput, {
4332
2763
  label: "Order",
4333
2764
  sx: {
4334
2765
  flex: 1
4335
- }
4336
- }, field))
2766
+ },
2767
+ ...field
2768
+ })
4337
2769
  })]
4338
2770
  }), /* @__PURE__ */ jsxs(Group, {
4339
2771
  direction: "column",
@@ -4347,7 +2779,9 @@ function RegressionField({
4347
2779
  control,
4348
2780
  render: ({
4349
2781
  field
4350
- }) => /* @__PURE__ */ jsx(MantineColorSelector, __spreadValues({}, field))
2782
+ }) => /* @__PURE__ */ jsx(MantineColorSelector, {
2783
+ ...field
2784
+ })
4351
2785
  })]
4352
2786
  }), /* @__PURE__ */ jsx(ActionIcon, {
4353
2787
  color: "red",
@@ -4380,7 +2814,10 @@ function RegressionsField({
4380
2814
  });
4381
2815
  const watchFieldArray = watch("regressions");
4382
2816
  const controlledFields = fields.map((field, index2) => {
4383
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
2817
+ return {
2818
+ ...field,
2819
+ ...watchFieldArray[index2]
2820
+ };
4384
2821
  });
4385
2822
  const yAxisOptions = React.useMemo(() => {
4386
2823
  return getValues().y_axes.map(({
@@ -4669,19 +3106,17 @@ function getANewVariable() {
4669
3106
  }
4670
3107
  };
4671
3108
  }
4672
- const TemplateInput = React.forwardRef(function TemplateInput2(_a, ref) {
4673
- var _b = _a, {
4674
- value,
4675
- onChange
4676
- } = _b, rest = __objRest(_b, [
4677
- "value",
4678
- "onChange"
4679
- ]);
4680
- 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, {
4681
3115
  ref,
4682
3116
  value,
4683
- onChange
4684
- }, rest));
3117
+ onChange,
3118
+ ...rest
3119
+ });
4685
3120
  });
4686
3121
  function TemplateVariableField({
4687
3122
  value,
@@ -4815,9 +3250,10 @@ function VariableField$1({
4815
3250
  control,
4816
3251
  render: ({
4817
3252
  field
4818
- }) => /* @__PURE__ */ jsx(TemplateVariableField, __spreadValues({
4819
- data
4820
- }, field))
3253
+ }) => /* @__PURE__ */ jsx(TemplateVariableField, {
3254
+ data,
3255
+ ...field
3256
+ })
4821
3257
  }), /* @__PURE__ */ jsx(ActionIcon, {
4822
3258
  color: "red",
4823
3259
  variant: "hover",
@@ -4849,7 +3285,10 @@ function StatsField({
4849
3285
  watch("stats.templates");
4850
3286
  const watchFieldArray = watch("stats.variables");
4851
3287
  const controlledFields = fields.map((field, index2) => {
4852
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
3288
+ return {
3289
+ ...field,
3290
+ ...watchFieldArray[index2]
3291
+ };
4853
3292
  });
4854
3293
  const add = () => append(getANewVariable());
4855
3294
  return /* @__PURE__ */ jsxs(Group, {
@@ -4865,25 +3304,27 @@ function StatsField({
4865
3304
  control,
4866
3305
  render: ({
4867
3306
  field
4868
- }) => /* @__PURE__ */ jsx(TemplateInput, __spreadValues({
3307
+ }) => /* @__PURE__ */ jsx(TemplateInput, {
4869
3308
  label: "Template for stats above the chart",
4870
3309
  py: "md",
4871
3310
  sx: {
4872
3311
  flexGrow: 1
4873
- }
4874
- }, field))
3312
+ },
3313
+ ...field
3314
+ })
4875
3315
  }), /* @__PURE__ */ jsx(Controller, {
4876
3316
  name: "stats.templates.bottom",
4877
3317
  control,
4878
3318
  render: ({
4879
3319
  field
4880
- }) => /* @__PURE__ */ jsx(TemplateInput, __spreadValues({
3320
+ }) => /* @__PURE__ */ jsx(TemplateInput, {
4881
3321
  label: "Template for stats under the chart",
4882
3322
  py: "md",
4883
3323
  sx: {
4884
3324
  flexGrow: 1
4885
- }
4886
- }, field))
3325
+ },
3326
+ ...field
3327
+ })
4887
3328
  })]
4888
3329
  }), controlledFields.map((_variableItem, index2) => /* @__PURE__ */ jsx(VariableField$1, {
4889
3330
  control,
@@ -4949,30 +3390,27 @@ function VizCartesianChartPanel({
4949
3390
  setConf,
4950
3391
  data
4951
3392
  }) {
4952
- const _a = conf, {
3393
+ const {
4953
3394
  series,
4954
- y_axes
4955
- } = _a, restConf = __objRest(_a, [
4956
- "series",
4957
- "y_axes"
4958
- ]);
3395
+ y_axes,
3396
+ ...restConf
3397
+ } = conf;
4959
3398
  const defaultValues = React.useMemo(() => {
4960
- const _a2 = restConf, {
3399
+ const {
4961
3400
  x_axis_name = "",
4962
- stats
4963
- } = _a2, rest = __objRest(_a2, [
4964
- "x_axis_name",
4965
- "stats"
4966
- ]);
4967
- return __spreadValues({
3401
+ stats,
3402
+ ...rest
3403
+ } = restConf;
3404
+ return {
4968
3405
  series: withDefaults(series != null ? series : []),
4969
3406
  x_axis_name,
4970
3407
  y_axes: y_axes != null ? y_axes : [{
4971
3408
  name: "Y Axis",
4972
3409
  label_formatter: defaultNumbroFormat
4973
3410
  }],
4974
- stats: normalizeStats(stats)
4975
- }, rest);
3411
+ stats: normalizeStats(stats),
3412
+ ...rest
3413
+ };
4976
3414
  }, [series, restConf]);
4977
3415
  React.useEffect(() => {
4978
3416
  const configMalformed = !_.isEqual(conf, defaultValues);
@@ -5038,25 +3476,27 @@ function VizCartesianChartPanel({
5038
3476
  control,
5039
3477
  render: ({
5040
3478
  field
5041
- }) => /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3479
+ }) => /* @__PURE__ */ jsx(DataFieldSelector, {
5042
3480
  label: "X Axis Data Field",
5043
3481
  required: true,
5044
3482
  data,
5045
3483
  sx: {
5046
3484
  flex: 1
5047
- }
5048
- }, field))
3485
+ },
3486
+ ...field
3487
+ })
5049
3488
  }), /* @__PURE__ */ jsx(Controller, {
5050
3489
  name: "x_axis_name",
5051
3490
  control,
5052
3491
  render: ({
5053
3492
  field
5054
- }) => /* @__PURE__ */ jsx(TextInput, __spreadValues({
3493
+ }) => /* @__PURE__ */ jsx(TextInput, {
5055
3494
  label: "X Axis Name",
5056
3495
  sx: {
5057
3496
  flex: 1
5058
- }
5059
- }, field))
3497
+ },
3498
+ ...field
3499
+ })
5060
3500
  })]
5061
3501
  })
5062
3502
  }), /* @__PURE__ */ jsx(Accordion.Item, {
@@ -5142,15 +3582,17 @@ function VizPiePanel({
5142
3582
  border: "1px solid #eee",
5143
3583
  borderRadius: "5px"
5144
3584
  },
5145
- children: [/* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3585
+ children: [/* @__PURE__ */ jsx(DataFieldSelector, {
5146
3586
  label: "Label Field",
5147
3587
  required: true,
5148
- data
5149
- }, form.getInputProps("label_field"))), /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3588
+ data,
3589
+ ...form.getInputProps("label_field")
3590
+ }), /* @__PURE__ */ jsx(DataFieldSelector, {
5150
3591
  label: "Value Field",
5151
3592
  required: true,
5152
- data
5153
- }, form.getInputProps("value_field")))]
3593
+ data,
3594
+ ...form.getInputProps("value_field")
3595
+ })]
5154
3596
  })]
5155
3597
  })
5156
3598
  });
@@ -5218,11 +3660,12 @@ function VizRichTextPanel({
5218
3660
  control,
5219
3661
  render: ({
5220
3662
  field
5221
- }) => /* @__PURE__ */ jsx(RichTextEditor, __spreadValues({
3663
+ }) => /* @__PURE__ */ jsx(RichTextEditor, {
5222
3664
  sx: {
5223
3665
  flex: 1
5224
- }
5225
- }, field))
3666
+ },
3667
+ ...field
3668
+ })
5226
3669
  })]
5227
3670
  })
5228
3671
  });
@@ -5284,9 +3727,10 @@ function VariableField({
5284
3727
  control,
5285
3728
  render: ({
5286
3729
  field
5287
- }) => /* @__PURE__ */ jsx(TemplateVariableField, __spreadValues({
5288
- data
5289
- }, field))
3730
+ }) => /* @__PURE__ */ jsx(TemplateVariableField, {
3731
+ data,
3732
+ ...field
3733
+ })
5290
3734
  }), /* @__PURE__ */ jsx(ActionIcon, {
5291
3735
  color: "red",
5292
3736
  variant: "hover",
@@ -5317,7 +3761,10 @@ function VariablesField({
5317
3761
  });
5318
3762
  const watchFieldArray = watch("variables");
5319
3763
  const controlledFields = fields.map((field, index2) => {
5320
- return __spreadValues(__spreadValues({}, field), watchFieldArray[index2]);
3764
+ return {
3765
+ ...field,
3766
+ ...watchFieldArray[index2]
3767
+ };
5321
3768
  });
5322
3769
  const add = () => append(getANewVariable());
5323
3770
  return /* @__PURE__ */ jsxs(Group, {
@@ -5432,13 +3879,14 @@ function VizStatsPanel({
5432
3879
  control,
5433
3880
  render: ({
5434
3881
  field
5435
- }) => /* @__PURE__ */ jsx(TemplateInput, __spreadValues({
3882
+ }) => /* @__PURE__ */ jsx(TemplateInput, {
5436
3883
  label: "Template",
5437
3884
  py: "md",
5438
3885
  sx: {
5439
3886
  flexGrow: 1
5440
- }
5441
- }, field))
3887
+ },
3888
+ ...field
3889
+ })
5442
3890
  }), /* @__PURE__ */ jsx(Text, {
5443
3891
  pb: "sm",
5444
3892
  pt: "md",
@@ -5501,15 +3949,17 @@ function SunburstPanel({
5501
3949
  border: "1px solid #eee",
5502
3950
  borderRadius: "5px"
5503
3951
  },
5504
- children: [/* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3952
+ children: [/* @__PURE__ */ jsx(DataFieldSelector, {
5505
3953
  label: "Label Field",
5506
3954
  required: true,
5507
- data
5508
- }, form.getInputProps("label_field"))), /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
3955
+ data,
3956
+ ...form.getInputProps("label_field")
3957
+ }), /* @__PURE__ */ jsx(DataFieldSelector, {
5509
3958
  label: "Value Field",
5510
3959
  required: true,
5511
- data
5512
- }, form.getInputProps("value_field")))]
3960
+ data,
3961
+ ...form.getInputProps("value_field")
3962
+ })]
5513
3963
  })]
5514
3964
  })
5515
3965
  });
@@ -5532,19 +3982,16 @@ function ValueTypeSelector({
5532
3982
  sx
5533
3983
  });
5534
3984
  }
5535
- function VizTablePanel(_c) {
5536
- var _d = _c, {
5537
- conf: _e
5538
- } = _d, _f = _e, {
5539
- columns
5540
- } = _f, restConf = __objRest(_f, [
5541
- "columns"
5542
- ]), {
5543
- setConf,
5544
- data
5545
- } = _d;
3985
+ function VizTablePanel({
3986
+ conf: {
3987
+ columns,
3988
+ ...restConf
3989
+ },
3990
+ setConf,
3991
+ data
3992
+ }) {
5546
3993
  const form = useForm$1({
5547
- initialValues: __spreadValues({
3994
+ initialValues: {
5548
3995
  id_field: "id",
5549
3996
  use_raw_columns: true,
5550
3997
  columns: formList(columns != null ? columns : []),
@@ -5552,8 +3999,9 @@ function VizTablePanel(_c) {
5552
3999
  horizontalSpacing: "sm",
5553
4000
  verticalSpacing: "sm",
5554
4001
  striped: false,
5555
- highlightOnHover: false
5556
- }, restConf)
4002
+ highlightOnHover: false,
4003
+ ...restConf
4004
+ }
5557
4005
  });
5558
4006
  const addColumn = () => form.addListItem("columns", {
5559
4007
  label: randomId(),
@@ -5595,11 +4043,12 @@ function VizTablePanel(_c) {
5595
4043
  border: "1px solid #eee",
5596
4044
  borderRadius: "5px"
5597
4045
  },
5598
- children: [/* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
4046
+ children: [/* @__PURE__ */ jsx(DataFieldSelector, {
5599
4047
  label: "ID Field",
5600
4048
  required: true,
5601
- data
5602
- }, form.getInputProps("id_field"))), /* @__PURE__ */ jsxs(Group, {
4049
+ data,
4050
+ ...form.getInputProps("id_field")
4051
+ }), /* @__PURE__ */ jsxs(Group, {
5603
4052
  position: "apart",
5604
4053
  mb: "lg",
5605
4054
  grow: true,
@@ -5608,21 +4057,23 @@ function VizTablePanel(_c) {
5608
4057
  flexGrow: 1
5609
4058
  }
5610
4059
  },
5611
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4060
+ children: [/* @__PURE__ */ jsx(TextInput, {
5612
4061
  label: "Horizontal Spacing",
5613
4062
  placeholder: "10px, 1em, 1rem, 100%...",
5614
4063
  required: true,
5615
4064
  sx: {
5616
4065
  flex: 1
5617
- }
5618
- }, form.getInputProps("horizontalSpacing"))), /* @__PURE__ */ jsx(TextInput, __spreadValues({
4066
+ },
4067
+ ...form.getInputProps("horizontalSpacing")
4068
+ }), /* @__PURE__ */ jsx(TextInput, {
5619
4069
  label: "Vertical Spacing",
5620
4070
  placeholder: "10px, 1em, 1rem, 100%...",
5621
4071
  required: true,
5622
4072
  sx: {
5623
4073
  flex: 1
5624
- }
5625
- }, form.getInputProps("verticalSpacing")))]
4074
+ },
4075
+ ...form.getInputProps("verticalSpacing")
4076
+ })]
5626
4077
  }), /* @__PURE__ */ jsx(Group, {
5627
4078
  position: "apart",
5628
4079
  mb: "lg",
@@ -5632,14 +4083,15 @@ function VizTablePanel(_c) {
5632
4083
  flexGrow: 1
5633
4084
  }
5634
4085
  },
5635
- children: /* @__PURE__ */ jsx(TextInput, __spreadValues({
4086
+ children: /* @__PURE__ */ jsx(TextInput, {
5636
4087
  label: "Font Size",
5637
4088
  placeholder: "10px, 1em, 1rem, 100%...",
5638
4089
  required: true,
5639
4090
  sx: {
5640
4091
  flex: 1
5641
- }
5642
- }, form.getInputProps("fontSize")))
4092
+ },
4093
+ ...form.getInputProps("fontSize")
4094
+ })
5643
4095
  }), /* @__PURE__ */ jsxs(Group, {
5644
4096
  direction: "column",
5645
4097
  grow: true,
@@ -5648,15 +4100,17 @@ function VizTablePanel(_c) {
5648
4100
  }), /* @__PURE__ */ jsxs(Group, {
5649
4101
  position: "apart",
5650
4102
  grow: true,
5651
- children: [/* @__PURE__ */ jsx(Switch, __spreadValues({
5652
- label: "Striped"
5653
- }, form.getInputProps("striped", {
5654
- type: "checkbox"
5655
- }))), /* @__PURE__ */ jsx(Switch, __spreadValues({
5656
- label: "Highlight on hover"
5657
- }, form.getInputProps("highlightOnHover", {
5658
- type: "checkbox"
5659
- })))]
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
+ })]
5660
4114
  })]
5661
4115
  })]
5662
4116
  }), /* @__PURE__ */ jsxs(Group, {
@@ -5670,11 +4124,12 @@ function VizTablePanel(_c) {
5670
4124
  border: "1px solid #eee",
5671
4125
  borderRadius: "5px"
5672
4126
  },
5673
- children: [/* @__PURE__ */ jsx(Switch, __spreadValues({
5674
- label: "Use Original Data Columns"
5675
- }, form.getInputProps("use_raw_columns", {
5676
- type: "checkbox"
5677
- }))), !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, {
5678
4133
  direction: "column",
5679
4134
  grow: true,
5680
4135
  children: [/* @__PURE__ */ jsx(Text, {
@@ -5694,22 +4149,25 @@ function VizTablePanel(_c) {
5694
4149
  children: [/* @__PURE__ */ jsxs(Group, {
5695
4150
  position: "apart",
5696
4151
  grow: true,
5697
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4152
+ children: [/* @__PURE__ */ jsx(TextInput, {
5698
4153
  label: "Label",
5699
4154
  required: true,
5700
4155
  sx: {
5701
4156
  flex: 1
5702
- }
5703
- }, form.getListInputProps("columns", index2, "label"))), /* @__PURE__ */ jsx(DataFieldSelector, __spreadValues({
4157
+ },
4158
+ ...form.getListInputProps("columns", index2, "label")
4159
+ }), /* @__PURE__ */ jsx(DataFieldSelector, {
5704
4160
  label: "Value Field",
5705
4161
  required: true,
5706
- data
5707
- }, form.getListInputProps("columns", index2, "value_field"))), /* @__PURE__ */ jsx(ValueTypeSelector, __spreadValues({
4162
+ data,
4163
+ ...form.getListInputProps("columns", index2, "value_field")
4164
+ }), /* @__PURE__ */ jsx(ValueTypeSelector, {
5708
4165
  label: "Value Type",
5709
4166
  sx: {
5710
4167
  flex: 1
5711
- }
5712
- }, form.getListInputProps("columns", index2, "value_type")))]
4168
+ },
4169
+ ...form.getListInputProps("columns", index2, "value_type")
4170
+ })]
5713
4171
  }), /* @__PURE__ */ jsx(ActionIcon, {
5714
4172
  color: "red",
5715
4173
  variant: "hover",
@@ -5768,9 +4226,10 @@ function VizTextPanel({
5768
4226
  paragraphs: formList((_a = conf.paragraphs) != null ? _a : sampleParagraphs)
5769
4227
  }
5770
4228
  });
5771
- const addParagraph = () => form.addListItem("paragraphs", __spreadProps(__spreadValues({}, sampleParagraphs[0]), {
4229
+ const addParagraph = () => form.addListItem("paragraphs", {
4230
+ ...sampleParagraphs[0],
5772
4231
  template: randomId()
5773
- }));
4232
+ });
5774
4233
  return /* @__PURE__ */ jsx(Group, {
5775
4234
  direction: "column",
5776
4235
  mt: "md",
@@ -5811,29 +4270,33 @@ function VizTextPanel({
5811
4270
  border: "1px solid #eee",
5812
4271
  position: "relative"
5813
4272
  },
5814
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4273
+ children: [/* @__PURE__ */ jsx(TextInput, {
5815
4274
  placeholder: "Time: ${new Date().toISOString()}",
5816
4275
  label: "Content Template",
5817
4276
  required: true,
5818
4277
  sx: {
5819
4278
  flex: 1
5820
- }
5821
- }, form.getListInputProps("paragraphs", index2, "template"))), /* @__PURE__ */ jsxs(Group, {
4279
+ },
4280
+ ...form.getListInputProps("paragraphs", index2, "template")
4281
+ }), /* @__PURE__ */ jsxs(Group, {
5822
4282
  direction: "column",
5823
4283
  grow: true,
5824
4284
  children: [/* @__PURE__ */ jsx(Text, {
5825
4285
  children: "Color"
5826
- }), /* @__PURE__ */ jsx(MantineColorSelector, __spreadValues({}, form.getListInputProps("paragraphs", index2, "color")))]
4286
+ }), /* @__PURE__ */ jsx(MantineColorSelector, {
4287
+ ...form.getListInputProps("paragraphs", index2, "color")
4288
+ })]
5827
4289
  }), /* @__PURE__ */ jsx(Group, {
5828
4290
  direction: "column",
5829
4291
  grow: true,
5830
- children: /* @__PURE__ */ jsx(TextInput, __spreadValues({
4292
+ children: /* @__PURE__ */ jsx(TextInput, {
5831
4293
  label: "Font Size",
5832
4294
  placeholder: "10px, 1em, 1rem, 100%...",
5833
4295
  sx: {
5834
4296
  flex: 1
5835
- }
5836
- }, form.getListInputProps("paragraphs", index2, "size")))
4297
+ },
4298
+ ...form.getListInputProps("paragraphs", index2, "size")
4299
+ })
5837
4300
  }), /* @__PURE__ */ jsx(Group, {
5838
4301
  position: "apart",
5839
4302
  grow: true,
@@ -5843,9 +4306,10 @@ function VizTextPanel({
5843
4306
  maxWidth: "100%"
5844
4307
  }
5845
4308
  },
5846
- children: /* @__PURE__ */ jsx(MantineFontWeightSlider, __spreadValues({
5847
- label: "Font Weight"
5848
- }, form.getListInputProps("paragraphs", index2, "weight")))
4309
+ children: /* @__PURE__ */ jsx(MantineFontWeightSlider, {
4310
+ label: "Font Weight",
4311
+ ...form.getListInputProps("paragraphs", index2, "weight")
4312
+ })
5849
4313
  }), /* @__PURE__ */ jsx(ActionIcon, {
5850
4314
  color: "red",
5851
4315
  variant: "hover",
@@ -5925,12 +4389,14 @@ function EditVizConf() {
5925
4389
  if (!changed) {
5926
4390
  return;
5927
4391
  }
5928
- setViz((v) => __spreadProps(__spreadValues({}, v), {
4392
+ setViz((v) => ({
4393
+ ...v,
5929
4394
  type
5930
4395
  }));
5931
4396
  }, [changed, type]);
5932
4397
  const setVizConf = (conf) => {
5933
- setViz((v) => __spreadProps(__spreadValues({}, v), {
4398
+ setViz((v) => ({
4399
+ ...v,
5934
4400
  conf
5935
4401
  }));
5936
4402
  };
@@ -6073,7 +4539,9 @@ function PanelTitleBar({}) {
6073
4539
  } = React.useContext(LayoutStateContext);
6074
4540
  const {
6075
4541
  duplidatePanel,
6076
- removePanelByID
4542
+ removePanelByID,
4543
+ viewPanelInFullScreen,
4544
+ inFullScreen
6077
4545
  } = React.useContext(DashboardActionContext);
6078
4546
  const duplicate = React.useCallback(() => {
6079
4547
  duplidatePanel(id);
@@ -6087,6 +4555,9 @@ function PanelTitleBar({}) {
6087
4555
  onCancel: () => console.log("Cancel"),
6088
4556
  onConfirm: () => removePanelByID(id)
6089
4557
  });
4558
+ const enterFullScreen = React.useCallback(() => {
4559
+ viewPanelInFullScreen(id);
4560
+ }, [id, viewPanelInFullScreen]);
6090
4561
  return /* @__PURE__ */ jsxs(Box, {
6091
4562
  sx: {
6092
4563
  position: "relative"
@@ -6120,25 +4591,36 @@ function PanelTitleBar({}) {
6120
4591
  size: 14
6121
4592
  }),
6122
4593
  children: "Refresh"
6123
- }), inEditMode && /* @__PURE__ */ jsx(Menu.Item, {
6124
- onClick: open,
6125
- icon: /* @__PURE__ */ jsx(Settings, {
6126
- size: 14
6127
- }),
6128
- children: "Settings"
6129
- }), /* @__PURE__ */ jsx(Divider, {}), /* @__PURE__ */ jsx(Menu.Item, {
6130
- onClick: duplicate,
6131
- icon: /* @__PURE__ */ jsx(Copy, {
6132
- size: 14
6133
- }),
6134
- children: "Duplicate"
6135
- }), /* @__PURE__ */ jsx(Menu.Item, {
6136
- color: "red",
6137
- onClick: remove,
6138
- icon: /* @__PURE__ */ jsx(Trash, {
4594
+ }), !inFullScreen && /* @__PURE__ */ jsx(Menu.Item, {
4595
+ onClick: enterFullScreen,
4596
+ icon: /* @__PURE__ */ jsx(ArrowsMaximize, {
6139
4597
  size: 14
6140
4598
  }),
6141
- children: "Delete"
4599
+ children: "Full Screen"
4600
+ }), inEditMode && /* @__PURE__ */ jsxs(Fragment, {
4601
+ children: [/* @__PURE__ */ jsx(Divider, {
4602
+ label: "Edit",
4603
+ labelPosition: "center"
4604
+ }), /* @__PURE__ */ jsx(Menu.Item, {
4605
+ onClick: open,
4606
+ icon: /* @__PURE__ */ jsx(Settings, {
4607
+ size: 14
4608
+ }),
4609
+ children: "Settings"
4610
+ }), /* @__PURE__ */ jsx(Menu.Item, {
4611
+ onClick: duplicate,
4612
+ icon: /* @__PURE__ */ jsx(Copy, {
4613
+ size: 14
4614
+ }),
4615
+ children: "Duplicate"
4616
+ }), /* @__PURE__ */ jsx(Menu.Item, {
4617
+ color: "red",
4618
+ onClick: remove,
4619
+ icon: /* @__PURE__ */ jsx(Trash, {
4620
+ size: 14
4621
+ }),
4622
+ children: "Delete"
4623
+ })]
6142
4624
  })]
6143
4625
  })
6144
4626
  }), inEditMode && /* @__PURE__ */ jsx(PanelSettingsModal, {
@@ -6229,15 +4711,14 @@ function DashboardLayout({
6229
4711
  }) {
6230
4712
  const onLayoutChange = React.useCallback((currentLayout) => {
6231
4713
  const m2 = /* @__PURE__ */ new Map();
6232
- currentLayout.forEach((_a) => {
6233
- var _b = _a, {
6234
- i
6235
- } = _b, rest = __objRest(_b, [
6236
- "i"
6237
- ]);
4714
+ currentLayout.forEach(({
4715
+ i,
4716
+ ...rest
4717
+ }) => {
6238
4718
  m2.set(i, rest);
6239
4719
  });
6240
- const newPanels = panels.map((p2) => __spreadProps(__spreadValues({}, p2), {
4720
+ const newPanels = panels.map((p2) => ({
4721
+ ...p2,
6241
4722
  layout: m2.get(p2.id)
6242
4723
  }));
6243
4724
  setPanels(newPanels);
@@ -6248,24 +4729,22 @@ function DashboardLayout({
6248
4729
  rowHeight,
6249
4730
  isDraggable,
6250
4731
  isResizable,
6251
- children: panels.map((_a, index2) => {
6252
- var _b = _a, {
6253
- id
6254
- } = _b, rest = __objRest(_b, [
6255
- "id"
6256
- ]);
4732
+ children: panels.map(({
4733
+ id,
4734
+ ...rest
4735
+ }, index2) => {
6257
4736
  return /* @__PURE__ */ jsx("div", {
6258
4737
  "data-grid": rest.layout,
6259
- children: /* @__PURE__ */ jsx(Panel, __spreadProps(__spreadValues({
6260
- id
6261
- }, rest), {
4738
+ children: /* @__PURE__ */ jsx(Panel, {
4739
+ id,
4740
+ ...rest,
6262
4741
  update: (panel) => {
6263
4742
  setPanels((prevs) => {
6264
4743
  prevs.splice(index2, 1, panel);
6265
4744
  return [...prevs];
6266
4745
  });
6267
4746
  }
6268
- }))
4747
+ })
6269
4748
  }, id);
6270
4749
  })
6271
4750
  });
@@ -6490,39 +4969,42 @@ function QueryForm({
6490
4969
  pr: 40,
6491
4970
  children: [/* @__PURE__ */ jsxs(Group, {
6492
4971
  grow: true,
6493
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
4972
+ children: [/* @__PURE__ */ jsx(TextInput, {
6494
4973
  placeholder: "An ID unique in this dashboard",
6495
4974
  label: "ID",
6496
4975
  required: true,
6497
4976
  sx: {
6498
4977
  flex: 1
6499
4978
  },
6500
- disabled: loading
6501
- }, form.getInputProps("id"))), /* @__PURE__ */ jsx(Select, __spreadValues({
4979
+ disabled: loading,
4980
+ ...form.getInputProps("id")
4981
+ }), /* @__PURE__ */ jsx(Select, {
6502
4982
  label: "Data Source Type",
6503
4983
  data: querySourceTypeOptions,
6504
4984
  sx: {
6505
4985
  flex: 1
6506
4986
  },
6507
- disabled: loading
6508
- }, form.getInputProps("type"))), /* @__PURE__ */ jsx(Select, __spreadValues({
4987
+ disabled: loading,
4988
+ ...form.getInputProps("type")
4989
+ }), /* @__PURE__ */ jsx(Select, {
6509
4990
  label: "Data Source Key",
6510
4991
  data: querySourceKeyOptions,
6511
4992
  sx: {
6512
4993
  flex: 1
6513
4994
  },
6514
- disabled: loading
6515
- }, form.getInputProps("key")))]
4995
+ disabled: loading,
4996
+ ...form.getInputProps("key")
4997
+ })]
6516
4998
  }), /* @__PURE__ */ jsxs(Tabs, {
6517
4999
  children: [/* @__PURE__ */ jsx(Tabs.Tab, {
6518
5000
  label: "SQL",
6519
- children: /* @__PURE__ */ jsx(Textarea, __spreadProps(__spreadValues({
5001
+ children: /* @__PURE__ */ jsx(Textarea, {
6520
5002
  autosize: true,
6521
5003
  minRows: 12,
6522
- maxRows: 24
6523
- }, form.getInputProps("sql")), {
5004
+ maxRows: 24,
5005
+ ...form.getInputProps("sql"),
6524
5006
  className: "code-textarea"
6525
- }))
5007
+ })
6526
5008
  }), /* @__PURE__ */ jsx(Tabs.Tab, {
6527
5009
  label: "Preview",
6528
5010
  children: /* @__PURE__ */ jsx(PreviewSQL, {
@@ -6839,16 +5321,17 @@ function SQLSnippetsEditor({}) {
6839
5321
  border: "1px solid #eee",
6840
5322
  position: "relative"
6841
5323
  },
6842
- children: [/* @__PURE__ */ jsx(TextInput, __spreadValues({
5324
+ children: [/* @__PURE__ */ jsx(TextInput, {
6843
5325
  label: "Key",
6844
- required: true
6845
- }, form.getListInputProps("snippets", index2, "key"))), /* @__PURE__ */ jsx(Textarea, __spreadProps(__spreadValues({
5326
+ required: true,
5327
+ ...form.getListInputProps("snippets", index2, "key")
5328
+ }), /* @__PURE__ */ jsx(Textarea, {
6846
5329
  minRows: 3,
6847
5330
  label: "Value",
6848
- required: true
6849
- }, form.getListInputProps("snippets", index2, "value")), {
5331
+ required: true,
5332
+ ...form.getListInputProps("snippets", index2, "value"),
6850
5333
  className: "code-textarea"
6851
- })), /* @__PURE__ */ jsx(PreviewSnippet, {
5334
+ }), /* @__PURE__ */ jsx(PreviewSnippet, {
6852
5335
  value: form.values.snippets[index2].value
6853
5336
  }), /* @__PURE__ */ jsx(ActionIcon, {
6854
5337
  color: "red",
@@ -7127,6 +5610,62 @@ function DashboardActions({
7127
5610
  })]
7128
5611
  });
7129
5612
  }
5613
+ function FullScreenPanel({
5614
+ panel,
5615
+ exitFullScreen
5616
+ }) {
5617
+ return /* @__PURE__ */ jsxs(Group, {
5618
+ direction: "column",
5619
+ grow: true,
5620
+ sx: {
5621
+ flexGrow: 1,
5622
+ justifyContent: "flex-start"
5623
+ },
5624
+ children: [/* @__PURE__ */ jsx(Group, {
5625
+ direction: "row",
5626
+ sx: {
5627
+ flexGrow: 0
5628
+ },
5629
+ children: /* @__PURE__ */ jsx(Button, {
5630
+ variant: "default",
5631
+ size: "sm",
5632
+ onClick: exitFullScreen,
5633
+ leftIcon: /* @__PURE__ */ jsx(ArrowLeft, {
5634
+ size: 20
5635
+ }),
5636
+ children: "Exit fullscreen"
5637
+ })
5638
+ }), /* @__PURE__ */ jsx(Group, {
5639
+ grow: true,
5640
+ sx: {
5641
+ flexGrow: 1,
5642
+ flexShrink: 0
5643
+ },
5644
+ children: /* @__PURE__ */ jsx(Panel, {
5645
+ ...panel
5646
+ })
5647
+ })]
5648
+ });
5649
+ }
5650
+ function usePanelFullScreen(panels) {
5651
+ const [fullScreenPanelID, setFullScreenPanelID] = React.useState(null);
5652
+ const viewPanelInFullScreen = React.useCallback((id) => {
5653
+ setFullScreenPanelID(id);
5654
+ }, []);
5655
+ const exitFullScreen = React.useCallback(() => {
5656
+ setFullScreenPanelID(null);
5657
+ }, []);
5658
+ const fullScreenPanel = React.useMemo(() => {
5659
+ return panels.find((p2) => p2.id === fullScreenPanelID);
5660
+ }, [fullScreenPanelID, panels]);
5661
+ const inFullScreen = !!fullScreenPanel;
5662
+ return {
5663
+ viewPanelInFullScreen,
5664
+ exitFullScreen,
5665
+ inFullScreen,
5666
+ fullScreenPanel
5667
+ };
5668
+ }
7130
5669
  function Dashboard({
7131
5670
  context,
7132
5671
  dashboard,
@@ -7141,7 +5680,7 @@ function Dashboard({
7141
5680
  const [panels, setPanels] = React.useState(dashboard.panels);
7142
5681
  const [sqlSnippets, setSQLSnippets] = React.useState(dashboard.definition.sqlSnippets);
7143
5682
  const [queries, setQueries] = React.useState(dashboard.definition.queries);
7144
- const [mode, setMode] = React.useState(DashboardMode.Edit);
5683
+ const [mode, setMode] = React.useState(DashboardMode.Use);
7145
5684
  const hasChanges = React.useMemo(() => {
7146
5685
  const cleanJSON = (v) => JSON.parse(JSON.stringify(v));
7147
5686
  const panelsEqual = _.isEqual(cleanJSON(panels), cleanJSON(dashboard.panels));
@@ -7154,13 +5693,14 @@ function Dashboard({
7154
5693
  return !_.isEqual(queries, dashboard.definition.queries);
7155
5694
  }, [dashboard, panels, sqlSnippets, queries]);
7156
5695
  const saveDashboardChanges = async () => {
7157
- const d = __spreadProps(__spreadValues({}, dashboard), {
5696
+ const d = {
5697
+ ...dashboard,
7158
5698
  panels,
7159
5699
  definition: {
7160
5700
  sqlSnippets,
7161
5701
  queries
7162
5702
  }
7163
- });
5703
+ };
7164
5704
  await update(d);
7165
5705
  };
7166
5706
  const revertDashboardChanges = () => {
@@ -7194,13 +5734,15 @@ function Dashboard({
7194
5734
  if (!panel) {
7195
5735
  throw new Error(`[duplicate panel] Can't find a panel by id[${id}]`);
7196
5736
  }
7197
- const newPanel = __spreadProps(__spreadValues({}, panel), {
5737
+ const newPanel = {
5738
+ ...panel,
7198
5739
  id: randomId(),
7199
- layout: __spreadProps(__spreadValues({}, panel.layout), {
5740
+ layout: {
5741
+ ...panel.layout,
7200
5742
  x: 0,
7201
5743
  y: Infinity
7202
- })
7203
- });
5744
+ }
5745
+ };
7204
5746
  setPanels((prevs) => [...prevs, newPanel]);
7205
5747
  } catch (error) {
7206
5748
  console.error(error);
@@ -7231,6 +5773,12 @@ function Dashboard({
7231
5773
  }
7232
5774
  };
7233
5775
  }, [sqlSnippets, queries, panels]);
5776
+ const {
5777
+ viewPanelInFullScreen,
5778
+ exitFullScreen,
5779
+ inFullScreen,
5780
+ fullScreenPanel
5781
+ } = usePanelFullScreen(panels);
7234
5782
  return /* @__PURE__ */ jsx(ModalsProvider, {
7235
5783
  children: /* @__PURE__ */ jsx(ContextInfoContext.Provider, {
7236
5784
  value: context,
@@ -7238,11 +5786,13 @@ function Dashboard({
7238
5786
  value: {
7239
5787
  addPanel,
7240
5788
  duplidatePanel,
7241
- removePanelByID
5789
+ removePanelByID,
5790
+ viewPanelInFullScreen,
5791
+ inFullScreen
7242
5792
  },
7243
5793
  children: /* @__PURE__ */ jsx(DefinitionContext.Provider, {
7244
5794
  value: definitions,
7245
- children: /* @__PURE__ */ jsx(LayoutStateContext.Provider, {
5795
+ children: /* @__PURE__ */ jsxs(LayoutStateContext.Provider, {
7246
5796
  value: {
7247
5797
  layoutFrozen,
7248
5798
  freezeLayout,
@@ -7251,8 +5801,15 @@ function Dashboard({
7251
5801
  inLayoutMode,
7252
5802
  inUseMode
7253
5803
  },
7254
- children: /* @__PURE__ */ jsxs("div", {
5804
+ children: [inFullScreen && /* @__PURE__ */ jsx(FullScreenPanel, {
5805
+ panel: fullScreenPanel,
5806
+ exitFullScreen
5807
+ }), /* @__PURE__ */ jsxs(Box, {
7255
5808
  className,
5809
+ sx: {
5810
+ position: "relative",
5811
+ display: inFullScreen ? "none" : "block"
5812
+ },
7256
5813
  children: [/* @__PURE__ */ jsx(DashboardActions, {
7257
5814
  mode,
7258
5815
  setMode,
@@ -7266,7 +5823,7 @@ function Dashboard({
7266
5823
  isDraggable: inLayoutMode,
7267
5824
  isResizable: inLayoutMode
7268
5825
  })]
7269
- })
5826
+ })]
7270
5827
  })
7271
5828
  })
7272
5829
  })
@@ -7284,17 +5841,16 @@ function ReadOnlyDashboardLayout({
7284
5841
  rowHeight,
7285
5842
  isDraggable: false,
7286
5843
  isResizable: false,
7287
- children: panels.map((_a) => {
7288
- var _b = _a, {
7289
- id
7290
- } = _b, rest = __objRest(_b, [
7291
- "id"
7292
- ]);
5844
+ children: panels.map(({
5845
+ id,
5846
+ ...rest
5847
+ }) => {
7293
5848
  return /* @__PURE__ */ jsx("div", {
7294
5849
  "data-grid": rest.layout,
7295
- children: /* @__PURE__ */ jsx(Panel, __spreadValues({
7296
- id
7297
- }, rest))
5850
+ children: /* @__PURE__ */ jsx(Panel, {
5851
+ id,
5852
+ ...rest
5853
+ })
7298
5854
  }, id);
7299
5855
  })
7300
5856
  });
@@ -7308,20 +5864,33 @@ function ReadOnlyDashboard({
7308
5864
  if (APIClient.baseURL !== config.apiBaseURL) {
7309
5865
  APIClient.baseURL = config.apiBaseURL;
7310
5866
  }
7311
- const definition = React.useMemo(() => __spreadProps(__spreadValues({}, dashboard.definition), {
5867
+ const definition = React.useMemo(() => ({
5868
+ ...dashboard.definition,
7312
5869
  setSQLSnippets: () => {
7313
5870
  },
7314
5871
  setQueries: () => {
7315
5872
  }
7316
5873
  }), [dashboard]);
5874
+ const {
5875
+ viewPanelInFullScreen,
5876
+ exitFullScreen,
5877
+ inFullScreen,
5878
+ fullScreenPanel
5879
+ } = usePanelFullScreen(dashboard.panels);
7317
5880
  return /* @__PURE__ */ jsx(ModalsProvider, {
7318
5881
  children: /* @__PURE__ */ jsx(ContextInfoContext.Provider, {
7319
5882
  value: context,
7320
- children: /* @__PURE__ */ jsx("div", {
7321
- className,
5883
+ children: /* @__PURE__ */ jsx(DashboardActionContext.Provider, {
5884
+ value: {
5885
+ addPanel: _.noop,
5886
+ duplidatePanel: _.noop,
5887
+ removePanelByID: _.noop,
5888
+ viewPanelInFullScreen,
5889
+ inFullScreen
5890
+ },
7322
5891
  children: /* @__PURE__ */ jsx(DefinitionContext.Provider, {
7323
5892
  value: definition,
7324
- children: /* @__PURE__ */ jsx(LayoutStateContext.Provider, {
5893
+ children: /* @__PURE__ */ jsxs(LayoutStateContext.Provider, {
7325
5894
  value: {
7326
5895
  layoutFrozen: true,
7327
5896
  freezeLayout: () => {
@@ -7331,9 +5900,18 @@ function ReadOnlyDashboard({
7331
5900
  inLayoutMode: false,
7332
5901
  inUseMode: true
7333
5902
  },
7334
- children: /* @__PURE__ */ jsx(ReadOnlyDashboardLayout, {
7335
- panels: dashboard.panels
7336
- })
5903
+ children: [inFullScreen && /* @__PURE__ */ jsx(FullScreenPanel, {
5904
+ panel: fullScreenPanel,
5905
+ exitFullScreen
5906
+ }), /* @__PURE__ */ jsx(Box, {
5907
+ className,
5908
+ sx: {
5909
+ display: inFullScreen ? "none" : "block"
5910
+ },
5911
+ children: /* @__PURE__ */ jsx(ReadOnlyDashboardLayout, {
5912
+ panels: dashboard.panels
5913
+ })
5914
+ })]
7337
5915
  })
7338
5916
  })
7339
5917
  })