react-pivottable-plus 1.0.14 → 1.0.16

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.
Files changed (56) hide show
  1. package/dist/PivotTableUI.js +131 -211
  2. package/dist/PivotTableUI.js.map +1 -1
  3. package/dist/TableRenderers.js +160 -29
  4. package/dist/TableRenderers.js.map +1 -1
  5. package/dist/core/CellPipeline.js +167 -0
  6. package/dist/core/CellPipeline.js.map +1 -0
  7. package/dist/core/ColumnEngine.js +299 -0
  8. package/dist/core/ColumnEngine.js.map +1 -0
  9. package/dist/core/EventBus.js +109 -0
  10. package/dist/core/EventBus.js.map +1 -0
  11. package/dist/core/ModuleRegistry.js +140 -0
  12. package/dist/core/ModuleRegistry.js.map +1 -0
  13. package/dist/core/PivotCore.js +254 -0
  14. package/dist/core/PivotCore.js.map +1 -0
  15. package/dist/core/PivotEngine.js +151 -0
  16. package/dist/core/PivotEngine.js.map +1 -0
  17. package/dist/core/StateManager.js +142 -0
  18. package/dist/core/StateManager.js.map +1 -0
  19. package/dist/core/VirtualScroller.js +138 -0
  20. package/dist/core/VirtualScroller.js.map +1 -0
  21. package/dist/core/api/ColumnApi.js +162 -0
  22. package/dist/core/api/ColumnApi.js.map +1 -0
  23. package/dist/core/api/GridApi.js +208 -0
  24. package/dist/core/api/GridApi.js.map +1 -0
  25. package/dist/core/index.js +89 -0
  26. package/dist/core/index.js.map +1 -0
  27. package/dist/core/rowModels/ClientSideRowModel.js +177 -0
  28. package/dist/core/rowModels/ClientSideRowModel.js.map +1 -0
  29. package/dist/core/rowModels/index.js +13 -0
  30. package/dist/core/rowModels/index.js.map +1 -0
  31. package/dist/hooks/usePivot.js +63 -155
  32. package/dist/hooks/usePivot.js.map +1 -1
  33. package/dist/modules/FilterModule.js +156 -0
  34. package/dist/modules/FilterModule.js.map +1 -0
  35. package/dist/modules/PaginationModule.js +115 -0
  36. package/dist/modules/PaginationModule.js.map +1 -0
  37. package/dist/modules/SortModule.js +88 -0
  38. package/dist/modules/SortModule.js.map +1 -0
  39. package/dist/modules/ThemeModule.js +83 -0
  40. package/dist/modules/ThemeModule.js.map +1 -0
  41. package/dist/modules/VirtualizationModule.js +89 -0
  42. package/dist/modules/VirtualizationModule.js.map +1 -0
  43. package/dist/modules/index.js +41 -0
  44. package/dist/modules/index.js.map +1 -0
  45. package/dist/react/index.js +13 -0
  46. package/dist/react/index.js.map +1 -0
  47. package/dist/react/usePivotGrid.js +116 -0
  48. package/dist/react/usePivotGrid.js.map +1 -0
  49. package/dist/renderers/RadixUI.js +1 -1
  50. package/dist/renderers/RadixUI.js.map +1 -1
  51. package/dist/renderers/ShadcnDashboardUI.js +1 -1
  52. package/dist/renderers/ShadcnDashboardUI.js.map +1 -1
  53. package/dist/renderers/TailwindUI.js +1 -1
  54. package/dist/renderers/TailwindUI.js.map +1 -1
  55. package/package.json +4 -2
  56. package/pivottable.css +13 -12
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = exports.Dropdown = exports.DraggableAttribute = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
11
10
  var _Utilities = require("./Utilities");
12
11
  var _PivotTable = _interopRequireDefault(require("./PivotTable"));
13
12
  var _TableRenderers = _interopRequireDefault(require("./TableRenderers"));
