react-pivottable-plus 1.0.14 → 1.0.18

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 (59) hide show
  1. package/README.md +2 -0
  2. package/dist/PivotTableUI.js +147 -213
  3. package/dist/PivotTableUI.js.map +1 -1
  4. package/dist/TableRenderers.js +273 -49
  5. package/dist/TableRenderers.js.map +1 -1
  6. package/dist/core/CellPipeline.js +167 -0
  7. package/dist/core/CellPipeline.js.map +1 -0
  8. package/dist/core/ColumnEngine.js +299 -0
  9. package/dist/core/ColumnEngine.js.map +1 -0
  10. package/dist/core/EventBus.js +109 -0
  11. package/dist/core/EventBus.js.map +1 -0
  12. package/dist/core/ModuleRegistry.js +140 -0
  13. package/dist/core/ModuleRegistry.js.map +1 -0
  14. package/dist/core/PivotCore.js +254 -0
  15. package/dist/core/PivotCore.js.map +1 -0
  16. package/dist/core/PivotEngine.js +151 -0
  17. package/dist/core/PivotEngine.js.map +1 -0
  18. package/dist/core/StateManager.js +142 -0
  19. package/dist/core/StateManager.js.map +1 -0
  20. package/dist/core/VirtualScroller.js +138 -0
  21. package/dist/core/VirtualScroller.js.map +1 -0
  22. package/dist/core/api/ColumnApi.js +162 -0
  23. package/dist/core/api/ColumnApi.js.map +1 -0
  24. package/dist/core/api/GridApi.js +208 -0
  25. package/dist/core/api/GridApi.js.map +1 -0
  26. package/dist/core/index.js +89 -0
  27. package/dist/core/index.js.map +1 -0
  28. package/dist/core/rowModels/ClientSideRowModel.js +177 -0
  29. package/dist/core/rowModels/ClientSideRowModel.js.map +1 -0
  30. package/dist/core/rowModels/index.js +13 -0
  31. package/dist/core/rowModels/index.js.map +1 -0
  32. package/dist/hooks/useColumnResize.js +112 -0
  33. package/dist/hooks/useColumnResize.js.map +1 -0
  34. package/dist/hooks/usePivot.js +68 -155
  35. package/dist/hooks/usePivot.js.map +1 -1
  36. package/dist/modules/FilterModule.js +156 -0
  37. package/dist/modules/FilterModule.js.map +1 -0
  38. package/dist/modules/PaginationModule.js +115 -0
  39. package/dist/modules/PaginationModule.js.map +1 -0
  40. package/dist/modules/SortModule.js +88 -0
  41. package/dist/modules/SortModule.js.map +1 -0
  42. package/dist/modules/ThemeModule.js +83 -0
  43. package/dist/modules/ThemeModule.js.map +1 -0
  44. package/dist/modules/VirtualizationModule.js +89 -0
  45. package/dist/modules/VirtualizationModule.js.map +1 -0
  46. package/dist/modules/index.js +41 -0
  47. package/dist/modules/index.js.map +1 -0
  48. package/dist/react/index.js +13 -0
  49. package/dist/react/index.js.map +1 -0
  50. package/dist/react/usePivotGrid.js +116 -0
  51. package/dist/react/usePivotGrid.js.map +1 -0
  52. package/dist/renderers/RadixUI.js +1 -1
  53. package/dist/renderers/RadixUI.js.map +1 -1
  54. package/dist/renderers/ShadcnDashboardUI.js +1 -1
  55. package/dist/renderers/ShadcnDashboardUI.js.map +1 -1
  56. package/dist/renderers/TailwindUI.js +1 -1
  57. package/dist/renderers/TailwindUI.js.map +1 -1
  58. package/package.json +8 -5
  59. package/pivottable.css +69 -12
package/README.md CHANGED
@@ -34,6 +34,8 @@ npm install --save react-pivottable-plus react react-dom
34
34
  Gracias a las últimas optimizaciones, implementar la tabla dinámica es más sencillo que nunca. La mayoría de las propiedades ya tienen valores por defecto inteligentes.
35
35
 
