react-pivottable-plus 1.0.13 → 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 +133 -210
  2. package/dist/PivotTableUI.js.map +1 -1
  3. package/dist/TableRenderers.js +193 -28
  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 +56 -0
@@ -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,168 +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;
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) ─────────────────────────
321
284
  var _useState5 = (0, _react.useState)({
322
- unusedOrder: [],
323
285
  zIndices: {},
324
286
  maxZIndex: 1000,
325
- openDropdown: false,
326
- attrValues: {},
327
- materializedInput: [],
328
- data: null
287
+ openDropdown: false
329
288
  }),
330
289
  _useState6 = _slicedToArray(_useState5, 2),
331
- state = _useState6[0],
332
- setState = _useState6[1];
290
+ uiState = _useState6[0],
291
+ setUiState = _useState6[1];
333
292
  var _useState7 = (0, _react.useState)(null),
334
293
  _useState8 = _slicedToArray(_useState7, 2),
335
294
  activeId = _useState8[0],
336
295
  setActiveId = _useState8[1];
337
- (0, _react.useEffect)(function () {
338
- if (state.data === data) return;
339
- var newState = {
340
- data: data,
341
- attrValues: {},
342
- materializedInput: []
343
- };
344
- var recordsProcessed = 0;
345
- _Utilities.PivotData.forEachRecord(data, derivedAttributes, function (record) {
346
- newState.materializedInput.push(record);
347
- for (var _i = 0, _Object$keys = Object.keys(record); _i < _Object$keys.length; _i++) {
348
- var attr = _Object$keys[_i];
349
- if (!(attr in newState.attrValues)) {
350
- newState.attrValues[attr] = {};
351
- if (recordsProcessed > 0) newState.attrValues[attr]["null"] = recordsProcessed;
352
- }
353
- }
354
- for (var _attr in newState.attrValues) {
355
- var value = _attr in record ? record[_attr] : 'null';
356
- if (!(value in newState.attrValues[_attr])) newState.attrValues[_attr][value] = 0;
357
- newState.attrValues[_attr][value]++;
358
- }
359
- recordsProcessed++;
360
- });
361
- setState(function (s) {
362
- return _objectSpread(_objectSpread({}, s), newState);
363
- });
364
- }, [data, derivedAttributes, state.data]);
365
- var sendPropUpdate = (0, _react.useCallback)(function (command) {
366
- var newProps = (0, _immutabilityHelper["default"])(props, command);
367
- if (onChange) onChange(newProps);
368
- }, [props, onChange]);
369
- var handleDuplicates = function handleDuplicates(newAttrs, existingAttrs) {
370
- if (!newAttrs || !existingAttrs) return existingAttrs || [];
371
- var dups = newAttrs.filter(function (item) {
372
- return existingAttrs.includes(item);
373
- });
374
- return dups.length > 0 ? existingAttrs.filter(function (item) {
375
- return !dups.includes(item);
376
- }) : existingAttrs;
377
- };
378
- var propUpdater = (0, _react.useCallback)(function (key) {
379
- return function (value) {
380
- var updateObj = _defineProperty({}, key, {
381
- $set: value
382
- });
383
- if (key === 'rows') {
384
- var updatedCols = handleDuplicates(value, cols);
385
- if (updatedCols.length !== cols.length) updateObj.cols = {
386
- $set: updatedCols
387
- };
388
- } else if (key === 'cols') {
389
- var updatedRows = handleDuplicates(value, rows);
390
- if (updatedRows.length !== rows.length) updateObj.rows = {
391
- $set: updatedRows
392
- };
393
- }
394
- sendPropUpdate(updateObj);
395
- };
396
- }, [cols, rows, sendPropUpdate]);
397
- var setValuesInFilter = (0, _react.useCallback)(function (attribute, values) {
398
- sendPropUpdate({
399
- valueFilter: _defineProperty({}, attribute, {
400
- $set: values.reduce(function (r, v) {
401
- r[v] = true;
402
- return r;
403
- }, {})
404
- })
405
- });
406
- }, [sendPropUpdate]);
407
- var addValuesToFilter = (0, _react.useCallback)(function (attribute, values) {
408
- if (attribute in valueFilter) {
409
- sendPropUpdate({
410
- valueFilter: _defineProperty({}, attribute, values.reduce(function (r, v) {
411
- r[v] = {
412
- $set: true
413
- };
414
- return r;
415
- }, {}))
416
- });
417
- } else {
418
- setValuesInFilter(attribute, values);
419
- }
420
- }, [sendPropUpdate, valueFilter, setValuesInFilter]);
421
- var removeValuesFromFilter = (0, _react.useCallback)(function (attribute, values) {
422
- sendPropUpdate({
423
- valueFilter: _defineProperty({}, attribute, {
424
- $unset: values
425
- })
426
- });
427
- }, [sendPropUpdate]);
296
+
297
+ // ─── Helpers de UI local ──────────────────────────────────────────────────────
428
298
  var moveFilterBoxToTop = (0, _react.useCallback)(function (attribute) {
429
- setState(function (s) {
299
+ setUiState(function (s) {
430
300
  return _objectSpread(_objectSpread({}, s), {}, {
431
301
  maxZIndex: s.maxZIndex + 1,
432
302
  zIndices: _objectSpread(_objectSpread({}, s.zIndices), {}, _defineProperty({}, attribute, s.maxZIndex + 1))
433
303
  });
434
304
  });
435
305
  }, []);
436
- 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) {
437
349
  return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
438
- }).sort((0, _Utilities.sortAs)(state.unusedOrder));
350
+ }).sort((0, _Utilities.sortAs)(pivotState.unusedOrder || []));
439
351
  var unusedLength = unusedAttrs.reduce(function (r, e) {
440
352
  return r + e.length;
441
353
  }, 0);