13
+ var _usePivot2 = require("./hooks/usePivot");
14
14
  var _reactDraggable = _interopRequireDefault(require("react-draggable"));
15
15
  var _core = require("@dnd-kit/core");
16
16
  var _sortable = require("@dnd-kit/sortable");
@@ -274,170 +274,80 @@ var DnDCell = function DnDCell(_ref4) {
274
274
  };
275
275
  var PivotTableUI = function PivotTableUI(props) {
276
276
  var _aggregators$aggregat, _aggregators$aggregat2;
277
- var _props$data = props.data,
278
- data = _props$data === void 0 ? [] : _props$data,
279
- _props$onChange = props.onChange,
280
- onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
281
- _props$rows = props.rows,
282
- rows = _props$rows === void 0 ? [] : _props$rows,
283
- _props$cols = props.cols,
284
- cols = _props$cols === void 0 ? [] : _props$cols,
285
- _props$vals = props.vals,
286
- vals = _props$vals === void 0 ? [] : _props$vals,
287
- _props$aggregatorName = props.aggregatorName,
288
- aggregatorName = _props$aggregatorName === void 0 ? 'Count' : _props$aggregatorName,
289
- _props$aggregators = props.aggregators,
290
- aggregators = _props$aggregators === void 0 ? _Utilities.aggregators : _props$aggregators,
291
- _props$rendererName = props.rendererName,
292
- rendererName = _props$rendererName === void 0 ? 'Table' : _props$rendererName,
293
- _props$renderers = props.renderers,
294
- renderers = _props$renderers === void 0 ? _TableRenderers["default"] : _props$renderers,
295
- _props$valueFilter = props.valueFilter,
296
- valueFilter = _props$valueFilter === void 0 ? {} : _props$valueFilter,
297
- _props$sorters = props.sorters,
298
- sorters = _props$sorters === void 0 ? {} : _props$sorters,
299
- _props$menuLimit = props.menuLimit,
300
- menuLimit = _props$menuLimit === void 0 ? 500 : _props$menuLimit,
301
- _props$unusedOrientat = props.unusedOrientationCutoff,
302
- unusedOrientationCutoff = _props$unusedOrientat === void 0 ? 85 : _props$unusedOrientat,
303
- _props$hiddenAttribut = props.hiddenAttributes,
304
- hiddenAttributes = _props$hiddenAttribut === void 0 ? [] : _props$hiddenAttribut,
305
- _props$hiddenFromAggr = props.hiddenFromAggregators,
306
- hiddenFromAggregators = _props$hiddenFromAggr === void 0 ? [] : _props$hiddenFromAggr,
307
- _props$hiddenFromDrag = props.hiddenFromDragDrop,
308
- hiddenFromDragDrop = _props$hiddenFromDrag === void 0 ? [] : _props$hiddenFromDrag,
309
- _props$pagination = props.pagination,
310
- pagination = _props$pagination === void 0 ? false : _props$pagination,
311
- _props$page = props.page,
312
- page = _props$page === void 0 ? 1 : _props$page,
313
- _props$pageSize = props.pageSize,
314
- pageSize = _props$pageSize === void 0 ? 20 : _props$pageSize,
315
- _props$rowOrder = props.rowOrder,
316
- rowOrder = _props$rowOrder === void 0 ? 'key_a_to_z' : _props$rowOrder,
317
- _props$colOrder = props.colOrder,
318
- colOrder = _props$colOrder === void 0 ? 'key_a_to_z' : _props$colOrder,
319
- _props$derivedAttribu = props.derivedAttributes,
320
- derivedAttributes = _props$derivedAttribu === void 0 ? {} : _props$derivedAttribu,
321
- _props$size = props.size,
322
- size = _props$size === void 0 ? 'lg' : _props$size;
277
+ // ─── Headless Core: toda la lógica de datos y props fluye a través del Core ───
278
+ var _usePivot = (0, _usePivot2.usePivot)(props),
279
+ pivotProps = _usePivot.props,
280
+ pivotState = _usePivot.state,
281
+ actions = _usePivot.actions;
282
+
283
+ // ─── Estado local solo para UI (no pertenece al Core) ─────────────────────────
323
284
  var _useState5 = (0, _react.useState)({
324
- unusedOrder: [],
325
285
  zIndices: {},
326
286
  maxZIndex: 1000,
327
- openDropdown: false,
328
- attrValues: {},
329
- materializedInput: [],
330
- data: null
287
+ openDropdown: false
331
288
  }),
332
289
  _useState6 = _slicedToArray(_useState5, 2),
333
- state = _useState6[0],
334
- setState = _useState6[1];
290
+ uiState = _useState6[0],
291
+ setUiState = _useState6[1];
335
292
  var _useState7 = (0, _react.useState)(null),
336
293
  _useState8 = _slicedToArray(_useState7, 2),
337
294
  activeId = _useState8[0],
338
295
  setActiveId = _useState8[1];
339
- (0, _react.useEffect)(function () {
340
- if (state.data === data) return;
341
- var newState = {
342
- data: data,
343
- attrValues: {},
344
- materializedInput: []
345
- };
346
- var recordsProcessed = 0;
347
- _Utilities.PivotData.forEachRecord(data, derivedAttributes, function (record) {
348
- newState.materializedInput.push(record);
349
- for (var _i = 0, _Object$keys = Object.keys(record); _i < _Object$keys.length; _i++) {
350
- var attr = _Object$keys[_i];
351
- if (!(attr in newState.attrValues)) {
352
- newState.attrValues[attr] = {};
353
- if (recordsProcessed > 0) newState.attrValues[attr]["null"] = recordsProcessed;
354
- }
355
- }
356
- for (var _attr in newState.attrValues) {
357
- var value = _attr in record ? record[_attr] : 'null';
358
- if (!(value in newState.attrValues[_attr])) newState.attrValues[_attr][value] = 0;
359
- newState.attrValues[_attr][value]++;
360
- }
361
- recordsProcessed++;
362
- });
363
- setState(function (s) {
364
- return _objectSpread(_objectSpread({}, s), newState);
365
- });
366
- }, [data, derivedAttributes, state.data]);
367
- var sendPropUpdate = (0, _react.useCallback)(function (command) {
368
- var newProps = (0, _immutabilityHelper["default"])(props, command);
369
- if (onChange) onChange(newProps);
370
- }, [props, onChange]);
371
- var handleDuplicates = function handleDuplicates(newAttrs, existingAttrs) {
372
- if (!newAttrs || !existingAttrs) return existingAttrs || [];
373
- var dups = newAttrs.filter(function (item) {
374
- return existingAttrs.includes(item);
375
- });
376
- return dups.length > 0 ? existingAttrs.filter(function (item) {
377
- return !dups.includes(item);
378
- }) : existingAttrs;
379
- };
380
- var propUpdater = (0, _react.useCallback)(function (key) {
381
- return function (value) {
382
- var updateObj = _defineProperty({}, key, {
383
- $set: value
384
- });
385
- if (key === 'rows') {
386
- var updatedCols = handleDuplicates(value, cols);
387
- if (updatedCols.length !== cols.length) updateObj.cols = {
388
- $set: updatedCols
389
- };
390
- } else if (key === 'cols') {
391
- var updatedRows = handleDuplicates(value, rows);
392
- if (updatedRows.length !== rows.length) updateObj.rows = {
393
- $set: updatedRows
394
- };
395
- }
396
- sendPropUpdate(updateObj);
397
- };
398
- }, [cols, rows, sendPropUpdate]);
399
- var setValuesInFilter = (0, _react.useCallback)(function (attribute, values) {
400
- sendPropUpdate({
401
- valueFilter: _defineProperty({}, attribute, {
402
- $set: values.reduce(function (r, v) {
403
- r[v] = true;
404
- return r;
405
- }, {})
406
- })
407
- });
408
- }, [sendPropUpdate]);
409
- var addValuesToFilter = (0, _react.useCallback)(function (attribute, values) {
410
- if (attribute in valueFilter) {
411
- sendPropUpdate({
412
- valueFilter: _defineProperty({}, attribute, values.reduce(function (r, v) {
413
- r[v] = {
414
- $set: true
415
- };
416
- return r;
417
- }, {}))
418
- });
419
- } else {
420
- setValuesInFilter(attribute, values);
421
- }
422
- }, [sendPropUpdate, valueFilter, setValuesInFilter]);
423
- var removeValuesFromFilter = (0, _react.useCallback)(function (attribute, values) {
424
- sendPropUpdate({
425
- valueFilter: _defineProperty({}, attribute, {
426
- $unset: values
427
- })
428
- });
429
- }, [sendPropUpdate]);
296
+
297
+ // ─── Helpers de UI local ──────────────────────────────────────────────────────
430
298
  var moveFilterBoxToTop = (0, _react.useCallback)(function (attribute) {
431
- setState(function (s) {
299
+ setUiState(function (s) {
432
300
  return _objectSpread(_objectSpread({}, s), {}, {
433
301
  maxZIndex: s.maxZIndex + 1,
434
302
  zIndices: _objectSpread(_objectSpread({}, s.zIndices), {}, _defineProperty({}, attribute, s.maxZIndex + 1))
435
303
  });
436
304
  });
437
305
  }, []);
438
- var unusedAttrs = Object.keys(state.attrValues).filter(function (e) {
306
+
307
+ // ─── Derivados desde el Core ──────────────────────────────────────────────────
308
+ var _pivotProps$rows = pivotProps.rows,
309
+ rows = _pivotProps$rows === void 0 ? [] : _pivotProps$rows,
310
+ _pivotProps$cols = pivotProps.cols,
311
+ cols = _pivotProps$cols === void 0 ? [] : _pivotProps$cols,
312
+ _pivotProps$vals = pivotProps.vals,
313
+ vals = _pivotProps$vals === void 0 ? [] : _pivotProps$vals,
314
+ _pivotProps$aggregato = pivotProps.aggregatorName,
315
+ aggregatorName = _pivotProps$aggregato === void 0 ? 'Count' : _pivotProps$aggregato,
316
+ _pivotProps$aggregato2 = pivotProps.aggregators,
317
+ aggregators = _pivotProps$aggregato2 === void 0 ? _Utilities.aggregators : _pivotProps$aggregato2,
318
+ _pivotProps$rendererN = pivotProps.rendererName,
319
+ rendererName = _pivotProps$rendererN === void 0 ? 'Table' : _pivotProps$rendererN,
320
+ _pivotProps$renderers = pivotProps.renderers,
321
+ renderers = _pivotProps$renderers === void 0 ? _TableRenderers["default"] : _pivotProps$renderers,
322
+ _pivotProps$valueFilt = pivotProps.valueFilter,
323
+ valueFilter = _pivotProps$valueFilt === void 0 ? {} : _pivotProps$valueFilt,
324
+ _pivotProps$sorters = pivotProps.sorters,
325
+ sorters = _pivotProps$sorters === void 0 ? {} : _pivotProps$sorters,
326
+ _pivotProps$menuLimit = pivotProps.menuLimit,
327
+ menuLimit = _pivotProps$menuLimit === void 0 ? 500 : _pivotProps$menuLimit,
328
+ _pivotProps$unusedOri = pivotProps.unusedOrientationCutoff,
329
+ unusedOrientationCutoff = _pivotProps$unusedOri === void 0 ? 85 : _pivotProps$unusedOri,
330
+ _pivotProps$hiddenAtt = pivotProps.hiddenAttributes,
331
+ hiddenAttributes = _pivotProps$hiddenAtt === void 0 ? [] : _pivotProps$hiddenAtt,
332
+ _pivotProps$hiddenFro = pivotProps.hiddenFromAggregators,
333
+ hiddenFromAggregators = _pivotProps$hiddenFro === void 0 ? [] : _pivotProps$hiddenFro,
334
+ _pivotProps$hiddenFro2 = pivotProps.hiddenFromDragDrop,
335
+ hiddenFromDragDrop = _pivotProps$hiddenFro2 === void 0 ? [] : _pivotProps$hiddenFro2,
336
+ _pivotProps$paginatio = pivotProps.pagination,
337
+ pagination = _pivotProps$paginatio === void 0 ? false : _pivotProps$paginatio,
338
+ _pivotProps$page = pivotProps.page,
339
+ page = _pivotProps$page === void 0 ? 1 : _pivotProps$page,
340
+ _pivotProps$pageSize = pivotProps.pageSize,
341
+ pageSize = _pivotProps$pageSize === void 0 ? 20 : _pivotProps$pageSize,
342
+ _pivotProps$rowOrder = pivotProps.rowOrder,
343
+ rowOrder = _pivotProps$rowOrder === void 0 ? 'key_a_to_z' : _pivotProps$rowOrder,
344
+ _pivotProps$colOrder = pivotProps.colOrder,
345
+ colOrder = _pivotProps$colOrder === void 0 ? 'key_a_to_z' : _pivotProps$colOrder,
346
+ _pivotProps$size = pivotProps.size,
347
+ size = _pivotProps$size === void 0 ? 'lg' : _pivotProps$size;
348
+ var unusedAttrs = Object.keys(pivotState.attrValues).filter(function (e) {
439
349
  return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
440
- }).sort((0, _Utilities.sortAs)(state.unusedOrder));
350
+ }).sort((0, _Utilities.sortAs)(pivotState.unusedOrder || []));
441
351
  var unusedLength = unusedAttrs.reduce(function (r, e) {
442
352
  return r + e.length;
443
353
  }, 0);
@@ -448,6 +358,8 @@ var PivotTableUI = function PivotTableUI(props) {
448
358
  var rowAttrs = rows.filter(function (e) {
449
359
  return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
450
360
  });
361
+
362
+ // ─── DnD Zones ────────────────────────────────────────────────────────────────
451
363
  var getZoneOfItem = function getZoneOfItem(id) {
452
364
  if (rowAttrs.includes(id)) return 'rows';
453
365
  if (colAttrs.includes(id)) return 'cols';
@@ -461,14 +373,14 @@ var PivotTableUI = function PivotTableUI(props) {
461
373
  return [];
462
374
  };
463
375
  var getUpdaterByZone = function getUpdaterByZone(zone) {
464
- if (zone === 'rows') return propUpdater('rows');
465
- if (zone === 'cols') return propUpdater('cols');
376
+ if (zone === 'rows') return function (value) {
377
+ return actions.updateProp('rows', value);
378
+ };
379
+ if (zone === 'cols') return function (value) {
380
+ return actions.updateProp('cols', value);
381
+ };
466
382
  if (zone === 'unused') return function (order) {
467
- return setState(function (s) {
468
- return _objectSpread(_objectSpread({}, s), {}, {
469
- unusedOrder: order
470
- });
471
- });
383
+ return actions.setUnusedOrder(order);
472
384
  };
473
385
  return function () {};
474
386
  };
@@ -517,8 +429,10 @@ var PivotTableUI = function PivotTableUI(props) {
517
429
  if (oldIndex !== newIndex) getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
518
430
  }
519
431
  };
432
+
433
+ // ─── Dropdowns y controles ────────────────────────────────────────────────────
520
434
  var isOpen = function isOpen(dropdown) {
521
- return state.openDropdown === dropdown;
435
+ return uiState.openDropdown === dropdown;
522
436
  };
523
437
  var numValsAllowed = ((_aggregators$aggregat = aggregators[aggregatorName]) === null || _aggregators$aggregat === void 0 || (_aggregators$aggregat2 = _aggregators$aggregat.call(aggregators, [])) === null || _aggregators$aggregat2 === void 0 || (_aggregators$aggregat2 = _aggregators$aggregat2()) === null || _aggregators$aggregat2 === void 0 ? void 0 : _aggregators$aggregat2.numInputs) || 0;
524
438
  var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
@@ -539,19 +453,25 @@ var PivotTableUI = function PivotTableUI(props) {
539
453
  next: 'key_a_to_z'
540
454
  }
541
455
  };
456
+
457
+ // Estado combinado para DnDCell (necesita zIndices del UI local + attrValues del Core)
458
+ var combinedState = {
459
+ attrValues: pivotState.attrValues,
460
+ zIndices: uiState.zIndices,
461
+ maxZIndex: uiState.maxZIndex
462
+ };
542
463
  var sharedCellProps = {
543
- state: state,
464
+ state: combinedState,
544
465
  valueFilter: valueFilter,
545
466
  sorters: sorters,
546
467
  menuLimit: menuLimit,
547
- setValuesInFilter: setValuesInFilter,
548
- addValuesToFilter: addValuesToFilter,
468
+ setValuesInFilter: actions.setValuesInFilter,
469
+ addValuesToFilter: actions.addValuesToFilter,
549
470
  moveFilterBoxToTop: moveFilterBoxToTop,
550
- removeValuesFromFilter: removeValuesFromFilter
471
+ removeValuesFromFilter: actions.removeValuesFromFilter
551
472
  };
552
473
  var componentProps = {
553
- data: state.materializedInput,
554
- onChange: onChange,
474
+ data: pivotState.materializedInput,
555
475
  rows: rows,
556
476
  cols: cols,
557
477
  vals: vals,
@@ -571,12 +491,14 @@ var PivotTableUI = function PivotTableUI(props) {
571
491
  pageSize: pageSize,
572
492
  rowOrder: rowOrder,
573
493
  colOrder: colOrder,
574
- derivedAttributes: derivedAttributes
494
+ derivedAttributes: pivotProps.derivedAttributes,
495
+ cellPipeline: pivotProps.cellPipeline,
496
+ virtualization: pivotProps.virtualization
575
497
  };
576
498
  var renderFooter = function renderFooter() {
577
499
  var pivotData = new _Utilities.PivotData(componentProps);
578
500
  var totalPivotRows = pivotData.getRowKeys().length;
579
- var totalRecords = state.materializedInput.length;
501
+ var totalRecords = pivotState.materializedInput.length;
580
502
  var totalPages = Math.ceil(totalPivotRows / pageSize);
581
503
  return /*#__PURE__*/_react["default"].createElement("div", {
582
504
  className: "pvtFooter"
@@ -588,13 +510,13 @@ var PivotTableUI = function PivotTableUI(props) {
588
510
  className: "pvtButton",
589
511
  disabled: page <= 1,
590
512
  onClick: function onClick() {
591
- return propUpdater('page')(1);
513
+ return actions.updateProp('page', 1);
592
514
  }
593
515
  }, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
594
516
  className: "pvtButton",
595
517
  disabled: page <= 1,
596
518
  onClick: function onClick() {
597
- return propUpdater('page')(page - 1);
519
+ return actions.updateProp('page', page - 1);
598
520
  }
599
521
  }, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina ", /*#__PURE__*/_react["default"].createElement("input", {
600
522
  type: "number",
@@ -604,32 +526,26 @@ var PivotTableUI = function PivotTableUI(props) {
604
526
  max: totalPages,
605
527
  onChange: function onChange(e) {
606
528
  var val = parseInt(e.target.value, 10);
607
- if (val > 0 && val <= totalPages) propUpdater('page')(val);
529
+ if (val > 0 && val <= totalPages) actions.updateProp('page', val);
608
530
  }
609
531
  }), " de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
610
532
  className: "pvtButton",
611
533
  disabled: page >= totalPages,
612
534
  onClick: function onClick() {
613
- return propUpdater('page')(page + 1);
535
+ return actions.updateProp('page', page + 1);
614
536
  }
615
537
  }, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
616
538
  className: "pvtButton",
617
539
  disabled: page >= totalPages,
618
540
  onClick: function onClick() {
619
- return propUpdater('page')(totalPages);
541
+ return actions.updateProp('page', totalPages);
620
542
  }
621
543
  }, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
622
544
  className: "pvtPageSize",
623
545
  value: pageSize,
624
546
  onChange: function onChange(e) {
625
- sendPropUpdate({
626
- pageSize: {
627
- $set: parseInt(e.target.value, 10)
628
- },
629
- page: {
630
- $set: 1
631
- }
632
- });
547
+ actions.updateProp('pageSize', parseInt(e.target.value, 10));
548
+ actions.updateProp('page', 1);
633
549
  }
634
550
  }, [10, 20, 50, 100].map(function (n) {
635
551
  return /*#__PURE__*/_react["default"].createElement("option", {
@@ -645,10 +561,10 @@ var PivotTableUI = function PivotTableUI(props) {
645
561
  onDragOver: handleDragOver,
646
562
  onDragEnd: handleDragEnd
647
563
  }, /*#__PURE__*/_react["default"].createElement("table", {
648
- className: "pvtUi pvtSize-".concat(size)
564
+ className: "pvtUi pvt-theme-".concat(props.theme || 'default', " pvt-size-").concat(size || 'lg')
649
565
  }, /*#__PURE__*/_react["default"].createElement("tbody", {
650
566
  onClick: function onClick() {
651
- return setState(function (s) {
567
+ return setUiState(function (s) {
652
568
  return _objectSpread(_objectSpread({}, s), {}, {
653
569
  openDropdown: false
654
570
  });
@@ -660,15 +576,17 @@ var PivotTableUI = function PivotTableUI(props) {
660
576
  current: actualRendererName,
661
577
  values: Object.keys(renderers),
662
578
  open: isOpen('renderer'),
663
- zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
579
+ zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
664
580
  toggle: function toggle() {
665
- return setState(function (s) {
581
+ return setUiState(function (s) {
666
582
  return _objectSpread(_objectSpread({}, s), {}, {
667
583
  openDropdown: isOpen('renderer') ? false : 'renderer'
668
584
  });
669
585
  });
670
586
  },
671
- setValue: propUpdater('rendererName')
587
+ setValue: function setValue(v) {
588
+ return actions.updateProp('rendererName', v);
589
+ }
672
590
  })), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
673
591
  id: "unused",
674
592
  items: unusedAttrs,
@@ -680,49 +598,49 @@ var PivotTableUI = function PivotTableUI(props) {
680
598
  current: aggregatorName,
681
599
  values: Object.keys(aggregators),
682
600
  open: isOpen('aggregators'),
683
- zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
601
+ zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
684
602
  toggle: function toggle() {
685
- return setState(function (s) {
603
+ return setUiState(function (s) {
686
604
  return _objectSpread(_objectSpread({}, s), {}, {
687
605
  openDropdown: isOpen('aggregators') ? false : 'aggregators'
688
606
  });
689
607
  });
690
608
  },
691
- setValue: propUpdater('aggregatorName')
609
+ setValue: function setValue(v) {
610
+ return actions.updateProp('aggregatorName', v);
611
+ }
692
612
  }), /*#__PURE__*/_react["default"].createElement("a", {
693
613
  role: "button",
694
614
  className: "pvtRowOrder",
695
615
  onClick: function onClick() {
696
- return propUpdater('rowOrder')(sortIcons[rowOrder].next);
616
+ return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
697
617
  }
698
618
  }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
699
619
  role: "button",
700
620
  className: "pvtColOrder",
701
621
  onClick: function onClick() {
702
- return propUpdater('colOrder')(sortIcons[colOrder].next);
622
+ return actions.updateProp('colOrder', sortIcons[colOrder].next);
703
623
  }
704
624
  }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
705
625
  return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
706
626
  key: i,
707
627
  current: vals[i],
708
- values: Object.keys(state.attrValues).filter(function (e) {
628
+ values: Object.keys(pivotState.attrValues).filter(function (e) {
709
629
  return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
710
630
  }),
711
631
  open: isOpen("val".concat(i)),
712
- zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
632
+ zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
713
633
  toggle: function toggle() {
714
- return setState(function (s) {
634
+ return setUiState(function (s) {
715
635
  return _objectSpread(_objectSpread({}, s), {}, {
716
636
  openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
717
637
  });
718
638
  });
719
639
  },
720
640
  setValue: function setValue(value) {
721
- return sendPropUpdate({
722
- vals: {
723
- $splice: [[i, 1, value]]
724
- }
725
- });
641
+ var newVals = _toConsumableArray(vals);
642
+ newVals[i] = value;
643
+ actions.updateProp('vals', newVals);
726
644
  }
727
645
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
728
646
  key: "br".concat(i)
@@ -745,64 +663,66 @@ var PivotTableUI = function PivotTableUI(props) {
745
663
  current: actualRendererName,
746
664
  values: Object.keys(renderers),
747
665
  open: isOpen('renderer'),
748
- zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
666
+ zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
749
667
  toggle: function toggle() {
750
- return setState(function (s) {
668
+ return setUiState(function (s) {
751
669
  return _objectSpread(_objectSpread({}, s), {}, {
752
670
  openDropdown: isOpen('renderer') ? false : 'renderer'
753
671
  });
754
672
  });
755
673
  },
756
- setValue: propUpdater('rendererName')
674
+ setValue: function setValue(v) {
675
+ return actions.updateProp('rendererName', v);
676
+ }
757
677
  })), /*#__PURE__*/_react["default"].createElement("td", {
758
678
  className: "pvtVals"
759
679
  }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
760
680
  current: aggregatorName,
761
681
  values: Object.keys(aggregators),
762
682
  open: isOpen('aggregators'),
763
- zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
683
+ zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
764
684
  toggle: function toggle() {
765
- return setState(function (s) {
685
+ return setUiState(function (s) {
766
686
  return _objectSpread(_objectSpread({}, s), {}, {
767
687
  openDropdown: isOpen('aggregators') ? false : 'aggregators'
768
688
  });
769
689
  });
770
690
  },
771
- setValue: propUpdater('aggregatorName')
691
+ setValue: function setValue(v) {
692
+ return actions.updateProp('aggregatorName', v);
693
+ }
772
694
  }), /*#__PURE__*/_react["default"].createElement("a", {
773
695
  role: "button",
774
696
  className: "pvtRowOrder",
775
697
  onClick: function onClick() {
776
- return propUpdater('rowOrder')(sortIcons[rowOrder].next);
698
+ return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
777
699
  }
778
700
  }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
779
701
  role: "button",
780
702
  className: "pvtColOrder",
781
703
  onClick: function onClick() {
782
- return propUpdater('colOrder')(sortIcons[colOrder].next);
704
+ return actions.updateProp('colOrder', sortIcons[colOrder].next);
783
705
  }
784
706
  }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
785
707
  return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
786
708
  key: i,
787
709
  current: vals[i],
788
- values: Object.keys(state.attrValues).filter(function (e) {
710
+ values: Object.keys(pivotState.attrValues).filter(function (e) {
789
711
  return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
790
712
  }),
791
713
  open: isOpen("val".concat(i)),
792
- zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
714
+ zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
793
715
  toggle: function toggle() {
794
- return setState(function (s) {
716
+ return setUiState(function (s) {
795
717
  return _objectSpread(_objectSpread({}, s), {}, {
796
718
  openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
797
719
  });
798
720
  });
799
721
  },
800
722
  setValue: function setValue(value) {
801
- return sendPropUpdate({
802
- vals: {
803
- $splice: [[i, 1, value]]
804
- }
805
- });
723
+ var newVals = _toConsumableArray(vals);
724
+ newVals[i] = value;
725
+ actions.updateProp('vals', newVals);
806
726
  }
807
727
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
808
728
  key: "br".concat(i)