36
36
  ```jsx
37
+ "use client";
38
+
37
39
  import React, { useState } from 'react';
38
40
  import PivotTableUI from 'react-pivottable-plus'; // Importación directa
39
41
  import 'react-pivottable-plus/pivottable.css';
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
 
3
4
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
5
  Object.defineProperty(exports, "__esModule", {
@@ -7,10 +8,10 @@ Object.defineProperty(exports, "__esModule", {
7
8
  exports["default"] = exports.Dropdown = exports.DraggableAttribute = void 0;
8
9
  var _react = _interopRequireWildcard(require("react"));
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
11
11
  var _Utilities = require("./Utilities");
12
12
  var _PivotTable = _interopRequireDefault(require("./PivotTable"));
13
13
  var _TableRenderers = _interopRequireDefault(require("./TableRenderers"));
14
+ var _usePivot2 = require("./hooks/usePivot");
14
15
  var _reactDraggable = _interopRequireDefault(require("react-draggable"));
15
16
  var _core = require("@dnd-kit/core");
16
17
  var _sortable = require("@dnd-kit/sortable");
@@ -274,170 +275,85 @@ var DnDCell = function DnDCell(_ref4) {
274
275
  };
275
276
  var PivotTableUI = function PivotTableUI(props) {
276
277
  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;
278
+ // ─── Headless Core: toda la lógica de datos y props fluye a través del Core ───
279
+ var _usePivot = (0, _usePivot2.usePivot)(props),
280
+ pivotProps = _usePivot.props,
281
+ pivotState = _usePivot.state,
282
+ actions = _usePivot.actions;
283
+
284
+ // ─── Estado local solo para UI (no pertenece al Core) ─────────────────────────
323
285
  var _useState5 = (0, _react.useState)({
324
- unusedOrder: [],
325
286
  zIndices: {},
326
287
  maxZIndex: 1000,
327
- openDropdown: false,
328
- attrValues: {},
329
- materializedInput: [],
330
- data: null
288
+ openDropdown: false
331
289
  }),
332
290
  _useState6 = _slicedToArray(_useState5, 2),
333
- state = _useState6[0],
334
- setState = _useState6[1];
291
+ uiState = _useState6[0],
292
+ setUiState = _useState6[1];
335
293
  var _useState7 = (0, _react.useState)(null),
336
294
  _useState8 = _slicedToArray(_useState7, 2),
337
295
  activeId = _useState8[0],
338
296
  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]);
297
+
298
+ // ─── Helpers de UI local ──────────────────────────────────────────────────────
430
299
  var moveFilterBoxToTop = (0, _react.useCallback)(function (attribute) {
431
- setState(function (s) {
300
+ setUiState(function (s) {
432
301
  return _objectSpread(_objectSpread({}, s), {}, {
433
302
  maxZIndex: s.maxZIndex + 1,
434
303
  zIndices: _objectSpread(_objectSpread({}, s.zIndices), {}, _defineProperty({}, attribute, s.maxZIndex + 1))
435
304
  });
436
305
  });
437
306
  }, []);
438
- var unusedAttrs = Object.keys(state.attrValues).filter(function (e) {
307
+
308
+ // ─── Derivados desde el Core ──────────────────────────────────────────────────
309
+ var _pivotProps$rows = pivotProps.rows,
310
+ rows = _pivotProps$rows === void 0 ? [] : _pivotProps$rows,
311
+ _pivotProps$cols = pivotProps.cols,
312
+ cols = _pivotProps$cols === void 0 ? [] : _pivotProps$cols,
313
+ _pivotProps$vals = pivotProps.vals,
314
+ vals = _pivotProps$vals === void 0 ? [] : _pivotProps$vals,
315
+ _pivotProps$aggregato = pivotProps.aggregatorName,
316
+ aggregatorName = _pivotProps$aggregato === void 0 ? 'Count' : _pivotProps$aggregato,
317
+ _pivotProps$aggregato2 = pivotProps.aggregators,
318
+ aggregators = _pivotProps$aggregato2 === void 0 ? _Utilities.aggregators : _pivotProps$aggregato2,
319
+ _pivotProps$rendererN = pivotProps.rendererName,
320
+ rendererName = _pivotProps$rendererN === void 0 ? 'Table' : _pivotProps$rendererN,
321
+ _pivotProps$renderers = pivotProps.renderers,
322
+ renderers = _pivotProps$renderers === void 0 ? _TableRenderers["default"] : _pivotProps$renderers,
323
+ _pivotProps$valueFilt = pivotProps.valueFilter,
324
+ valueFilter = _pivotProps$valueFilt === void 0 ? {} : _pivotProps$valueFilt,
325
+ _pivotProps$sorters = pivotProps.sorters,
326
+ sorters = _pivotProps$sorters === void 0 ? {} : _pivotProps$sorters,
327
+ _pivotProps$menuLimit = pivotProps.menuLimit,
328
+ menuLimit = _pivotProps$menuLimit === void 0 ? 500 : _pivotProps$menuLimit,
329
+ _pivotProps$unusedOri = pivotProps.unusedOrientationCutoff,
330
+ unusedOrientationCutoff = _pivotProps$unusedOri === void 0 ? 85 : _pivotProps$unusedOri,
331
+ _pivotProps$hiddenAtt = pivotProps.hiddenAttributes,
332
+ hiddenAttributes = _pivotProps$hiddenAtt === void 0 ? [] : _pivotProps$hiddenAtt,
333
+ _pivotProps$hiddenFro = pivotProps.hiddenFromAggregators,
334
+ hiddenFromAggregators = _pivotProps$hiddenFro === void 0 ? [] : _pivotProps$hiddenFro,
335
+ _pivotProps$hiddenFro2 = pivotProps.hiddenFromDragDrop,
336
+ hiddenFromDragDrop = _pivotProps$hiddenFro2 === void 0 ? [] : _pivotProps$hiddenFro2,
337
+ _pivotProps$paginatio = pivotProps.pagination,
338
+ pagination = _pivotProps$paginatio === void 0 ? false : _pivotProps$paginatio,
339
+ _pivotProps$page = pivotProps.page,
340
+ page = _pivotProps$page === void 0 ? 1 : _pivotProps$page,
341
+ _pivotProps$pageSize = pivotProps.pageSize,
342
+ pageSize = _pivotProps$pageSize === void 0 ? 20 : _pivotProps$pageSize,
343
+ _pivotProps$rowOrder = pivotProps.rowOrder,
344
+ rowOrder = _pivotProps$rowOrder === void 0 ? 'key_a_to_z' : _pivotProps$rowOrder,
345
+ _pivotProps$colOrder = pivotProps.colOrder,
346
+ colOrder = _pivotProps$colOrder === void 0 ? 'key_a_to_z' : _pivotProps$colOrder,
347
+ _pivotProps$size = pivotProps.size,
348
+ size = _pivotProps$size === void 0 ? 'lg' : _pivotProps$size,
349
+ _pivotProps$columnRes = pivotProps.columnResizing,
350
+ columnResizing = _pivotProps$columnRes === void 0 ? false : _pivotProps$columnRes,
351
+ _pivotProps$columnWid = pivotProps.columnWidths,
352
+ columnWidths = _pivotProps$columnWid === void 0 ? {} : _pivotProps$columnWid,
353
+ onColumnWidthChange = pivotProps.onColumnWidthChange;
354
+ var unusedAttrs = Object.keys(pivotState.attrValues).filter(function (e) {
439
355
  return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
440
- }).sort((0, _Utilities.sortAs)(state.unusedOrder));
356
+ }).sort((0, _Utilities.sortAs)(pivotState.unusedOrder || []));
441
357
  var unusedLength = unusedAttrs.reduce(function (r, e) {
442
358
  return r + e.length;
443
359
  }, 0);
@@ -448,6 +364,8 @@ var PivotTableUI = function PivotTableUI(props) {
448
364
  var rowAttrs = rows.filter(function (e) {
449
365
  return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
450
366
  });
367
+
368
+ // ─── DnD Zones ────────────────────────────────────────────────────────────────
451
369
  var getZoneOfItem = function getZoneOfItem(id) {
452
370
  if (rowAttrs.includes(id)) return 'rows';
453
371
  if (colAttrs.includes(id)) return 'cols';
@@ -461,14 +379,14 @@ var PivotTableUI = function PivotTableUI(props) {
461
379
  return [];
462
380
  };
463
381
  var getUpdaterByZone = function getUpdaterByZone(zone) {
464
- if (zone === 'rows') return propUpdater('rows');
465
- if (zone === 'cols') return propUpdater('cols');
382
+ if (zone === 'rows') return function (value) {
383
+ return actions.updateProp('rows', value);
384
+ };
385
+ if (zone === 'cols') return function (value) {
386
+ return actions.updateProp('cols', value);
387
+ };
466
388
  if (zone === 'unused') return function (order) {
467
- return setState(function (s) {
468
- return _objectSpread(_objectSpread({}, s), {}, {
469
- unusedOrder: order
470
- });
471
- });
389
+ return actions.setUnusedOrder(order);
472
390
  };
473
391
  return function () {};
474
392
  };
@@ -517,8 +435,10 @@ var PivotTableUI = function PivotTableUI(props) {
517
435
  if (oldIndex !== newIndex) getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
518
436
  }
519
437
  };
438
+
439
+ // ─── Dropdowns y controles ────────────────────────────────────────────────────
520
440
  var isOpen = function isOpen(dropdown) {
521
- return state.openDropdown === dropdown;
441
+ return uiState.openDropdown === dropdown;
522
442
  };
523
443
  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
444
  var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
@@ -539,19 +459,25 @@ var PivotTableUI = function PivotTableUI(props) {
539
459
  next: 'key_a_to_z'
540
460
  }
541
461
  };
462
+
463
+ // Estado combinado para DnDCell (necesita zIndices del UI local + attrValues del Core)
464
+ var combinedState = {
465
+ attrValues: pivotState.attrValues,
466
+ zIndices: uiState.zIndices,
467
+ maxZIndex: uiState.maxZIndex
468
+ };
542
469
  var sharedCellProps = {
543
- state: state,
470
+ state: combinedState,
544
471
  valueFilter: valueFilter,
545
472
  sorters: sorters,
546
473
  menuLimit: menuLimit,
547
- setValuesInFilter: setValuesInFilter,
548
- addValuesToFilter: addValuesToFilter,
474
+ setValuesInFilter: actions.setValuesInFilter,
475
+ addValuesToFilter: actions.addValuesToFilter,
549
476
  moveFilterBoxToTop: moveFilterBoxToTop,
550
- removeValuesFromFilter: removeValuesFromFilter
477
+ removeValuesFromFilter: actions.removeValuesFromFilter
551
478
  };
552
479
  var componentProps = {
553
- data: state.materializedInput,
554
- onChange: onChange,
480
+ data: pivotState.materializedInput,
555
481
  rows: rows,
556
482
  cols: cols,
557
483
  vals: vals,
@@ -571,12 +497,17 @@ var PivotTableUI = function PivotTableUI(props) {
571
497
  pageSize: pageSize,
572
498
  rowOrder: rowOrder,
573
499
  colOrder: colOrder,
574
- derivedAttributes: derivedAttributes
500
+ derivedAttributes: pivotProps.derivedAttributes,
501
+ cellPipeline: pivotProps.cellPipeline,
502
+ virtualization: pivotProps.virtualization,
503
+ columnResizing: columnResizing,
504
+ columnWidths: columnWidths,
505
+ onColumnWidthChange: onColumnWidthChange
575
506
  };
576
507
  var renderFooter = function renderFooter() {
577
508
  var pivotData = new _Utilities.PivotData(componentProps);
578
509
  var totalPivotRows = pivotData.getRowKeys().length;
579
- var totalRecords = state.materializedInput.length;
510
+ var totalRecords = pivotState.materializedInput.length;
580
511
  var totalPages = Math.ceil(totalPivotRows / pageSize);
581
512
  return /*#__PURE__*/_react["default"].createElement("div", {
582
513
  className: "pvtFooter"
@@ -588,13 +519,13 @@ var PivotTableUI = function PivotTableUI(props) {
588
519
  className: "pvtButton",
589
520
  disabled: page <= 1,
590
521
  onClick: function onClick() {
591
- return propUpdater('page')(1);
522
+ return actions.updateProp('page', 1);
592
523
  }
593
524
  }, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
594
525
  className: "pvtButton",
595
526
  disabled: page <= 1,
596
527
  onClick: function onClick() {
597
- return propUpdater('page')(page - 1);
528
+ return actions.updateProp('page', page - 1);
598
529
  }
599
530
  }, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina ", /*#__PURE__*/_react["default"].createElement("input", {
600
531
  type: "number",
@@ -604,32 +535,26 @@ var PivotTableUI = function PivotTableUI(props) {
604
535
  max: totalPages,
605
536
  onChange: function onChange(e) {
606
537
  var val = parseInt(e.target.value, 10);
607
- if (val > 0 && val <= totalPages) propUpdater('page')(val);
538
+ if (val > 0 && val <= totalPages) actions.updateProp('page', val);
608
539
  }
609
540
  }), " de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
610
541
  className: "pvtButton",
611
542
  disabled: page >= totalPages,
612
543
  onClick: function onClick() {
613
- return propUpdater('page')(page + 1);
544
+ return actions.updateProp('page', page + 1);
614
545
  }
615
546
  }, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
616
547
  className: "pvtButton",
617
548
  disabled: page >= totalPages,
618
549
  onClick: function onClick() {
619
- return propUpdater('page')(totalPages);
550
+ return actions.updateProp('page', totalPages);
620
551
  }
621
552
  }, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
622
553
  className: "pvtPageSize",
623
554
  value: pageSize,
624
555
  onChange: function onChange(e) {
625
- sendPropUpdate({
626
- pageSize: {
627
- $set: parseInt(e.target.value, 10)
628
- },
629
- page: {
630
- $set: 1
631
- }
632
- });
556
+ actions.updateProp('pageSize', parseInt(e.target.value, 10));
557
+ actions.updateProp('page', 1);
633
558
  }
634
559
  }, [10, 20, 50, 100].map(function (n) {
635
560
  return /*#__PURE__*/_react["default"].createElement("option", {
@@ -645,10 +570,10 @@ var PivotTableUI = function PivotTableUI(props) {
645
570
  onDragOver: handleDragOver,
646
571
  onDragEnd: handleDragEnd
647
572
  }, /*#__PURE__*/_react["default"].createElement("table", {
648
- className: "pvtUi pvtSize-".concat(size)
573
+ className: "pvtUi pvt-theme-".concat(props.theme || 'default', " pvt-size-").concat(size || 'lg')
649
574
  }, /*#__PURE__*/_react["default"].createElement("tbody", {
650
575
  onClick: function onClick() {
651
- return setState(function (s) {
576
+ return setUiState(function (s) {
652
577
  return _objectSpread(_objectSpread({}, s), {}, {
653
578
  openDropdown: false
654
579
  });
@@ -660,15 +585,17 @@ var PivotTableUI = function PivotTableUI(props) {
660
585
  current: actualRendererName,
661
586
  values: Object.keys(renderers),
662
587
  open: isOpen('renderer'),
663
- zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
588
+ zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
664
589
  toggle: function toggle() {
665
- return setState(function (s) {
590
+ return setUiState(function (s) {
666
591
  return _objectSpread(_objectSpread({}, s), {}, {
667
592
  openDropdown: isOpen('renderer') ? false : 'renderer'
668
593
  });
669
594
  });
670
595
  },
671
- setValue: propUpdater('rendererName')
596
+ setValue: function setValue(v) {
597
+ return actions.updateProp('rendererName', v);
598
+ }
672
599
  })), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
673
600
  id: "unused",
674
601
  items: unusedAttrs,
@@ -680,49 +607,49 @@ var PivotTableUI = function PivotTableUI(props) {
680
607
  current: aggregatorName,
681
608
  values: Object.keys(aggregators),
682
609
  open: isOpen('aggregators'),
683
- zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
610
+ zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
684
611
  toggle: function toggle() {
685
- return setState(function (s) {
612
+ return setUiState(function (s) {
686
613
  return _objectSpread(_objectSpread({}, s), {}, {
687
614
  openDropdown: isOpen('aggregators') ? false : 'aggregators'
688
615
  });
689
616
  });
690
617
  },
691
- setValue: propUpdater('aggregatorName')
618
+ setValue: function setValue(v) {
619
+ return actions.updateProp('aggregatorName', v);
620
+ }
692
621
  }), /*#__PURE__*/_react["default"].createElement("a", {
693
622
  role: "button",
694
623
  className: "pvtRowOrder",
695
624
  onClick: function onClick() {
696
- return propUpdater('rowOrder')(sortIcons[rowOrder].next);
625
+ return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
697
626
  }
698
627
  }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
699
628
  role: "button",
700
629
  className: "pvtColOrder",
701
630
  onClick: function onClick() {
702
- return propUpdater('colOrder')(sortIcons[colOrder].next);
631
+ return actions.updateProp('colOrder', sortIcons[colOrder].next);
703
632
  }
704
633
  }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
705
634
  return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
706
635
  key: i,
707
636
  current: vals[i],
708
- values: Object.keys(state.attrValues).filter(function (e) {
637
+ values: Object.keys(pivotState.attrValues).filter(function (e) {
709
638
  return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
710
639
  }),
711
640
  open: isOpen("val".concat(i)),
712
- zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
641
+ zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
713
642
  toggle: function toggle() {
714
- return setState(function (s) {
643
+ return setUiState(function (s) {
715
644
  return _objectSpread(_objectSpread({}, s), {}, {
716
645
  openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
717
646
  });
718
647
  });
719
648
  },
720
649
  setValue: function setValue(value) {
721
- return sendPropUpdate({
722
- vals: {
723
- $splice: [[i, 1, value]]
724
- }
725
- });
650
+ var newVals = _toConsumableArray(vals);
651
+ newVals[i] = value;
652
+ actions.updateProp('vals', newVals);
726
653
  }
727
654
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
728
655
  key: "br".concat(i)
@@ -745,64 +672,66 @@ var PivotTableUI = function PivotTableUI(props) {
745
672
  current: actualRendererName,
746
673
  values: Object.keys(renderers),
747
674
  open: isOpen('renderer'),
748
- zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
675
+ zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
749
676
  toggle: function toggle() {
750
- return setState(function (s) {
677
+ return setUiState(function (s) {
751
678
  return _objectSpread(_objectSpread({}, s), {}, {
752
679
  openDropdown: isOpen('renderer') ? false : 'renderer'
753
680
  });
754
681
  });
755
682
  },
756
- setValue: propUpdater('rendererName')
683
+ setValue: function setValue(v) {
684
+ return actions.updateProp('rendererName', v);
685
+ }
757
686
  })), /*#__PURE__*/_react["default"].createElement("td", {
758
687
  className: "pvtVals"
759
688
  }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
760
689
  current: aggregatorName,
761
690
  values: Object.keys(aggregators),
762
691
  open: isOpen('aggregators'),
763
- zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
692
+ zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
764
693
  toggle: function toggle() {
765
- return setState(function (s) {
694
+ return setUiState(function (s) {
766
695
  return _objectSpread(_objectSpread({}, s), {}, {
767
696
  openDropdown: isOpen('aggregators') ? false : 'aggregators'
768
697
  });
769
698
  });
770
699
  },
771
- setValue: propUpdater('aggregatorName')
700
+ setValue: function setValue(v) {
701
+ return actions.updateProp('aggregatorName', v);
702
+ }
772
703
  }), /*#__PURE__*/_react["default"].createElement("a", {
773
704
  role: "button",
774
705
  className: "pvtRowOrder",
775
706
  onClick: function onClick() {
776
- return propUpdater('rowOrder')(sortIcons[rowOrder].next);
707
+ return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
777
708
  }
778
709
  }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
779
710
  role: "button",
780
711
  className: "pvtColOrder",
781
712
  onClick: function onClick() {
782
- return propUpdater('colOrder')(sortIcons[colOrder].next);
713
+ return actions.updateProp('colOrder', sortIcons[colOrder].next);
783
714
  }
784
715
  }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
785
716
  return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
786
717
  key: i,
787
718
  current: vals[i],
788
- values: Object.keys(state.attrValues).filter(function (e) {
719
+ values: Object.keys(pivotState.attrValues).filter(function (e) {
789
720
  return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
790
721
  }),
791
722
  open: isOpen("val".concat(i)),
792
- zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
723
+ zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
793
724
  toggle: function toggle() {
794
- return setState(function (s) {
725
+ return setUiState(function (s) {
795
726
  return _objectSpread(_objectSpread({}, s), {}, {
796
727
  openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
797
728
  });
798
729
  });
799
730
  },
800
731
  setValue: function setValue(value) {
801
- return sendPropUpdate({
802
- vals: {
803
- $splice: [[i, 1, value]]
804
- }
805
- });
732
+ var newVals = _toConsumableArray(vals);
733
+ newVals[i] = value;
734
+ actions.updateProp('vals', newVals);
806
735
  }
807
736
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
808
737
  key: "br".concat(i)
@@ -843,7 +772,10 @@ PivotTableUI.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
843
772
  menuLimit: _propTypes["default"].number,
844
773
  rendererName: _propTypes["default"].string,
845
774
  renderers: _propTypes["default"].objectOf(_propTypes["default"].func),
846
- size: _propTypes["default"].oneOf(['sm', 'md', 'lg'])
775
+ size: _propTypes["default"].oneOf(['sm', 'md', 'lg']),
776
+ columnResizing: _propTypes["default"].bool,
777
+ columnWidths: _propTypes["default"].object,
778
+ onColumnWidthChange: _propTypes["default"].func
847
779
  });
848
780
  PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
849
781
  onChange: function onChange() {},
@@ -853,7 +785,9 @@ PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps,
853
785
  unusedOrientationCutoff: 85,
854
786
  menuLimit: 500,
855
787
  rendererName: 'Table',
856
- renderers: _TableRenderers["default"]
788
+ renderers: _TableRenderers["default"],
789
+ columnResizing: false,
790
+ columnWidths: {}
857
791
  });
858
792
  var _default = exports["default"] = PivotTableUI;
859
793
  //# sourceMappingURL=PivotTableUI.js.map