@@ -446,6 +358,8 @@ var PivotTableUI = function PivotTableUI(props) {
446
358
  var rowAttrs = rows.filter(function (e) {
447
359
  return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
448
360
  });
361
+
362
+ // ─── DnD Zones ────────────────────────────────────────────────────────────────
449
363
  var getZoneOfItem = function getZoneOfItem(id) {
450
364
  if (rowAttrs.includes(id)) return 'rows';
451
365
  if (colAttrs.includes(id)) return 'cols';
@@ -459,14 +373,14 @@ var PivotTableUI = function PivotTableUI(props) {
459
373
  return [];
460
374
  };
461
375
  var getUpdaterByZone = function getUpdaterByZone(zone) {
462
- if (zone === 'rows') return propUpdater('rows');
463
- 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
+ };
464
382
  if (zone === 'unused') return function (order) {
465
- return setState(function (s) {
466
- return _objectSpread(_objectSpread({}, s), {}, {
467
- unusedOrder: order
468
- });
469
- });
383
+ return actions.setUnusedOrder(order);
470
384
  };
471
385
  return function () {};
472
386
  };
@@ -515,8 +429,10 @@ var PivotTableUI = function PivotTableUI(props) {
515
429
  if (oldIndex !== newIndex) getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
516
430
  }
517
431
  };
432
+
433
+ // ─── Dropdowns y controles ────────────────────────────────────────────────────
518
434
  var isOpen = function isOpen(dropdown) {
519
- return state.openDropdown === dropdown;
435
+ return uiState.openDropdown === dropdown;
520
436
  };
521
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;
522
438
  var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
@@ -537,19 +453,25 @@ var PivotTableUI = function PivotTableUI(props) {
537
453
  next: 'key_a_to_z'
538
454
  }
