@ayd-ab/react-pivottable 0.12.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.
@@ -0,0 +1,722 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Dropdown = exports.DraggableAttribute = undefined;
7
+
8
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
9
+
10
+ var _react = require('react');
11
+
12
+ var _react2 = _interopRequireDefault(_react);
13
+
14
+ var _propTypes = require('prop-types');
15
+
16
+ var _propTypes2 = _interopRequireDefault(_propTypes);
17
+
18
+ var _immutabilityHelper = require('immutability-helper');
19
+
20
+ var _immutabilityHelper2 = _interopRequireDefault(_immutabilityHelper);
21
+
22
+ var _Utilities = require('./Utilities');
23
+
24
+ var _PivotTable = require('./PivotTable');
25
+
26
+ var _PivotTable2 = _interopRequireDefault(_PivotTable);
27
+
28
+ var _reactSortablejs = require('react-sortablejs');
29
+
30
+ var _reactSortablejs2 = _interopRequireDefault(_reactSortablejs);
31
+
32
+ var _reactDraggable = require('react-draggable');
33
+
34
+ var _reactDraggable2 = _interopRequireDefault(_reactDraggable);
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+
38
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
+
40
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
41
+
42
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
43
+
44
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
45
+
46
+ /* eslint-disable react/prop-types */
47
+ // eslint can't see inherited propTypes!
48
+
49
+ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component) {
50
+ _inherits(DraggableAttribute, _React$Component);
51
+
52
+ function DraggableAttribute(props) {
53
+ _classCallCheck(this, DraggableAttribute);
54
+
55
+ var _this = _possibleConstructorReturn(this, (DraggableAttribute.__proto__ || Object.getPrototypeOf(DraggableAttribute)).call(this, props));
56
+
57
+ _this.state = { open: false, filterText: '' };
58
+ _this.nodeRef = _react2.default.createRef();
59
+ return _this;
60
+ }
61
+
62
+ _createClass(DraggableAttribute, [{
63
+ key: 'toggleValue',
64
+ value: function toggleValue(value) {
65
+ if (value in this.props.valueFilter) {
66
+ this.props.removeValuesFromFilter(this.props.name, [value]);
67
+ } else {
68
+ this.props.addValuesToFilter(this.props.name, [value]);
69
+ }
70
+ }
71
+ }, {
72
+ key: 'matchesFilter',
73
+ value: function matchesFilter(x) {
74
+ return x.toLowerCase().trim().includes(this.state.filterText.toLowerCase().trim());
75
+ }
76
+ }, {
77
+ key: 'selectOnly',
78
+ value: function selectOnly(e, value) {
79
+ e.stopPropagation();
80
+ this.props.setValuesInFilter(this.props.name, Object.keys(this.props.attrValues).filter(function (y) {
81
+ return y !== value;
82
+ }));
83
+ }
84
+ }, {
85
+ key: 'getFilterBox',
86
+ value: function getFilterBox() {
87
+ var _this2 = this;
88
+
89
+ var showMenu = Object.keys(this.props.attrValues).length < this.props.menuLimit;
90
+
91
+ var values = Object.keys(this.props.attrValues);
92
+ var shown = values.filter(this.matchesFilter.bind(this)).sort(this.props.sorter);
93
+
94
+ return _react2.default.createElement(
95
+ _reactDraggable2.default,
96
+ { handle: '.pvtDragHandle', nodeRef: this.nodeRef },
97
+ _react2.default.createElement(
98
+ 'div',
99
+ {
100
+ ref: this.nodeRef,
101
+ className: 'pvtFilterBox',
102
+ style: {
103
+ display: 'block',
104
+ cursor: 'initial',
105
+ zIndex: this.props.zIndex
106
+ },
107
+ onClick: function onClick() {
108
+ return _this2.props.moveFilterBoxToTop(_this2.props.name);
109
+ }
110
+ },
111
+ _react2.default.createElement(
112
+ 'a',
113
+ { onClick: function onClick() {
114
+ return _this2.setState({ open: false });
115
+ }, className: 'pvtCloseX' },
116
+ '\xD7'
117
+ ),
118
+ _react2.default.createElement(
119
+ 'span',
120
+ { className: 'pvtDragHandle' },
121
+ '\u2630'
122
+ ),
123
+ _react2.default.createElement(
124
+ 'h4',
125
+ null,
126
+ this.props.name
127
+ ),
128
+ showMenu || _react2.default.createElement(
129
+ 'p',
130
+ null,
131
+ '(too many values to show)'
132
+ ),
133
+ showMenu && _react2.default.createElement(
134
+ 'p',
135
+ null,
136
+ _react2.default.createElement('input', {
137
+ type: 'text',
138
+ placeholder: 'Filter values',
139
+ className: 'pvtSearch',
140
+ value: this.state.filterText,
141
+ onChange: function onChange(e) {
142
+ return _this2.setState({
143
+ filterText: e.target.value
144
+ });
145
+ }
146
+ }),
147
+ _react2.default.createElement('br', null),
148
+ _react2.default.createElement(
149
+ 'a',
150
+ {
151
+ role: 'button',
152
+ className: 'pvtButton',
153
+ onClick: function onClick() {
154
+ return _this2.props.removeValuesFromFilter(_this2.props.name, Object.keys(_this2.props.attrValues).filter(_this2.matchesFilter.bind(_this2)));
155
+ }
156
+ },
157
+ 'Select ',
158
+ values.length === shown.length ? 'All' : shown.length
159
+ ),
160
+ ' ',
161
+ _react2.default.createElement(
162
+ 'a',
163
+ {
164
+ role: 'button',
165
+ className: 'pvtButton',
166
+ onClick: function onClick() {
167
+ return _this2.props.addValuesToFilter(_this2.props.name, Object.keys(_this2.props.attrValues).filter(_this2.matchesFilter.bind(_this2)));
168
+ }
169
+ },
170
+ 'Deselect ',
171
+ values.length === shown.length ? 'All' : shown.length
172
+ )
173
+ ),
174
+ showMenu && _react2.default.createElement(
175
+ 'div',
176
+ { className: 'pvtCheckContainer' },
177
+ shown.map(function (x) {
178
+ return _react2.default.createElement(
179
+ 'p',
180
+ {
181
+ key: x,
182
+ onClick: function onClick() {
183
+ return _this2.toggleValue(x);
184
+ },
185
+ className: x in _this2.props.valueFilter ? '' : 'selected'
186
+ },
187
+ _react2.default.createElement(
188
+ 'a',
189
+ { className: 'pvtOnly', onClick: function onClick(e) {
190
+ return _this2.selectOnly(e, x);
191
+ } },
192
+ 'only'
193
+ ),
194
+ _react2.default.createElement(
195
+ 'a',
196
+ { className: 'pvtOnlySpacer' },
197
+ '\xA0'
198
+ ),
199
+ x === '' ? _react2.default.createElement(
200
+ 'em',
201
+ null,
202
+ 'null'
203
+ ) : x
204
+ );
205
+ })
206
+ )
207
+ )
208
+ );
209
+ }
210
+ }, {
211
+ key: 'toggleFilterBox',
212
+ value: function toggleFilterBox() {
213
+ this.setState({ open: !this.state.open });
214
+ this.props.moveFilterBoxToTop(this.props.name);
215
+ }
216
+ }, {
217
+ key: 'render',
218
+ value: function render() {
219
+ var filtered = Object.keys(this.props.valueFilter).length !== 0 ? 'pvtFilteredAttribute' : '';
220
+ return _react2.default.createElement(
221
+ 'li',
222
+ { 'data-id': this.props.name },
223
+ _react2.default.createElement(
224
+ 'span',
225
+ { className: 'pvtAttr ' + filtered },
226
+ this.props.name,
227
+ _react2.default.createElement(
228
+ 'span',
229
+ {
230
+ className: 'pvtTriangle',
231
+ onClick: this.toggleFilterBox.bind(this)
232
+ },
233
+ ' ',
234
+ '\u25BE'
235
+ )
236
+ ),
237
+ this.state.open ? this.getFilterBox() : null
238
+ );
239
+ }
240
+ }]);
241
+
242
+ return DraggableAttribute;
243
+ }(_react2.default.Component);
244
+
245
+ DraggableAttribute.defaultProps = {
246
+ valueFilter: {}
247
+ };
248
+
249
+ DraggableAttribute.propTypes = {
250
+ name: _propTypes2.default.string.isRequired,
251
+ addValuesToFilter: _propTypes2.default.func.isRequired,
252
+ removeValuesFromFilter: _propTypes2.default.func.isRequired,
253
+ attrValues: _propTypes2.default.objectOf(_propTypes2.default.number).isRequired,
254
+ valueFilter: _propTypes2.default.objectOf(_propTypes2.default.bool),
255
+ moveFilterBoxToTop: _propTypes2.default.func.isRequired,
256
+ sorter: _propTypes2.default.func.isRequired,
257
+ menuLimit: _propTypes2.default.number,
258
+ zIndex: _propTypes2.default.number
259
+ };
260
+
261
+ var Dropdown = exports.Dropdown = function (_React$PureComponent) {
262
+ _inherits(Dropdown, _React$PureComponent);
263
+
264
+ function Dropdown() {
265
+ _classCallCheck(this, Dropdown);
266
+
267
+ return _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).apply(this, arguments));
268
+ }
269
+
270
+ _createClass(Dropdown, [{
271
+ key: 'render',
272
+ value: function render() {
273
+ var _this4 = this;
274
+
275
+ return _react2.default.createElement(
276
+ 'div',
277
+ { className: 'pvtDropdown', style: { zIndex: this.props.zIndex } },
278
+ _react2.default.createElement(
279
+ 'div',
280
+ {
281
+ onClick: function onClick(e) {
282
+ e.stopPropagation();
283
+ _this4.props.toggle();
284
+ },
285
+ className: 'pvtDropdownValue pvtDropdownCurrent ' + (this.props.open ? 'pvtDropdownCurrentOpen' : ''),
286
+ role: 'button'
287
+ },
288
+ _react2.default.createElement(
289
+ 'div',
290
+ { className: 'pvtDropdownIcon' },
291
+ this.props.open ? '×' : '▾'
292
+ ),
293
+ this.props.current || _react2.default.createElement(
294
+ 'span',
295
+ null,
296
+ '\xA0'
297
+ )
298
+ ),
299
+ this.props.open && _react2.default.createElement(
300
+ 'div',
301
+ { className: 'pvtDropdownMenu' },
302
+ this.props.values.map(function (r) {
303
+ return _react2.default.createElement(
304
+ 'div',
305
+ {
306
+ key: r,
307
+ role: 'button',
308
+ onClick: function onClick(e) {
309
+ e.stopPropagation();
310
+ if (_this4.props.current === r) {
311
+ _this4.props.toggle();
312
+ } else {
313
+ _this4.props.setValue(r);
314
+ }
315
+ },
316
+ className: 'pvtDropdownValue ' + (r === _this4.props.current ? 'pvtDropdownActiveValue' : '')
317
+ },
318
+ r
319
+ );
320
+ })
321
+ )
322
+ );
323
+ }
324
+ }]);
325
+
326
+ return Dropdown;
327
+ }(_react2.default.PureComponent);
328
+
329
+ var PivotTableUI = function (_React$PureComponent2) {
330
+ _inherits(PivotTableUI, _React$PureComponent2);
331
+
332
+ function PivotTableUI(props) {
333
+ _classCallCheck(this, PivotTableUI);
334
+
335
+ var _this5 = _possibleConstructorReturn(this, (PivotTableUI.__proto__ || Object.getPrototypeOf(PivotTableUI)).call(this, props));
336
+
337
+ _this5.state = {
338
+ unusedOrder: [],
339
+ zIndices: {},
340
+ maxZIndex: 1000,
341
+ openDropdown: false,
342
+ attrValues: {},
343
+ materializedInput: []
344
+ };
345
+ return _this5;
346
+ }
347
+
348
+ _createClass(PivotTableUI, [{
349
+ key: 'componentDidMount',
350
+ value: function componentDidMount() {
351
+ this.materializeInput(this.props.data);
352
+ }
353
+ }, {
354
+ key: 'componentDidUpdate',
355
+ value: function componentDidUpdate() {
356
+ this.materializeInput(this.props.data);
357
+ }
358
+ }, {
359
+ key: 'materializeInput',
360
+ value: function materializeInput(nextData) {
361
+ if (this.state.data === nextData) {
362
+ return;
363
+ }
364
+ var newState = {
365
+ data: nextData,
366
+ attrValues: {},
367
+ materializedInput: []
368
+ };
369
+ var recordsProcessed = 0;
370
+ _Utilities.PivotData.forEachRecord(newState.data, this.props.derivedAttributes, function (record) {
371
+ newState.materializedInput.push(record);
372
+ var _iteratorNormalCompletion = true;
373
+ var _didIteratorError = false;
374
+ var _iteratorError = undefined;
375
+
376
+ try {
377
+ for (var _iterator = Object.keys(record)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
378
+ var attr = _step.value;
379
+
380
+ if (!(attr in newState.attrValues)) {
381
+ newState.attrValues[attr] = {};
382
+ if (recordsProcessed > 0) {
383
+ newState.attrValues[attr].null = recordsProcessed;
384
+ }
385
+ }
386
+ }
387
+ } catch (err) {
388
+ _didIteratorError = true;
389
+ _iteratorError = err;
390
+ } finally {
391
+ try {
392
+ if (!_iteratorNormalCompletion && _iterator.return) {
393
+ _iterator.return();
394
+ }
395
+ } finally {
396
+ if (_didIteratorError) {
397
+ throw _iteratorError;
398
+ }
399
+ }
400
+ }
401
+
402
+ for (var _attr in newState.attrValues) {
403
+ var value = _attr in record ? record[_attr] : 'null';
404
+ if (!(value in newState.attrValues[_attr])) {
405
+ newState.attrValues[_attr][value] = 0;
406
+ }
407
+ newState.attrValues[_attr][value]++;
408
+ }
409
+ recordsProcessed++;
410
+ });
411
+ this.setState(newState);
412
+ }
413
+ }, {
414
+ key: 'sendPropUpdate',
415
+ value: function sendPropUpdate(command) {
416
+ this.props.onChange((0, _immutabilityHelper2.default)(this.props, command));
417
+ }
418
+ }, {
419
+ key: 'propUpdater',
420
+ value: function propUpdater(key) {
421
+ var _this6 = this;
422
+
423
+ return function (value) {
424
+ return _this6.sendPropUpdate(_defineProperty({}, key, { $set: value }));
425
+ };
426
+ }
427
+ }, {
428
+ key: 'setValuesInFilter',
429
+ value: function setValuesInFilter(attribute, values) {
430
+ this.sendPropUpdate({
431
+ valueFilter: _defineProperty({}, attribute, {
432
+ $set: values.reduce(function (r, v) {
433
+ r[v] = true;
434
+ return r;
435
+ }, {})
436
+ })
437
+ });
438
+ }
439
+ }, {
440
+ key: 'addValuesToFilter',
441
+ value: function addValuesToFilter(attribute, values) {
442
+ if (attribute in this.props.valueFilter) {
443
+ this.sendPropUpdate({
444
+ valueFilter: _defineProperty({}, attribute, values.reduce(function (r, v) {
445
+ r[v] = { $set: true };
446
+ return r;
447
+ }, {}))
448
+ });
449
+ } else {
450
+ this.setValuesInFilter(attribute, values);
451
+ }
452
+ }
453
+ }, {
454
+ key: 'removeValuesFromFilter',
455
+ value: function removeValuesFromFilter(attribute, values) {
456
+ this.sendPropUpdate({
457
+ valueFilter: _defineProperty({}, attribute, { $unset: values })
458
+ });
459
+ }
460
+ }, {
461
+ key: 'moveFilterBoxToTop',
462
+ value: function moveFilterBoxToTop(attribute) {
463
+ this.setState((0, _immutabilityHelper2.default)(this.state, {
464
+ maxZIndex: { $set: this.state.maxZIndex + 1 },
465
+ zIndices: _defineProperty({}, attribute, { $set: this.state.maxZIndex + 1 })
466
+ }));
467
+ }
468
+ }, {
469
+ key: 'isOpen',
470
+ value: function isOpen(dropdown) {
471
+ return this.state.openDropdown === dropdown;
472
+ }
473
+ }, {
474
+ key: 'makeDnDCell',
475
+ value: function makeDnDCell(items, onChange, classes) {
476
+ var _this7 = this;
477
+
478
+ return _react2.default.createElement(
479
+ _reactSortablejs2.default,
480
+ {
481
+ options: {
482
+ group: 'shared',
483
+ ghostClass: 'pvtPlaceholder',
484
+ filter: '.pvtFilterBox',
485
+ preventOnFilter: false
486
+ },
487
+ tag: 'td',
488
+ className: classes,
489
+ onChange: onChange
490
+ },
491
+ items.map(function (x) {
492
+ return _react2.default.createElement(DraggableAttribute, {
493
+ name: x,
494
+ key: x,
495
+ attrValues: _this7.state.attrValues[x],
496
+ valueFilter: _this7.props.valueFilter[x] || {},
497
+ sorter: (0, _Utilities.getSort)(_this7.props.sorters, x),
498
+ menuLimit: _this7.props.menuLimit,
499
+ setValuesInFilter: _this7.setValuesInFilter.bind(_this7),
500
+ addValuesToFilter: _this7.addValuesToFilter.bind(_this7),
501
+ moveFilterBoxToTop: _this7.moveFilterBoxToTop.bind(_this7),
502
+ removeValuesFromFilter: _this7.removeValuesFromFilter.bind(_this7),
503
+ zIndex: _this7.state.zIndices[x] || _this7.state.maxZIndex
504
+ });
505
+ })
506
+ );
507
+ }
508
+ }, {
509
+ key: 'render',
510
+ value: function render() {
511
+ var _this8 = this;
512
+
513
+ var numValsAllowed = this.props.aggregators[this.props.aggregatorName]([])().numInputs || 0;
514
+
515
+ var aggregatorCellOutlet = this.props.aggregators[this.props.aggregatorName]([])().outlet;
516
+
517
+ var rendererName = this.props.rendererName in this.props.renderers ? this.props.rendererName : Object.keys(this.props.renderers)[0];
518
+
519
+ var rendererCell = _react2.default.createElement(
520
+ 'td',
521
+ { className: 'pvtRenderers' },
522
+ _react2.default.createElement(Dropdown, {
523
+ current: rendererName,
524
+ values: Object.keys(this.props.renderers),
525
+ open: this.isOpen('renderer'),
526
+ zIndex: this.isOpen('renderer') ? this.state.maxZIndex + 1 : 1,
527
+ toggle: function toggle() {
528
+ return _this8.setState({
529
+ openDropdown: _this8.isOpen('renderer') ? false : 'renderer'
530
+ });
531
+ },
532
+ setValue: this.propUpdater('rendererName')
533
+ })
534
+ );
535
+
536
+ var sortIcons = {
537
+ key_a_to_z: {
538
+ rowSymbol: '↕',
539
+ colSymbol: '↔',
540
+ next: 'value_a_to_z'
541
+ },
542
+ value_a_to_z: {
543
+ rowSymbol: '↓',
544
+ colSymbol: '→',
545
+ next: 'value_z_to_a'
546
+ },
547
+ value_z_to_a: { rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z' }
548
+ };
549
+
550
+ var aggregatorCell = _react2.default.createElement(
551
+ 'td',
552
+ { className: 'pvtVals' },
553
+ _react2.default.createElement(Dropdown, {
554
+ current: this.props.aggregatorName,
555
+ values: Object.keys(this.props.aggregators),
556
+ open: this.isOpen('aggregators'),
557
+ zIndex: this.isOpen('aggregators') ? this.state.maxZIndex + 1 : 1,
558
+ toggle: function toggle() {
559
+ return _this8.setState({
560
+ openDropdown: _this8.isOpen('aggregators') ? false : 'aggregators'
561
+ });
562
+ },
563
+ setValue: this.propUpdater('aggregatorName')
564
+ }),
565
+ _react2.default.createElement(
566
+ 'a',
567
+ {
568
+ role: 'button',
569
+ className: 'pvtRowOrder',
570
+ onClick: function onClick() {
571
+ return _this8.propUpdater('rowOrder')(sortIcons[_this8.props.rowOrder].next);
572
+ }
573
+ },
574
+ sortIcons[this.props.rowOrder].rowSymbol
575
+ ),
576
+ _react2.default.createElement(
577
+ 'a',
578
+ {
579
+ role: 'button',
580
+ className: 'pvtColOrder',
581
+ onClick: function onClick() {
582
+ return _this8.propUpdater('colOrder')(sortIcons[_this8.props.colOrder].next);
583
+ }
584
+ },
585
+ sortIcons[this.props.colOrder].colSymbol
586
+ ),
587
+ numValsAllowed > 0 && _react2.default.createElement('br', null),
588
+ new Array(numValsAllowed).fill().map(function (n, i) {
589
+ return [_react2.default.createElement(Dropdown, {
590
+ key: i,
591
+ current: _this8.props.vals[i],
592
+ values: Object.keys(_this8.state.attrValues).filter(function (e) {
593
+ return !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromAggregators.includes(e);
594
+ }),
595
+ open: _this8.isOpen('val' + i),
596
+ zIndex: _this8.isOpen('val' + i) ? _this8.state.maxZIndex + 1 : 1,
597
+ toggle: function toggle() {
598
+ return _this8.setState({
599
+ openDropdown: _this8.isOpen('val' + i) ? false : 'val' + i
600
+ });
601
+ },
602
+ setValue: function setValue(value) {
603
+ return _this8.sendPropUpdate({
604
+ vals: { $splice: [[i, 1, value]] }
605
+ });
606
+ }
607
+ }), i + 1 !== numValsAllowed ? _react2.default.createElement('br', { key: 'br' + i }) : null];
608
+ }),
609
+ aggregatorCellOutlet && aggregatorCellOutlet(this.props.data)
610
+ );
611
+
612
+ var unusedAttrs = Object.keys(this.state.attrValues).filter(function (e) {
613
+ return !_this8.props.rows.includes(e) && !_this8.props.cols.includes(e) && !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromDragDrop.includes(e);
614
+ }).sort((0, _Utilities.sortAs)(this.state.unusedOrder));
615
+
616
+ var unusedLength = unusedAttrs.reduce(function (r, e) {
617
+ return r + e.length;
618
+ }, 0);
619
+ var horizUnused = unusedLength < this.props.unusedOrientationCutoff;
620
+
621
+ var unusedAttrsCell = this.makeDnDCell(unusedAttrs, function (order) {
622
+ return _this8.setState({ unusedOrder: order });
623
+ }, 'pvtAxisContainer pvtUnused ' + (horizUnused ? 'pvtHorizList' : 'pvtVertList'));
624
+
625
+ var colAttrs = this.props.cols.filter(function (e) {
626
+ return !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromDragDrop.includes(e);
627
+ });
628
+
629
+ var colAttrsCell = this.makeDnDCell(colAttrs, this.propUpdater('cols'), 'pvtAxisContainer pvtHorizList pvtCols');
630
+
631
+ var rowAttrs = this.props.rows.filter(function (e) {
632
+ return !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromDragDrop.includes(e);
633
+ });
634
+ var rowAttrsCell = this.makeDnDCell(rowAttrs, this.propUpdater('rows'), 'pvtAxisContainer pvtVertList pvtRows');
635
+ var outputCell = _react2.default.createElement(
636
+ 'td',
637
+ { className: 'pvtOutput' },
638
+ _react2.default.createElement(_PivotTable2.default, (0, _immutabilityHelper2.default)(this.props, {
639
+ data: { $set: this.state.materializedInput }
640
+ }))
641
+ );
642
+
643
+ if (horizUnused) {
644
+ return _react2.default.createElement(
645
+ 'table',
646
+ { className: 'pvtUi' },
647
+ _react2.default.createElement(
648
+ 'tbody',
649
+ { onClick: function onClick() {
650
+ return _this8.setState({ openDropdown: false });
651
+ } },
652
+ _react2.default.createElement(
653
+ 'tr',
654
+ null,
655
+ rendererCell,
656
+ unusedAttrsCell
657
+ ),
658
+ _react2.default.createElement(
659
+ 'tr',
660
+ null,
661
+ aggregatorCell,
662
+ colAttrsCell
663
+ ),
664
+ _react2.default.createElement(
665
+ 'tr',
666
+ null,
667
+ rowAttrsCell,
668
+ outputCell
669
+ )
670
+ )
671
+ );
672
+ }
673
+
674
+ return _react2.default.createElement(
675
+ 'table',
676
+ { className: 'pvtUi' },
677
+ _react2.default.createElement(
678
+ 'tbody',
679
+ { onClick: function onClick() {
680
+ return _this8.setState({ openDropdown: false });
681
+ } },
682
+ _react2.default.createElement(
683
+ 'tr',
684
+ null,
685
+ rendererCell,
686
+ aggregatorCell,
687
+ colAttrsCell
688
+ ),
689
+ _react2.default.createElement(
690
+ 'tr',
691
+ null,
692
+ unusedAttrsCell,
693
+ rowAttrsCell,
694
+ outputCell
695
+ )
696
+ )
697
+ );
698
+ }
699
+ }]);
700
+
701
+ return PivotTableUI;
702
+ }(_react2.default.PureComponent);
703
+
704
+ PivotTableUI.propTypes = Object.assign({}, _PivotTable2.default.propTypes, {
705
+ onChange: _propTypes2.default.func.isRequired,
706
+ hiddenAttributes: _propTypes2.default.arrayOf(_propTypes2.default.string),
707
+ hiddenFromAggregators: _propTypes2.default.arrayOf(_propTypes2.default.string),
708
+ hiddenFromDragDrop: _propTypes2.default.arrayOf(_propTypes2.default.string),
709
+ unusedOrientationCutoff: _propTypes2.default.number,
710
+ menuLimit: _propTypes2.default.number
711
+ });
712
+
713
+ PivotTableUI.defaultProps = Object.assign({}, _PivotTable2.default.defaultProps, {
714
+ hiddenAttributes: [],
715
+ hiddenFromAggregators: [],
716
+ hiddenFromDragDrop: [],
717
+ unusedOrientationCutoff: 85,
718
+ menuLimit: 500
719
+ });
720
+
721
+ exports.default = PivotTableUI;
722
+ //# sourceMappingURL=PivotTableUI.js.map