539
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
+ };
540
463
  var sharedCellProps = {
541
- state: state,
464
+ state: combinedState,
542
465
  valueFilter: valueFilter,
543
466
  sorters: sorters,
544
467
  menuLimit: menuLimit,
545
- setValuesInFilter: setValuesInFilter,
546
- addValuesToFilter: addValuesToFilter,
468
+ setValuesInFilter: actions.setValuesInFilter,
469
+ addValuesToFilter: actions.addValuesToFilter,
547
470
  moveFilterBoxToTop: moveFilterBoxToTop,
548
- removeValuesFromFilter: removeValuesFromFilter
471
+ removeValuesFromFilter: actions.removeValuesFromFilter
549
472
  };
550
473
  var componentProps = {
551
- data: state.materializedInput,
552
- onChange: onChange,
474
+ data: pivotState.materializedInput,
553
475
  rows: rows,
554
476
  cols: cols,
555
477
  vals: vals,
@@ -569,12 +491,14 @@ var PivotTableUI = function PivotTableUI(props) {
569
491
  pageSize: pageSize,
570
492
  rowOrder: rowOrder,
571
493
  colOrder: colOrder,
572
- derivedAttributes: derivedAttributes
494
+ derivedAttributes: pivotProps.derivedAttributes,
495
+ cellPipeline: pivotProps.cellPipeline,
496
+ virtualization: pivotProps.virtualization
573
497
  };
574
498
  var renderFooter = function renderFooter() {
575
499
  var pivotData = new _Utilities.PivotData(componentProps);
576
500
  var totalPivotRows = pivotData.getRowKeys().length;
577
- var totalRecords = state.materializedInput.length;
501
+ var totalRecords = pivotState.materializedInput.length;
578
502
  var totalPages = Math.ceil(totalPivotRows / pageSize);
579
503
  return /*#__PURE__*/_react["default"].createElement("div", {
580
504
  className: "pvtFooter"
@@ -586,13 +510,13 @@ var PivotTableUI = function PivotTableUI(props) {
586
510
  className: "pvtButton",
587
511
  disabled: page <= 1,
588
512
  onClick: function onClick() {
589
- return propUpdater('page')(1);
513
+ return actions.updateProp('page', 1);
590
514
  }
591
515
  }, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
592
516
  className: "pvtButton",
593
517
  disabled: page <= 1,
594
518
  onClick: function onClick() {
595
- return propUpdater('page')(page - 1);
519
+ return actions.updateProp('page', page - 1);
596
520
  }
597
521
  }, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina ", /*#__PURE__*/_react["default"].createElement("input", {
598
522
  type: "number",
@@ -602,32 +526,26 @@ var PivotTableUI = function PivotTableUI(props) {
602
526
  max: totalPages,
603
527
  onChange: function onChange(e) {
604
528
  var val = parseInt(e.target.value, 10);
605
- if (val > 0 && val <= totalPages) propUpdater('page')(val);
529
+ if (val > 0 && val <= totalPages) actions.updateProp('page', val);
606
530
  }
607
531
  }), " de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
608
532
  className: "pvtButton",
609
533
  disabled: page >= totalPages,
610
534
  onClick: function onClick() {
611
- return propUpdater('page')(page + 1);
535
+ return actions.updateProp('page', page + 1);
612
536
  }
613
537
  }, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
614
538
  className: "pvtButton",
615
539
  disabled: page >= totalPages,
616
540
  onClick: function onClick() {
617
- return propUpdater('page')(totalPages);
541
+ return actions.updateProp('page', totalPages);
618
542
  }
619
543
  }, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
620
544
  className: "pvtPageSize",
621
545
  value: pageSize,
622
546
  onChange: function onChange(e) {
623
- sendPropUpdate({
624
- pageSize: {
625
- $set: parseInt(e.target.value, 10)
626
- },
627
- page: {
628
- $set: 1
629
- }
630
- });
547
+ actions.updateProp('pageSize', parseInt(e.target.value, 10));
548
+ actions.updateProp('page', 1);
631
549
  }
632
550
  }, [10, 20, 50, 100].map(function (n) {
633
551
  return /*#__PURE__*/_react["default"].createElement("option", {
@@ -643,10 +561,10 @@ var PivotTableUI = function PivotTableUI(props) {
643
561
  onDragOver: handleDragOver,
644
562
  onDragEnd: handleDragEnd
645
563
  }, /*#__PURE__*/_react["default"].createElement("table", {
646
- className: "pvtUi"
564
+ className: "pvtUi pvt-theme-".concat(props.theme || 'default', " pvt-size-").concat(size || 'lg')
647
565
  }, /*#__PURE__*/_react["default"].createElement("tbody", {
648
566
  onClick: function onClick() {
649
- return setState(function (s) {
567
+ return setUiState(function (s) {
650
568
  return _objectSpread(_objectSpread({}, s), {}, {
651
569
  openDropdown: false
652
570
  });
@@ -658,15 +576,17 @@ var PivotTableUI = function PivotTableUI(props) {
658
576
  current: actualRendererName,
659
577
  values: Object.keys(renderers),
660
578
  open: isOpen('renderer'),
661
- zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
579
+ zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
662
580
  toggle: function toggle() {
663
- return setState(function (s) {
581
+ return setUiState(function (s) {
664
582
  return _objectSpread(_objectSpread({}, s), {}, {
665
583
  openDropdown: isOpen('renderer') ? false : 'renderer'
666
584
  });
667
585
  });
668
586
  },
669
- setValue: propUpdater('rendererName')
587
+ setValue: function setValue(v) {
588
+ return actions.updateProp('rendererName', v);
589
+ }
670
590
  })), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
671
591
  id: "unused",
672
592
  items: unusedAttrs,
@@ -678,49 +598,49 @@ var PivotTableUI = function PivotTableUI(props) {
678
598
  current: aggregatorName,
679
599
  values: Object.keys(aggregators),
680
600
  open: isOpen('aggregators'),
681
- zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
601
+ zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
682
602
  toggle: function toggle() {
683
- return setState(function (s) {
603
+ return setUiState(function (s) {
684
604
  return _objectSpread(_objectSpread({}, s), {}, {
685
605
  openDropdown: isOpen('aggregators') ? false : 'aggregators'
686
606
  });
687
607
  });
688
608
  },
689
- setValue: propUpdater('aggregatorName')
609
+ setValue: function setValue(v) {
610
+ return actions.updateProp('aggregatorName', v);
611
+ }
690
612
  }), /*#__PURE__*/_react["default"].createElement("a", {
691
613
  role: "button",
692
614
  className: "pvtRowOrder",
693
615
  onClick: function onClick() {
694
- return propUpdater('rowOrder')(sortIcons[rowOrder].next);
616
+ return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
695
617
  }
696
618
  }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
697
619
  role: "button",
698
620
  className: "pvtColOrder",
699
621
  onClick: function onClick() {
700
- return propUpdater('colOrder')(sortIcons[colOrder].next);
622
+ return actions.updateProp('colOrder', sortIcons[colOrder].next);
701
623
  }
702
624
  }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
703
625
  return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
704
626
  key: i,
705
627
  current: vals[i],
706
- values: Object.keys(state.attrValues).filter(function (e) {
628
+ values: Object.keys(pivotState.attrValues).filter(function (e) {
707
629
  return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
708
630
  }),
709
631
  open: isOpen("val".concat(i)),
710
- zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
632
+ zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
711
633
  toggle: function toggle() {
712
- return setState(function (s) {
634
+ return setUiState(function (s) {
713
635
  return _objectSpread(_objectSpread({}, s), {}, {
714
636
  openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
715
637
  });
716
638
  });
717
639
  },
718
640
  setValue: function setValue(value) {
719
- return sendPropUpdate({
720
- vals: {
721
- $splice: [[i, 1, value]]
722
- }
723
- });
641
+ var newVals = _toConsumableArray(vals);
642
+ newVals[i] = value;
643
+ actions.updateProp('vals', newVals);
724
644
  }
725
645
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
726
646
  key: "br".concat(i)
@@ -743,64 +663,66 @@ var PivotTableUI = function PivotTableUI(props) {
743
663
  current: actualRendererName,
744
664
  values: Object.keys(renderers),
745
665
  open: isOpen('renderer'),
746
- zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
666
+ zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
747
667
  toggle: function toggle() {
748
- return setState(function (s) {
668
+ return setUiState(function (s) {
749
669
  return _objectSpread(_objectSpread({}, s), {}, {
750
670
  openDropdown: isOpen('renderer') ? false : 'renderer'
751
671
  });
752
672
  });
753
673
  },
754
- setValue: propUpdater('rendererName')
674
+ setValue: function setValue(v) {
675
+ return actions.updateProp('rendererName', v);
676
+ }
755
677
  })), /*#__PURE__*/_react["default"].createElement("td", {
756
678
  className: "pvtVals"
757
679
  }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
758
680
  current: aggregatorName,
759
681
  values: Object.keys(aggregators),
760
682
  open: isOpen('aggregators'),
761
- zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
683
+ zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
762
684
  toggle: function toggle() {
763
- return setState(function (s) {
685
+ return setUiState(function (s) {
764
686
  return _objectSpread(_objectSpread({}, s), {}, {
765
687
  openDropdown: isOpen('aggregators') ? false : 'aggregators'
766
688
  });
767
689
  });
768
690
  },
769
- setValue: propUpdater('aggregatorName')
691
+ setValue: function setValue(v) {
692
+ return actions.updateProp('aggregatorName', v);
693
+ }
770
694
  }), /*#__PURE__*/_react["default"].createElement("a", {
771
695
  role: "button",
772
696
  className: "pvtRowOrder",
773
697
  onClick: function onClick() {
774
- return propUpdater('rowOrder')(sortIcons[rowOrder].next);
698
+ return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
775
699
  }
776
700
  }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
777
701
  role: "button",
778
702
  className: "pvtColOrder",
779
703
  onClick: function onClick() {
780
- return propUpdater('colOrder')(sortIcons[colOrder].next);
704
+ return actions.updateProp('colOrder', sortIcons[colOrder].next);
781
705
  }
782
706
  }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
783
707
  return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
784
708
  key: i,
785
709
  current: vals[i],
786
- values: Object.keys(state.attrValues).filter(function (e) {
710
+ values: Object.keys(pivotState.attrValues).filter(function (e) {
787
711
  return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
788
712
  }),
789
713
  open: isOpen("val".concat(i)),
790
- zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
714
+ zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
791
715
  toggle: function toggle() {
792
- return setState(function (s) {
716
+ return setUiState(function (s) {
793
717
  return _objectSpread(_objectSpread({}, s), {}, {
794
718
  openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
795
719
  });
796
720
  });
797
721
  },
798
722
  setValue: function setValue(value) {
799
- return sendPropUpdate({
800
- vals: {
801
- $splice: [[i, 1, value]]
802
- }
803
- });
723
+ var newVals = _toConsumableArray(vals);
724
+ newVals[i] = value;
725
+ actions.updateProp('vals', newVals);
804
726
  }
805
727
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
806
728
  key: "br".concat(i)
@@ -840,7 +762,8 @@ PivotTableUI.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
840
762
  unusedOrientationCutoff: _propTypes["default"].number,
841
763
  menuLimit: _propTypes["default"].number,
842
764
  rendererName: _propTypes["default"].string,
843
- renderers: _propTypes["default"].objectOf(_propTypes["default"].func)
765
+ renderers: _propTypes["default"].objectOf(_propTypes["default"].func),
766
+ size: _propTypes["default"].oneOf(['sm', 'md', 'lg'])
844
767
  });
845
768
  PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
846
769
  onChange: function onChange() {},