Launch Week Day 4: Introducing Data Exports.Learn More
Socket
Book a DemoSign in
Socket

react-pivottable-secondary

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-pivottable-secondary - npm Package Compare versions

Comparing version
0.1.0
to
0.1.1
+1
-1
package.json
{
"name": "react-pivottable-secondary",
"version": "0.1.0",
"version": "0.1.1",
"description": "A React-based pivot table secondary",

@@ -5,0 +5,0 @@ "main": "PivotTableUI.js",

@@ -81,2 +81,5 @@ .pivotUi {

height: 30px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

@@ -100,2 +103,5 @@

text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

@@ -102,0 +108,0 @@

@@ -83,21 +83,7 @@ 'use strict';

function getScrollbarWidth() {
var scrollDiv = document.createElement('div');
scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
document.body.appendChild(scrollDiv);
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
document.body.removeChild(scrollDiv);
return scrollbarWidth;
}
var DEFAULT_ROW_HEIGHT = 32; // 默认表格单行高度
var OFFSET_HORIZONTAL = 300; // 横向滚动前、后偏移量
function makeRenderer() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var POSITION_TABLE_BODY = 'tableBody'; // 表示纵向滚动响应位置在表格内容上
var TableRenderer = function (_React$PureComponent) {

@@ -111,9 +97,2 @@ _inherits(TableRenderer, _React$PureComponent);

_this.getHorizontalDom = function (dom) {
_this.horizontalDom = dom || _this.horizontalDom;
};
_this.getVirtualTableRef = function (dom) {
_this.virtualTable = dom || _this.virtualTable;
_this.setVirtualSize(dom);
};
_this.valueCellColors = function () {};

@@ -123,21 +102,2 @@ _this.rowTotalColors = function () {};

_this.getClickHandler = null;
_this.virtualTable = null;
_this.tableHeader = null;
_this.virtualTableWidth = 0; // 虚拟表格宽度
_this.scrollBarWidth = getScrollbarWidth(); // 滚动条宽度
_this.scrollDom = null; // 纵向假滚动条节点
_this.horizontalDom = null; // 横向滚动节点
_this.verticalDom = null; // 纵向滚动节点
_this.mousePosition = ''; // 鼠标所在位置,用于区别纵向滚动由哪个节点相应的
_this.state = {
totalHeight: 0, // 表格内容区域总高度
totalWidth: 0, // 表格内容区域总宽度
hiddenLeftStyle: { // 左侧隐藏样式
width: '0px'
},
hiddenRightStyle: { // 右侧隐藏样式
width: '0px'
},
colSize: [0, 0] // 可视区域显示的列号
};
return _this;

@@ -148,117 +108,4 @@ }

key: 'componentDidMount',
value: function componentDidMount() {
this.setVirtualSize();
this.setHorizontalData();
// 同步两边的滚动
(0, _jquery2.default)('.pivot-table-body').on('scroll', this.asyncTableScroll);
}
value: function componentDidMount() {}
}, {
key: 'asyncTableScroll',
value: function asyncTableScroll() {
var scrollLeft = (0, _jquery2.default)(this).prop('scrollLeft');
(0, _jquery2.default)('.pivot-table-header').prop('scrollLeft', scrollLeft);
}
// 设置虚拟表格高度、宽度
}, {
key: 'setVirtualSize',
value: function setVirtualSize(dom) {
var virtualTable = dom || this.virtualTable;
var width = virtualTable.clientWidth;
if (width) {
this.virtualTableWidth = width;
}
}
}, {
key: 'getTableHeaderDom',
// getVirtualTableRef(dom) {
// this.virtualTable = dom || this.virtualTable;
// this.setVirtualSize(dom);
// };
value: function getTableHeaderDom(dom) {
this.tableHeader = dom || this.tableHeader;
}
}, {
key: 'getVerticalDom',
value: function getVerticalDom(dom) {
this.verticalDom = dom || this.verticalDom;
}
}, {
key: 'setHorizontalData',
// 设置虚拟表格横向数据;在横向滚动时使用
value: function setHorizontalData() {
var scrollLeft = this.horizontalDom && this.horizontalDom.scrollLeft;
var pivotData = new _Utilities.PivotData(this.props);
var rowAttrs = pivotData.props.rows;
var colKeys = pivotData.getColKeys();
var aggregatorGather = this.props.aggregatorGather;
var part1 = rowAttrs.length ? rowAttrs : [undefined];
var part2 = rowAttrs.length !== 0 && colKeys.length !== 0 ? [undefined] : [];
var part3 = colKeys;
var part4 = aggregatorGather;
var columns = [].concat(_toConsumableArray(part1), part2, _toConsumableArray(part3), _toConsumableArray(part4));
var oColSize = this.state.colSize;
// 表格内容可视区域的宽度
var width = this.virtualTableWidth;
var colSize = [];
var totalWidth = 0;
var hiddenLeftWidth = 0; // 左侧隐藏未被渲染的宽度
var hiddenRigthWidth = 0; // 右侧隐藏未被渲染的宽度
var currentStep = 0; // 0: 前面被隐藏阶段;1: 可视区域阶段;2: 后面不可见区域
if (!width) {
return;
}
columns.forEach(function (item, i) {
// const { width: colWidth = 150 } = item;
var colWidth = 120;
totalWidth += colWidth;
if (currentStep === 0) {
if (totalWidth >= scrollLeft - OFFSET_HORIZONTAL) {
// 根据 scrollLeft 算出可视区域起始行号
colSize[0] = i;
currentStep += 1;
} else {
hiddenLeftWidth += colWidth;
}
}
if (currentStep === 1 && totalWidth > scrollLeft + width + OFFSET_HORIZONTAL) {
// 计算出可视区域结束列号
colSize[1] = i;
currentStep += 1;
}
if (currentStep === 2) {
hiddenRigthWidth += colWidth;
}
});
if (oColSize.join() !== colSize.join()) {
// 可视区域的列号有了变化才重新进行渲染
this.setState({
hiddenLeftStyle: { width: hiddenLeftWidth + 'px' },
hiddenRightStyle: { width: hiddenRigthWidth + 'px' },
colSize: colSize,
totalWidth: totalWidth
});
}
}
}, {
key: 'handleHorizontalScroll',
value: function handleHorizontalScroll(e) {
e.stopPropagation();
var scrollLeft = e.target.scrollLeft;
// this.scrollDom && (this.scrollDom.scrollLeft = scrollLeft);
this.setHorizontalData();
}
}, {
key: 'handleBodyMouseEnter',
value: function handleBodyMouseEnter() {
this.mousePosition = POSITION_TABLE_BODY;
}
}, {
key: 'tableHeaderRender',

@@ -359,9 +206,2 @@ value: function tableHeaderRender() {

var _state = this.state,
hiddenBottomStyle = _state.hiddenBottomStyle,
hiddenLeftStyle = _state.hiddenLeftStyle,
hiddenRightStyle = _state.hiddenRightStyle,
colSize = _state.colSize,
totalHeight = _state.totalHeight;
var pivotData = new _Utilities.PivotData(this.props);

@@ -383,18 +223,9 @@ var colAttrs = pivotData.props.cols.length ? (0, _lodash.concat)(pivotData.props.cols, undefined) : [undefined, undefined];

var cols = [];
// if (colSize[0]) {
// cols.push(<col key="first" width={hiddenLeftStyle.width} />);
// }
showCols.forEach(function (col, i) {
var width = 120;
cols.push(_react2.default.createElement('col', { key: '' + (colSize[0] + i), width: width + 'px' }));
cols.push(_react2.default.createElement('col', { key: '' + i, width: width + 'px' }));
});
// if (colSize[1]) {
// cols.push(<col key="last" width={hiddenRightStyle.width} />);
// }
return _react2.default.createElement(
'div',
{ className: 'pivot-table-body', ref: this.getHorizontalDom, onMouseEnter: function onMouseEnter() {
return _this2.handleBodyMouseEnter();
} },
{ className: 'pivot-table-body' },
_react2.default.createElement(

@@ -579,5 +410,3 @@ 'div',

key: 'componentWillUnmount',
value: function componentWillUnmount() {
(0, _jquery2.default)('.pivot-table-body').off('scroll');
}
value: function componentWillUnmount() {}
}, {

@@ -702,5 +531,3 @@ key: 'render',

'div',
{ className: 'use-virtual-table', ref: this.getVirtualTableRef, onScroll: function onScroll(e) {
return _this3.handleHorizontalScroll(e);
} },
{ className: 'use-virtual-table' },
_react2.default.createElement(

@@ -707,0 +534,0 @@ 'div',

@@ -1,1 +0,1 @@

{"version":3,"sources":["src/TableRenderers.jsx"],"names":["spanSize","arr","i","j","x","asc","end","noDraw","len","length","asc1","end1","stop","redColorScaleGenerator","values","min","Math","apply","max","nonRed","round","backgroundColor","getScrollbarWidth","scrollDiv","document","createElement","style","cssText","body","appendChild","scrollbarWidth","offsetWidth","clientWidth","removeChild","DEFAULT_ROW_HEIGHT","OFFSET_HORIZONTAL","makeRenderer","opts","POSITION_TABLE_BODY","TableRenderer","props","getHorizontalDom","dom","horizontalDom","getVirtualTableRef","virtualTable","setVirtualSize","valueCellColors","rowTotalColors","colTotalColors","getClickHandler","tableHeader","virtualTableWidth","scrollBarWidth","scrollDom","verticalDom","mousePosition","state","totalHeight","totalWidth","hiddenLeftStyle","width","hiddenRightStyle","colSize","setHorizontalData","on","asyncTableScroll","scrollLeft","prop","pivotData","PivotData","rowAttrs","rows","colKeys","getColKeys","aggregatorGather","part1","undefined","part2","part3","part4","columns","oColSize","hiddenLeftWidth","hiddenRigthWidth","currentStep","forEach","item","colWidth","join","setState","e","stopPropagation","target","colAttrs","cols","map","r","colKey","_","o","c","position","zIndex","left","top","vals","aggregatorName","hiddenBottomStyle","rowKeys","getRowKeys","showCols","col","push","handleBodyMouseEnter","rowKey","txt","aggregator","getAggregator","value","format","totalAggregator","grandTotalAggregator","ready","dataTable","scrollY","scrollCollapse","paging","off","heatmapMode","colorScaleGenerator","tableColorScaleGenerator","allValues","colorScale","v","rowColorScales","rowValues","colColorScales","colValues","tableOptions","clickCallback","filters","Object","keys","attr","handleHorizontalScroll","tableBodyRender","React","PureComponent","defaultProps","propTypes","PropTypes","func","object","TSVExportRenderer","headerRow","result","row","unshift","window","innerWidth","height","innerHeight","Table"],"mappings":";;;;;;;;AAAA;;;;AACA;;;;AACA;;AACA;;AACA;;;;AACA;;;;;;;;;;;;;;AAEA;AACA,IAAMA,WAAW,SAAXA,QAAW,CAAUC,GAAV,EAAeC,CAAf,EAAkBC,CAAlB,EAAqB;AACpC,MAAIC,UAAJ;AACA,MAAIF,MAAM,CAAV,EAAa;AACX,QAAIG,YAAJ;AAAA,QAASC,YAAT;AACA,QAAIC,SAAS,IAAb;AACA,SACEH,IAAI,CAAJ,EAAOE,MAAMH,CAAb,EAAgBE,MAAMC,OAAO,CAD/B,EAEED,MAAMD,KAAKE,GAAX,GAAiBF,KAAKE,GAFxB,EAGED,MAAMD,GAAN,GAAYA,GAHd,EAIE;AACA,UAAIH,IAAIC,IAAI,CAAR,EAAWE,CAAX,MAAkBH,IAAIC,CAAJ,EAAOE,CAAP,CAAtB,EAAiC;AAC/BG,iBAAS,KAAT;AACD;AACF;AACD,QAAIA,MAAJ,EAAY;AACV,aAAO,CAAC,CAAR;AACD;AACF;AACD,MAAIC,MAAM,CAAV;AACA,SAAON,IAAIM,GAAJ,GAAUP,IAAIQ,MAArB,EAA6B;AAC3B,QAAIC,aAAJ;AAAA,QAAUC,aAAV;AACA,QAAIC,OAAO,KAAX;AACA,SACER,IAAI,CAAJ,EAAOO,OAAOR,CAAd,EAAiBO,OAAOC,QAAQ,CADlC,EAEED,OAAON,KAAKO,IAAZ,GAAmBP,KAAKO,IAF1B,EAGED,OAAON,GAAP,GAAaA,GAHf,EAIE;AACA,UAAIH,IAAIC,CAAJ,EAAOE,CAAP,MAAcH,IAAIC,IAAIM,GAAR,EAAaJ,CAAb,CAAlB,EAAmC;AACjCQ,eAAO,IAAP;AACD;AACF;AACD,QAAIA,IAAJ,EAAU;AACR;AACD;AACDJ;AACD;AACD,SAAOA,GAAP;AACD,CArCD;;AAuCA,SAASK,sBAAT,CAAgCC,MAAhC,EAAwC;AACtC,MAAMC,MAAMC,KAAKD,GAAL,CAASE,KAAT,CAAeD,IAAf,EAAqBF,MAArB,CAAZ;AACA,MAAMI,MAAMF,KAAKE,GAAL,CAASD,KAAT,CAAeD,IAAf,EAAqBF,MAArB,CAAZ;AACA,SAAO,aAAK;AACV;AACA,QAAMK,SAAS,MAAMH,KAAKI,KAAL,CAAY,OAAOhB,IAAIW,GAAX,CAAD,IAAqBG,MAAMH,GAA3B,CAAX,CAArB;AACA,WAAO,EAAEM,8BAA4BF,MAA5B,SAAsCA,MAAtC,MAAF,EAAP;AACD,GAJD;AAKD;;AAED,SAASG,iBAAT,GAA6B;AAC3B,MAAMC,YAAYC,SAASC,aAAT,CAAuB,KAAvB,CAAlB;AACAF,YAAUG,KAAV,CAAgBC,OAAhB,GAA0B,gFAA1B;AACAH,WAASI,IAAT,CAAcC,WAAd,CAA0BN,SAA1B;AACA,MAAMO,iBAAiBP,UAAUQ,WAAV,GAAwBR,UAAUS,WAAzD;AACAR,WAASI,IAAT,CAAcK,WAAd,CAA0BV,SAA1B;;AAEA,SAAOO,cAAP;AACD;;AAED,IAAMI,qBAAqB,EAA3B,C,CAA+B;AAC/B,IAAMC,oBAAoB,GAA1B,C,CAA+B;;;AAG/B,SAASC,YAAT,GAAiC;AAAA,MAAXC,IAAW,uEAAJ,EAAI;;AAC/B,MAAMC,sBAAsB,WAA5B,CAD+B,CACU;;AADV,MAEzBC,aAFyB;AAAA;;AAG7B,2BAAYC,KAAZ,EAAmB;AAAA;;AAAA,gIACXA,KADW;;AAEjB,YAAKC,gBAAL,GAAwB,UAACC,GAAD,EAAS;AAC/B,cAAKC,aAAL,GAAqBD,OAAO,MAAKC,aAAjC;AACD,OAFD;AAGA,YAAKC,kBAAL,GAA0B,UAACF,GAAD,EAAS;AACjC,cAAKG,YAAL,GAAoBH,OAAO,MAAKG,YAAhC;AACA,cAAKC,cAAL,CAAoBJ,GAApB;AACD,OAHD;AAIA,YAAKK,eAAL,GAAuB,YAAM,CAAG,CAAhC;AACA,YAAKC,cAAL,GAAsB,YAAM,CAAG,CAA/B;AACA,YAAKC,cAAL,GAAsB,YAAM,CAAG,CAA/B;AACA,YAAKC,eAAL,GAAuB,IAAvB;AACA,YAAKL,YAAL,GAAoB,IAApB;AACA,YAAKM,WAAL,GAAmB,IAAnB;AACA,YAAKC,iBAAL,GAAyB,CAAzB,CAfiB,CAeW;AAC5B,YAAKC,cAAL,GAAsB/B,mBAAtB,CAhBiB,CAgB0B;AAC3C,YAAKgC,SAAL,GAAiB,IAAjB,CAjBiB,CAiBM;AACvB,YAAKX,aAAL,GAAqB,IAArB,CAlBiB,CAkBU;AAC3B,YAAKY,WAAL,GAAmB,IAAnB,CAnBiB,CAmBQ;AACzB,YAAKC,aAAL,GAAqB,EAArB,CApBiB,CAoBQ;AACzB,YAAKC,KAAL,GAAa;AACXC,qBAAa,CADF,EACK;AAChBC,oBAAY,CAFD,EAEI;AACfC,yBAAiB,EAAE;AACjBC;AADe,SAHN;AAMXC,0BAAkB,EAAE;AAClBD;AADgB,SANP;AASXE,iBAAS,CAAC,CAAD,EAAI,CAAJ,CATE,CASM;AATN,OAAb;AArBiB;AAgClB;;AAnC4B;AAAA;AAAA,0CAoCT;AAClB,aAAKjB,cAAL;AACA,aAAKkB,iBAAL;AACA;AACA,8BAAE,mBAAF,EAAuBC,EAAvB,CAA0B,QAA1B,EAAoC,KAAKC,gBAAzC;AACD;AAzC4B;AAAA;AAAA,yCA0CV;AACjB,YAAIC,aAAa,sBAAE,IAAF,EAAQC,IAAR,CAAa,YAAb,CAAjB;AACA,8BAAE,qBAAF,EAAyBA,IAAzB,CAA8B,YAA9B,EAA4CD,UAA5C;AACD;AACD;;AA9C6B;AAAA;AAAA,qCA+CdzB,GA/Cc,EA+CT;AAClB,YAAMG,eAAeH,OAAO,KAAKG,YAAjC;AACA,YAAMgB,QAAQhB,aAAab,WAA3B;AACA,YAAI6B,KAAJ,EAAW;AACT,eAAKT,iBAAL,GAAyBS,KAAzB;AACD;AACF;AArD4B;AAAA;;;AAuD7B;AACA;AACA;AACA;;AA1D6B,wCA4DXnB,GA5DW,EA4DN;AACrB,aAAKS,WAAL,GAAmBT,OAAO,KAAKS,WAA/B;AACD;AA9D4B;AAAA;AAAA,qCAgEdT,GAhEc,EAgET;AAClB,aAAKa,WAAL,GAAmBb,OAAO,KAAKa,WAA/B;AACD;AAlE4B;AAAA;;;AAoE7B;AApE6B,0CAqET;AAClB,YAAMY,aAAa,KAAKxB,aAAL,IAAsB,KAAKA,aAAL,CAAmBwB,UAA5D;AACA,YAAME,YAAY,IAAIC,oBAAJ,CAAc,KAAK9B,KAAnB,CAAlB;AACA,YAAM+B,WAAWF,UAAU7B,KAAV,CAAgBgC,IAAjC;AACA,YAAMC,UAAUJ,UAAUK,UAAV,EAAhB;AACA,YAAMC,mBAAmB,KAAKnC,KAAL,CAAWmC,gBAApC;AACA,YAAMC,QAAQL,SAAS9D,MAAT,GAAkB8D,QAAlB,GAA6B,CAACM,SAAD,CAA3C;AACA,YAAMC,QAAQP,SAAS9D,MAAT,KAAoB,CAApB,IAAyBgE,QAAQhE,MAAR,KAAmB,CAA5C,GAAgD,CAACoE,SAAD,CAAhD,GAA8D,EAA5E;AACA,YAAME,QAAQN,OAAd;AACA,YAAMO,QAAQL,gBAAd;AACA,YAAMM,uCAAcL,KAAd,GAAwBE,KAAxB,qBAAkCC,KAAlC,sBAA4CC,KAA5C,EAAN;AAVkB,YAWDE,QAXC,GAWY,KAAKzB,KAXjB,CAWVM,OAXU;AAYlB;;AACA,YAAMF,QAAQ,KAAKT,iBAAnB;AACA,YAAMW,UAAU,EAAhB;AACA,YAAIJ,aAAa,CAAjB;AACA,YAAIwB,kBAAkB,CAAtB,CAhBkB,CAgBO;AACzB,YAAIC,mBAAmB,CAAvB,CAjBkB,CAiBQ;AAC1B,YAAIC,cAAc,CAAlB,CAlBkB,CAkBG;AACrB,YAAI,CAACxB,KAAL,EAAY;AACV;AACD;AACDoB,gBAAQK,OAAR,CAAgB,UAACC,IAAD,EAAOrF,CAAP,EAAa;AAC3B;AACA,cAAMsF,WAAW,GAAjB;AACA7B,wBAAc6B,QAAd;AACA,cAAIH,gBAAgB,CAApB,EAAuB;AACrB,gBAAI1B,cAAcQ,aAAahC,iBAA/B,EAAkD;AAChD;AACA4B,sBAAQ,CAAR,IAAa7D,CAAb;AACAmF,6BAAe,CAAf;AACD,aAJD,MAIO;AACLF,iCAAmBK,QAAnB;AACD;AACF;AACD,cAAIH,gBAAgB,CAAhB,IAAqB1B,aAAaQ,aAAaN,KAAb,GAAqB1B,iBAA3D,EAA8E;AAC5E;AACA4B,oBAAQ,CAAR,IAAa7D,CAAb;AACAmF,2BAAe,CAAf;AACD;AACD,cAAIA,gBAAgB,CAApB,EAAuB;AACrBD,gCAAoBI,QAApB;AACD;AACF,SArBD;;AAuBA,YAAIN,SAASO,IAAT,OAAoB1B,QAAQ0B,IAAR,EAAxB,EAAwC;AACtC;AACA,eAAKC,QAAL,CAAc;AACZ9B,6BAAiB,EAAEC,OAAUsB,eAAV,OAAF,EADL;AAEZrB,8BAAkB,EAAED,OAAUuB,gBAAV,OAAF,EAFN;AAGZrB,4BAHY;AAIZJ;AAJY,WAAd;AAMD;AACF;AA3H4B;AAAA;AAAA,6CA6HNgC,CA7HM,EA6HH;AACxBA,UAAEC,eAAF;AACA,YAAMzB,aAAawB,EAAEE,MAAF,CAAS1B,UAA5B;AACA;AACA,aAAKH,iBAAL;AACD;AAlI4B;AAAA;AAAA,6CAoIN;AACrB,aAAKR,aAAL,GAAqBlB,mBAArB;AACD;AAtI4B;AAAA;AAAA,0CAwIT;AAClB,YAAM+B,YAAY,IAAIC,oBAAJ,CAAc,KAAK9B,KAAnB,CAAlB;AACA,YAAMsD,WAAWzB,UAAU7B,KAAV,CAAgBuD,IAAhB,CAAqBtF,MAArB,GAA8B,oBAAO4D,UAAU7B,KAAV,CAAgBuD,IAAvB,EAA6BlB,SAA7B,CAA9B,GAAwE,CAACA,SAAD,EAAYA,SAAZ,CAAzF;AACA,YAAMN,WAAWF,UAAU7B,KAAV,CAAgBgC,IAAjC;AACA,YAAMC,UAAUJ,UAAUK,UAAV,EAAhB;AACA,YAAMC,mBAAmB,KAAKnC,KAAL,CAAWmC,gBAApC;AACA,eACE;AAAA;AAAA,YAAK,WAAU,oBAAf;AACE;AAAA;AAAA,cAAO,WAAU,YAAjB;AACE;AAAA;AAAA;AAEIJ,uBAAS9D,MAAT,KAAoB,CAApB,IAAyBgE,QAAQhE,MAAR,KAAmB,CAA5C,IACE,uCAAK,OAAO,EAAEoD,OAAO,OAAT,EAAZ,GAHN;AAOIU,uBAAS9D,MAAT,KAAoB,CAApB,IACA8D,SAASyB,GAAT,CAAa,UAACC,CAAD,EAAI/F,CAAJ,EAAU;AACrB,uBACE,uCAAK,OAAO,EAAE2D,OAAO,OAAT,EAAZ,GADF;AAGD,eAJD,CARJ;AAcGY,sBAAQhE,MAAR,IACC,uCAAK,OAAO,EAAEoD,OAAO,OAAT,EAAZ,GADD,IAEI,IAhBP;AAiBGY,sBAAQuB,GAAR,CAAY,UAACE,MAAD,EAAShG,CAAT,EAAe;AAC1B,uBACE,uCAAK,OAAO,EAAE2D,OAAO,OAAT,EAAZ,GADF;AAGD,eAJA,CAjBH;AAuBIc,+BAAiBqB,GAAjB,CAAqB,UAACG,CAAD,EAAIC,CAAJ,EAAU;AAC7B,uBACE,uCAAK,OAAO,EAAEvC,OAAO,OAAT,EAAZ,GADF;AAGD,eAJD,CADD,IAMI,8BAAC,eAAD,CAAO,QAAP;AA5BP,aADF;AA+BE;AAAA;AAAA;AACGiC,uBAASE,GAAT,CAAa,UAACK,CAAD,EAAIlG,CAAJ,EAAU;AACtB,uBACE;AAAA;AAAA,oBAAI,UAAQkG,CAAR,GAAYlG,CAAhB;AAGIoE,2BAAS9D,MAAT,KAAoB,CAApB,IAAyBgE,QAAQhE,MAAR,KAAmB,CAA5C,IACE,sCAAI,SAAS8D,SAAS9D,MAAtB,EAA8B,SAASqF,SAASrF,MAAT,GAAkB,CAAzD,GADF,IAEK,IALT;AAQGN,wBAAM,CAAN,IAAWoE,SAAS9D,MAAT,KAAoB,CAA/B,IAEG,sCAAI,SAAS8D,SAAS9D,MAAtB,EAA8B,SAASqF,SAASrF,MAAT,GAAkB,CAAzD,EAA4D,OAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAM,CAAvC,EAA0CC,KAAK,CAA/C,EAAnE,GAFH,IAIKlC,SAAS9D,MAAT,KAAoB,CAApB,IAAyBN,MAAM2F,SAASrF,MAAT,GAAkB,CAAjD,IACF8D,SAASyB,GAAT,CAAa,UAACC,CAAD,EAAI/F,CAAJ,EAAU;AACrB,2BACE;AAAA;AAAA,wBAAI,OAAO,EAAEoG,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAMtG,IAAI,GAAJ,GAAU,IAAjD,EAAX,EAAoE,WAAU,gBAA9E,EAA+F,iBAAeA,CAA9G;AACG+F;AADH,qBADF;AAKD,mBAND,CAbN;AAsBGxB,0BAAQhE,MAAR,IACC;AAAA;AAAA,sBAAI,OAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAMjC,SAAS9D,MAAT,GAAkB,GAAlB,GAAwB,IAA/D,EAAqEgG,KAAKtG,IAAI,EAAJ,GAAS,IAAnF,EAAX,EAAsG,WAAU,cAAhH;AAAgIkG;AAAhI,mBADD,IAEI,IAxBP;AA0BG5B,0BAAQuB,GAAR,CAAY,UAACE,MAAD,EAAShG,CAAT,EAAe;AAC1B,wBAAME,IAAIJ,SAASyE,OAAT,EAAkBvE,CAAlB,EAAqBC,CAArB,CAAV;AACA,wBAAIC,MAAM,CAAC,CAAX,EAAc;AACZ,6BAAO,IAAP;AACD;AACD,2BACE;AAAA;AAAA;AACE,mCAAU,eADZ;AAEE,wCAAcF,CAAd,GAAkBC,CAFpB;AAGE,iCAASC,CAHX;AAIE,+BAAO,EAAEkG,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCE,KAAKtG,IAAI,EAAJ,GAAS,IAA/C;AAJT;AAMG+F,6BAAO/F,CAAP;AANH,qBADF;AAUD,mBAfA,CA1BH;AA6CIA,wBAAM,CAAP,IACC;AAAA;AAAA;AACE,iCAAU,iBADZ;AAEE,+CAAuBA,CAFzB;AAGE,+BAASwE,iBAAiBlE,MAH5B;AAIE,+BACEqF,SAASrF,MAAT,IAAmBkE,iBAAiBlE,MAAjB,KAA4B,CAA5B,GAAgC,CAAhC,GAAoC,CAAvD;AALJ;AAAA;AAAA,mBADD,IAWI,8BAAC,eAAD,CAAO,QAAP,OAxDP;AA2DIN,wBAAM2F,SAASrF,MAAT,GAAkB,CAAzB,IACCkE,iBAAiBqB,GAAjB,CAAqB,UAACG,CAAD,EAAIC,CAAJ,EAAU;AAC7B,2BACE;AAAA;AAAA;AACE,uCAAajG,CAAb,GAAiBiG,CADnB;AAEE,mCAAU;AAFZ;AAIMD,wBAAEO,IAAF,CAAOjB,IAAP,CAAY,GAAZ,CAJN,SAI0BU,EAAEQ,cAJ5B;AAAA,qBADF;AAOD,mBARD,CADD,IAUI,8BAAC,eAAD,CAAO,QAAP;AArEP,iBADF;AA0ED,eA3EA;AADH;AA/BF;AADF,SADF;AAkHD;AAhQ4B;AAAA;AAAA,wCAkQX;AAAA;;AAAA,qBACuE,KAAKlD,KAD5E;AAAA,YACRmD,iBADQ,UACRA,iBADQ;AAAA,YACWhD,eADX,UACWA,eADX;AAAA,YAC4BE,gBAD5B,UAC4BA,gBAD5B;AAAA,YAC8CC,OAD9C,UAC8CA,OAD9C;AAAA,YACuDL,WADvD,UACuDA,WADvD;;AAEhB,YAAMW,YAAY,IAAIC,oBAAJ,CAAc,KAAK9B,KAAnB,CAAlB;AACA,YAAMsD,WAAWzB,UAAU7B,KAAV,CAAgBuD,IAAhB,CAAqBtF,MAArB,GAA8B,oBAAO4D,UAAU7B,KAAV,CAAgBuD,IAAvB,EAA6BlB,SAA7B,CAA9B,GAAwE,CAACA,SAAD,EAAYA,SAAZ,CAAzF;AACA,YAAMN,WAAWF,UAAU7B,KAAV,CAAgBgC,IAAjC;AACA,YAAMqC,UAAUxC,UAAUyC,UAAV,EAAhB;AACA,YAAMrC,UAAUJ,UAAUK,UAAV,EAAhB;AACA,YAAMC,mBAAmB,KAAKnC,KAAL,CAAWmC,gBAApC;;AAGA,YAAMC,QAAQL,SAAS9D,MAAT,GAAkB8D,QAAlB,GAA6B,CAACM,SAAD,CAA3C;AACA,YAAMC,QAAQP,SAAS9D,MAAT,KAAoB,CAApB,IAAyBgE,QAAQhE,MAAR,KAAmB,CAA5C,GAAgD,CAACoE,SAAD,CAAhD,GAA8D,EAA5E;AACA,YAAME,QAAQN,OAAd;AACA,YAAMO,QAAQL,gBAAd;AACA,YAAMM,uCAAcL,KAAd,GAAwBE,KAAxB,qBAAkCC,KAAlC,sBAA4CC,KAA5C,EAAN;;AAEA;AACA,YAAM+B,WAAW9B,OAAjB;AACA,YAAMc,OAAO,EAAb;AACA;AACA;AACA;AACAgB,iBAASzB,OAAT,CAAiB,UAAC0B,GAAD,EAAM9G,CAAN,EAAY;AAC3B,cAAM2D,QAAQ,GAAd;AACAkC,eAAKkB,IAAL,CAAU,uCAAK,WAAQlD,QAAQ,CAAR,IAAa7D,CAArB,CAAL,EAA+B,OAAU2D,KAAV,OAA/B,GAAV;AACD,SAHD;AAIA;AACA;AACA;;AAEA,eACE;AAAA;AAAA,YAAK,WAAU,kBAAf,EAAkC,KAAK,KAAKpB,gBAA5C,EAA8D,cAAc;AAAA,qBAAM,OAAKyE,oBAAL,EAAN;AAAA,aAA5E;AACE;AAAA;AAAA,cAAK,WAAU,kBAAf;AACE;AAAA;AAAA,gBAAO,WAAU,YAAjB;AACE;AAAA;AAAA;AACGnB;AADH,eADF;AAIE;AAAA;AAAA;AACGD,yBAASE,GAAT,CAAa,UAACK,CAAD,EAAIlG,CAAJ,EAAU;AACtB,yBACE;AAAA;AAAA,sBAAI,UAAQkG,CAAR,GAAYlG,CAAhB;AAGIoE,6BAAS9D,MAAT,KAAoB,CAApB,IAAyBgE,QAAQhE,MAAR,KAAmB,CAA5C,IACE,sCAAI,SAAS8D,SAAS9D,MAAtB,EAA8B,SAASqF,SAASrF,MAAT,GAAkB,CAAzD,GADF,IAEK,IALT;AAQGN,0BAAM,CAAN,IAAWoE,SAAS9D,MAAT,KAAoB,CAA/B,IAEG,sCAAI,SAAS8D,SAAS9D,MAAtB,EAA8B,SAASqF,SAASrF,MAAT,GAAkB,CAAzD,EAA4D,OAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAM,CAAvC,EAA0CC,KAAK,CAA/C,EAAnE,GAFH,IAIKlC,SAAS9D,MAAT,KAAoB,CAApB,IAAyBN,MAAM2F,SAASrF,MAAT,GAAkB,CAAjD,IACF8D,SAASyB,GAAT,CAAa,UAACC,CAAD,EAAI/F,CAAJ,EAAU;AACrB,6BACE;AAAA;AAAA,0BAAI,OAAO,EAAEoG,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAMtG,IAAI,GAAJ,GAAU,IAAjD,EAAuDuG,KAAKtG,IAAI,EAAJ,GAAS,IAArE,EAAX,EAAwF,WAAU,gBAAlG,EAAmH,iBAAeD,CAAlI;AACG+F;AADH,uBADF;AAKD,qBAND,CAbN;AAsBGxB,4BAAQhE,MAAR,IACC;AAAA;AAAA,wBAAI,OAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAMjC,SAAS9D,MAAT,GAAkB,GAAlB,GAAwB,IAA/D,EAAqEgG,KAAKtG,IAAI,EAAJ,GAAS,IAAnF,EAAX,EAAsG,WAAU,cAAhH;AAAgIkG;AAAhI,qBADD,IAEI,IAxBP;AA0BG5B,4BAAQuB,GAAR,CAAY,UAACE,MAAD,EAAShG,CAAT,EAAe;AAC1B,0BAAME,IAAIJ,SAASyE,OAAT,EAAkBvE,CAAlB,EAAqBC,CAArB,CAAV;AACA,0BAAIC,MAAM,CAAC,CAAX,EAAc;AACZ,+BAAO,IAAP;AACD;AACD,6BACE;AAAA;AAAA;AACE,qCAAU,eADZ;AAEE,0CAAcF,CAAd,GAAkBC,CAFpB;AAGE,mCAASC,CAHX;AAIE,iCAAO,EAAEkG,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCE,KAAKtG,IAAI,EAAJ,GAAS,IAA/C;AAJT;AAMG+F,+BAAO/F,CAAP;AANH,uBADF;AAUD,qBAfA,CA1BH;AA6CIA,0BAAM,CAAP,IACC;AAAA;AAAA;AACE,mCAAU,iBADZ;AAEE,iDAAuBA,CAFzB;AAGE,iCAASwE,iBAAiBlE,MAH5B;AAIE,iCACEqF,SAASrF,MAAT,IAAmBkE,iBAAiBlE,MAAjB,KAA4B,CAA5B,GAAgC,CAAhC,GAAoC,CAAvD,CALJ;AAOE,+BAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCE,KAAKtG,IAAI,EAAJ,GAAS,IAA/C;AAPT;AAAA;AAAA,qBADD,IAYI,8BAAC,eAAD,CAAO,QAAP,OAzDP;AA4DIA,0BAAM2F,SAASrF,MAAT,GAAkB,CAAzB,IACCkE,iBAAiBqB,GAAjB,CAAqB,UAACG,CAAD,EAAIC,CAAJ,EAAU;AAC7B,6BACE;AAAA;AAAA;AACE,yCAAajG,CAAb,GAAiBiG,CADnB;AAEE,qCAAU,6BAFZ;AAGE,iCAAO,EAAEE,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCE,KAAKtG,IAAI,EAAJ,GAAS,IAA/C;AAHT;AAKMgG,0BAAEO,IAAF,CAAOjB,IAAP,CAAY,GAAZ,CALN,SAK0BU,EAAEQ,cAL5B;AAAA,uBADF;AAQD,qBATD,CADD,IAWI,8BAAC,eAAD,CAAO,QAAP;AAvEP,mBADF;AA4ED,iBA7EA;AADH,eAJF;AAoFE;AAAA;AAAA;AACGE,wBAAQb,GAAR,CAAY,UAACmB,MAAD,EAASjH,CAAT,EAAe;AAC1B,yBACE;AAAA;AAAA,sBAAI,mBAAiBA,CAArB;AACGiH,2BAAO1G,MAAP,IAEC0G,OAAOnB,GAAP,CAAW,UAACoB,GAAD,EAAMjH,CAAN,EAAY;AACrB,0BAAMC,IAAIJ,SAAS6G,OAAT,EAAkB3G,CAAlB,EAAqBC,CAArB,CAAV;AACA,0BAAIC,MAAM,CAAC,CAAX,EAAc;AACZ,+BAAO,IAAP;AACD;AACD,6BACE;AAAA;AAAA;AACE,+CAAmBF,CAAnB,SAAwBC,CAD1B;AAEE,qCAAU,eAFZ;AAGE,mCAASC,CAHX;AAIE,mCACED,MAAMoE,SAAS9D,MAAT,GAAkB,CAAxB,IAA6BgE,QAAQhE,MAAR,KAAmB,CAAhD,GACI,CADJ,GAEI,CAPR;AASE,iCAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAOrG,CAAD,GAAM,GAAN,GAAY,IAAnD;AATT;AAWGiH;AAXH,uBADF;AAeD,qBApBD,CAFD,IAwBC;AACE,2CAAmBlH,CADrB;AAEE,iCAAU;AAFZ,sBAzBJ;AA+BGuE,4BAAQuB,GAAR,CAAY,UAACE,MAAD,EAAS/F,CAAT,EAAe;AAC1B,0BAAMkH,aAAahD,UAAUiD,aAAV,CAAwBH,MAAxB,EAAgCjB,MAAhC,CAAnB;AACA,6BACE;AAAA;AAAA;AACE,qCAAU,UADZ;AAEE,4CAAgBhG,CAAhB,SAAqBC,CAFvB;AAGE,mCACE,OAAK+C,eAAL,IACA,OAAKA,eAAL,CAAqBmE,WAAWE,KAAX,EAArB,EAAyCJ,MAAzC,EAAiDjB,MAAjD,CALJ;AAOE,iCAAO,OAAKnD,eAAL,CACLoE,MADK,EAELjB,MAFK,EAGLmB,WAAWE,KAAX,EAHK;AAPT;AAaGF,mCAAWG,MAAX,CAAkBH,WAAWE,KAAX,EAAlB;AAbH,uBADF;AAiBD,qBAnBA,CA/BH;AAmDG5C,qCAAiBqB,GAAjB,CAAqB,UAACG,CAAD,EAAIhG,CAAJ,EAAU;AAC9B,0BAAMsH,kBAAkBpD,UAAUiD,aAAV,8BAA4BH,MAA5B,IAAoChB,EAAEQ,cAAtC,IAAuD,EAAvD,CAAxB;AACA,6BAAQ;AAAA;AAAA;AACN,qCAAU,0BADJ;AAEN,8CAAkBzG,CAAlB,SAAuBC,CAAvB,SAA4BgG,EAAEQ,cAFxB;AAGN,mCACE,OAAKzD,eAAL,IACA,OAAKA,eAAL,CAAqBuE,gBAAgBF,KAAhB,EAArB,EAA8CJ,MAA9C,EAAsD,CAAC,IAAD,CAAtD,CALI;AAON,iCAAO,OAAKlE,cAAL,CAAoBwE,gBAAgBF,KAAhB,EAApB;AAPD;AASLE,wCAAgBD,MAAhB,CAAuBC,gBAAgBF,KAAhB,EAAvB;AATK,uBAAR;AAWD,qBAbA;AAnDH,mBADF;AAoED,iBArEA,CADH;AAwEE;AAAA;AAAA;AAGM;AAAA;AAAA;AACE,iCAAU,iBADZ;AAEE,+BAAShD,SAAS9D,MAAT,IAAmBgE,QAAQhE,MAAR,KAAmB,CAAnB,GAAuB,CAAvB,GAA2B,CAA9C,CAFX;AAGE,6BAAO,EAAE6F,UAAU,QAAZ,EAAsBC,QAAQ,CAA9B,EAAiCC,MAAM,CAAvC;AAHT;AAAA;AAAA,mBADF,IAQK,8BAAC,eAAD,CAAO,QAAP,OAVT;AAaG/B,0BAAQuB,GAAR,CAAY,UAACE,MAAD,EAAShG,CAAT,EAAe;AAC1B,wBAAMuH,kBAAkBpD,UAAUiD,aAAV,CAAwB,EAAxB,EAA4BpB,MAA5B,CAAxB;AACA,2BACE;AAAA;AAAA;AACE,mCAAU,YADZ;AAEE,uCAAahG,CAFf;AAGE,iCACE,OAAKgD,eAAL,IACA,OAAKA,eAAL,CAAqBuE,gBAAgBF,KAAhB,EAArB,EAA8C,CAAC,IAAD,CAA9C,EAAsDrB,MAAtD,CALJ;AAOE,+BAAO,OAAKlD,cAAL,CAAoByE,gBAAgBF,KAAhB,EAApB;AAPT;AASGE,sCAAgBD,MAAhB,CAAuBC,gBAAgBF,KAAhB,EAAvB;AATH,qBADF;AAaD,mBAfA,CAbH;AA+BI5C,mCAAiBqB,GAAjB,CAAqB,UAACG,CAAD,EAAIC,CAAJ,EAAU;AAC7B,wBAAMsB,uBAAuBrD,UAAUiD,aAAV,CAAwB,EAAxB,EAA4B,EAA5B,EAAgCnB,EAAEQ,cAAlC,CAA7B;AACA,2BACE;AAAA;AAAA;AACE,kDAAwBP,CAD1B;AAEE,iCACE,OAAKlD,eAAL,IACA,OAAKA,eAAL,CAAqBwE,qBAAqBH,KAArB,EAArB,EAAmD,CAAC,IAAD,CAAnD,EAA2D,CAAC,IAAD,CAA3D,CAJJ;AAME,mCAAU;AANZ;AAQGG,2CAAqBF,MAArB,CAA4BE,qBAAqBH,KAArB,EAA5B;AARH,qBADF;AAWD,mBAbD,CADD,IAcQ,8BAAC,eAAD,CAAO,QAAP;AA5CX;AAxEF;AApFF;AADF;AADF,SADF;AAmND;AAnf4B;AAAA;AAAA,yCAqfV;AACjB,8BAAE/F,QAAF,EAAYmG,KAAZ,CAAkB,YAAY;AAC5B,gCAAE,aAAF,EAAiBC,SAAjB,CAA2B,EAAEC,SAAS,MAAX,EAAmBC,gBAAgB,IAAnC,EAAyCC,QAAQ,KAAjD,EAA3B;AACD,SAFD;AAGD;AAzf4B;AAAA;AAAA,6CA2fN;AACrB,8BAAE,mBAAF,EAAuBC,GAAvB,CAA2B,QAA3B;AACD;AA7f4B;AAAA;AAAA,+BA8fpB;AAAA;;AACP,YAAM3D,YAAY,IAAIC,oBAAJ,CAAc,KAAK9B,KAAnB,CAAlB;AACA,YAAMsD,WAAWzB,UAAU7B,KAAV,CAAgBuD,IAAhB,CAAqBtF,MAArB,GAA8B,oBAAO4D,UAAU7B,KAAV,CAAgBuD,IAAvB,EAA6BlB,SAA7B,CAA9B,GAAwE,CAACA,SAAD,EAAYA,SAAZ,CAAzF;AACA,YAAMN,WAAWF,UAAU7B,KAAV,CAAgBgC,IAAjC;AACA,YAAMqC,UAAUxC,UAAUyC,UAAV,EAAhB;AACA,YAAMrC,UAAUJ,UAAUK,UAAV,EAAhB;AACA,YAAMC,mBAAmB,KAAKnC,KAAL,CAAWmC,gBAApC;;AAEA,aAAK5B,eAAL,GAAuB,YAAM,CAAG,CAAhC;AACA,aAAKC,cAAL,GAAsB,YAAM,CAAG,CAA/B;AACA,aAAKC,cAAL,GAAsB,YAAM,CAAG,CAA/B;AACA;AACA,YAAIZ,KAAK4F,WAAT,EAAsB;AACpB,cAAMC,sBAAsB,KAAK1F,KAAL,CAAW2F,wBAAvC;AACA,cAAI9F,KAAK4F,WAAL,KAAqB,MAAzB,EAAiC;AAC/B,gBAAMG,YAAY,EAAlB;AACAvB,oBAAQb,GAAR,CAAY;AAAA,qBACVvB,QAAQuB,GAAR,CAAY;AAAA,uBACVoC,UAAUnB,IAAV,CAAe5C,UAAUiD,aAAV,CAAwBrB,CAAxB,EAA2BI,CAA3B,EAA8BkB,KAA9B,EAAf,CADU;AAAA,eAAZ,CADU;AAAA,aAAZ;AAKA,gBAAMc,aAAaH,oBAAoBE,SAApB,CAAnB;AACA,iBAAKrF,eAAL,GAAuB,UAACkD,CAAD,EAAII,CAAJ,EAAOiC,CAAP;AAAA,qBAAaD,WAAWC,CAAX,CAAb;AAAA,aAAvB;AACD,WATD,MASO,IAAIjG,KAAK4F,WAAL,KAAqB,KAAzB,EAAgC;AACrC,gBAAMM,iBAAiB,EAAvB;AACA1B,oBAAQb,GAAR,CAAY,aAAK;AACf,kBAAMwC,YAAY/D,QAAQuB,GAAR,CAAY;AAAA,uBAC5B3B,UAAUiD,aAAV,CAAwBrB,CAAxB,EAA2B7F,CAA3B,EAA8BmH,KAA9B,EAD4B;AAAA,eAAZ,CAAlB;AAGAgB,6BAAetC,CAAf,IAAoBiC,oBAAoBM,SAApB,CAApB;AACD,aALD;AAMA,iBAAKzF,eAAL,GAAuB,UAACkD,CAAD,EAAII,CAAJ,EAAOiC,CAAP;AAAA,qBAAaC,eAAetC,CAAf,EAAkBqC,CAAlB,CAAb;AAAA,aAAvB;AACD,WATM,MASA,IAAIjG,KAAK4F,WAAL,KAAqB,KAAzB,EAAgC;AACrC,gBAAMQ,iBAAiB,EAAvB;AACAhE,oBAAQuB,GAAR,CAAY,aAAK;AACf,kBAAM0C,YAAY7B,QAAQb,GAAR,CAAY;AAAA,uBAC5B3B,UAAUiD,aAAV,CAAwBlH,CAAxB,EAA2BiG,CAA3B,EAA8BkB,KAA9B,EAD4B;AAAA,eAAZ,CAAlB;AAGAkB,6BAAepC,CAAf,IAAoB6B,oBAAoBQ,SAApB,CAApB;AACD,aALD;AAMA,iBAAK3F,eAAL,GAAuB,UAACkD,CAAD,EAAII,CAAJ,EAAOiC,CAAP;AAAA,qBAAaG,eAAepC,CAAf,EAAkBiC,CAAlB,CAAb;AAAA,aAAvB;AACD;AACF;;AAED,aAAKpF,eAAL,GACE,KAAKV,KAAL,CAAWmG,YAAX,IAA2B,KAAKnG,KAAL,CAAWmG,YAAX,CAAwBC,aAAnD,GACI,UAACrB,KAAD,EAAQiB,SAAR,EAAmBE,SAAnB,EAAiC;AACjC,cAAMG,UAAU,EAAhB;AADiC;AAAA;AAAA;;AAAA;AAEjC,iCAAgBC,OAAOC,IAAP,CAAYjD,YAAY,EAAxB,CAAhB,8HAA6C;AAAA,kBAAlC5F,CAAkC;;AAC3C,kBAAM8I,OAAOlD,SAAS5F,CAAT,CAAb;AACA,kBAAIwI,UAAUxI,CAAV,MAAiB,IAArB,EAA2B;AACzB2I,wBAAQG,IAAR,IAAgBN,UAAUxI,CAAV,CAAhB;AACD;AACF;AAPgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAQjC,kCAAgB4I,OAAOC,IAAP,CAAYxE,YAAY,EAAxB,CAAhB,mIAA6C;AAAA,kBAAlCrE,EAAkC;;AAC3C,kBAAM8I,OAAOzE,SAASrE,EAAT,CAAb;AACA,kBAAIsI,UAAUtI,EAAV,MAAiB,IAArB,EAA2B;AACzB2I,wBAAQG,IAAR,IAAgBR,UAAUtI,EAAV,CAAhB;AACD;AACF;AAbgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAcjC,iBAAO;AAAA,mBACL,OAAKsC,KAAL,CAAWmG,YAAX,CAAwBC,aAAxB,CACEjD,CADF,EAEE4B,KAFF,EAGEsB,OAHF,EAIExE,SAJF,CADK;AAAA,WAAP;AAOD,SAtBH,GAuBI,IAxBN;;AA0BA,eACE;AAAA;AAAA,YAAK,WAAU,mBAAf,EAAmC,KAAK,KAAKzB,kBAA7C,EAAiE,UAAU,kBAAC+C,CAAD;AAAA,qBAAO,OAAKsD,sBAAL,CAA4BtD,CAA5B,CAAP;AAAA,aAA3E;AACE;AAAA;AAAA,cAAK,WAAU,wBAAf;AAEG,iBAAKuD,eAAL;AAFH;AADF,SADF;AAiBD;AArlB4B;;AAAA;AAAA,IAEHC,gBAAMC,aAFH;;AAwlB/B7G,gBAAc8G,YAAd,GAA6B/E,qBAAU+E,YAAvC;AACA9G,gBAAc+G,SAAd,GAA0BhF,qBAAUgF,SAApC;AACA/G,gBAAc8G,YAAd,CAA2BlB,wBAA3B,GAAsDtH,sBAAtD;AACA0B,gBAAc8G,YAAd,CAA2BV,YAA3B,GAA0C,EAA1C;AACApG,gBAAc+G,SAAd,CAAwBnB,wBAAxB,GAAmDoB,oBAAUC,IAA7D;AACAjH,gBAAc+G,SAAd,CAAwBX,YAAxB,GAAuCY,oBAAUE,MAAjD;AACA,SAAOlH,aAAP;AACD;;IAEKmH,iB;;;;;;;;;;;6BACK;AACP,UAAMrF,YAAY,IAAIC,oBAAJ,CAAc,KAAK9B,KAAnB,CAAlB;AACA,UAAMqE,UAAUxC,UAAUyC,UAAV,EAAhB;AACA,UAAMrC,UAAUJ,UAAUK,UAAV,EAAhB;AACA,UAAImC,QAAQpG,MAAR,KAAmB,CAAvB,EAA0B;AACxBoG,gBAAQI,IAAR,CAAa,EAAb;AACD;AACD,UAAIxC,QAAQhE,MAAR,KAAmB,CAAvB,EAA0B;AACxBgE,gBAAQwC,IAAR,CAAa,EAAb;AACD;;AAED,UAAM0C,YAAYtF,UAAU7B,KAAV,CAAgBgC,IAAhB,CAAqBwB,GAArB,CAAyB;AAAA,eAAKC,CAAL;AAAA,OAAzB,CAAlB;AACA,UAAIxB,QAAQhE,MAAR,KAAmB,CAAnB,IAAwBgE,QAAQ,CAAR,EAAWhE,MAAX,KAAsB,CAAlD,EAAqD;AACnDkJ,kBAAU1C,IAAV,CAAe,KAAKzE,KAAL,CAAWmE,cAA1B;AACD,OAFD,MAEO;AACLlC,gBAAQuB,GAAR,CAAY;AAAA,iBAAK2D,UAAU1C,IAAV,CAAeZ,EAAEZ,IAAF,CAAO,GAAP,CAAf,CAAL;AAAA,SAAZ;AACD;;AAED,UAAMmE,SAAS/C,QAAQb,GAAR,CAAY,aAAK;AAC9B,YAAM6D,MAAM5D,EAAED,GAAF,CAAM;AAAA,iBAAK5F,CAAL;AAAA,SAAN,CAAZ;AACAqE,gBAAQuB,GAAR,CAAY,aAAK;AACf,cAAMsC,IAAIjE,UAAUiD,aAAV,CAAwBrB,CAAxB,EAA2BI,CAA3B,EAA8BkB,KAA9B,EAAV;AACAsC,cAAI5C,IAAJ,CAASqB,IAAIA,CAAJ,GAAQ,EAAjB;AACD,SAHD;AAIA,eAAOuB,GAAP;AACD,OAPc,CAAf;;AASAD,aAAOE,OAAP,CAAeH,SAAf;;AAEA,aACE;AACE,eAAOC,OAAO5D,GAAP,CAAW;AAAA,iBAAKC,EAAER,IAAF,CAAO,IAAP,CAAL;AAAA,SAAX,EAA8BA,IAA9B,CAAmC,IAAnC,CADT;AAEE,eAAO,EAAE5B,OAAOkG,OAAOC,UAAP,GAAoB,CAA7B,EAAgCC,QAAQF,OAAOG,WAAP,GAAqB,CAA7D,EAFT;AAGE,kBAAU;AAHZ,QADF;AAOD;;;;EArC6Bf,gBAAMC,a;;AAwCtCM,kBAAkBL,YAAlB,GAAiC/E,qBAAU+E,YAA3C;AACAK,kBAAkBJ,SAAlB,GAA8BhF,qBAAUgF,SAAxC;;kBAEe;AACba,SAAO/H,cADM;AAEb,mBAAiBA,aAAa,EAAE6F,aAAa,MAAf,EAAb,CAFJ;AAGb,uBAAqB7F,aAAa,EAAE6F,aAAa,KAAf,EAAb,CAHR;AAIb,uBAAqB7F,aAAa,EAAE6F,aAAa,KAAf,EAAb,CAJR;AAKb,oBAAkByB;AALL,C","file":"TableRenderers.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { PivotData } from './Utilities';\nimport { concat } from 'lodash';\nimport raf from 'rc-util/lib/raf';\nimport $ from 'jquery';\n\n// helper function for setting row/col-span in pivotTableRenderer\nconst spanSize = function (arr, i, j) {\n let x;\n if (i !== 0) {\n let asc, end;\n let noDraw = true;\n for (\n x = 0, end = j, asc = end >= 0;\n asc ? x <= end : x >= end;\n asc ? x++ : x--\n ) {\n if (arr[i - 1][x] !== arr[i][x]) {\n noDraw = false;\n }\n }\n if (noDraw) {\n return -1;\n }\n }\n let len = 0;\n while (i + len < arr.length) {\n let asc1, end1;\n let stop = false;\n for (\n x = 0, end1 = j, asc1 = end1 >= 0;\n asc1 ? x <= end1 : x >= end1;\n asc1 ? x++ : x--\n ) {\n if (arr[i][x] !== arr[i + len][x]) {\n stop = true;\n }\n }\n if (stop) {\n break;\n }\n len++;\n }\n return len;\n};\n\nfunction redColorScaleGenerator(values) {\n const min = Math.min.apply(Math, values);\n const max = Math.max.apply(Math, values);\n return x => {\n // eslint-disable-next-line no-magic-numbers\n const nonRed = 255 - Math.round((255 * (x - min)) / (max - min));\n return { backgroundColor: `rgb(255,${nonRed},${nonRed})` };\n };\n}\n\nfunction getScrollbarWidth() {\n const scrollDiv = document.createElement('div');\n scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n return scrollbarWidth;\n}\n\nconst DEFAULT_ROW_HEIGHT = 32; // 默认表格单行高度\nconst OFFSET_HORIZONTAL = 300; // 横向滚动前、后偏移量\n\n\nfunction makeRenderer(opts = {}) {\n const POSITION_TABLE_BODY = 'tableBody'; // 表示纵向滚动响应位置在表格内容上\n class TableRenderer extends React.PureComponent {\n constructor(props) {\n super(props);\n this.getHorizontalDom = (dom) => {\n this.horizontalDom = dom || this.horizontalDom;\n };\n this.getVirtualTableRef = (dom) => {\n this.virtualTable = dom || this.virtualTable;\n this.setVirtualSize(dom);\n };\n this.valueCellColors = () => { };\n this.rowTotalColors = () => { };\n this.colTotalColors = () => { };\n this.getClickHandler = null;\n this.virtualTable = null;\n this.tableHeader = null;\n this.virtualTableWidth = 0; // 虚拟表格宽度\n this.scrollBarWidth = getScrollbarWidth(); // 滚动条宽度\n this.scrollDom = null; // 纵向假滚动条节点\n this.horizontalDom = null; // 横向滚动节点\n this.verticalDom = null; // 纵向滚动节点\n this.mousePosition = ''; // 鼠标所在位置,用于区别纵向滚动由哪个节点相应的\n this.state = {\n totalHeight: 0, // 表格内容区域总高度\n totalWidth: 0, // 表格内容区域总宽度\n hiddenLeftStyle: { // 左侧隐藏样式\n width: `0px`,\n },\n hiddenRightStyle: { // 右侧隐藏样式\n width: `0px`,\n },\n colSize: [0, 0], // 可视区域显示的列号\n };\n }\n componentDidMount() {\n this.setVirtualSize();\n this.setHorizontalData();\n // 同步两边的滚动\n $('.pivot-table-body').on('scroll', this.asyncTableScroll);\n }\n asyncTableScroll() {\n var scrollLeft = $(this).prop('scrollLeft');\n $('.pivot-table-header').prop('scrollLeft', scrollLeft);\n }\n // 设置虚拟表格高度、宽度\n setVirtualSize(dom) {\n const virtualTable = dom || this.virtualTable;\n const width = virtualTable.clientWidth;\n if (width) {\n this.virtualTableWidth = width;\n }\n };\n\n // getVirtualTableRef(dom) {\n // this.virtualTable = dom || this.virtualTable;\n // this.setVirtualSize(dom);\n // };\n\n getTableHeaderDom(dom) {\n this.tableHeader = dom || this.tableHeader;\n };\n\n getVerticalDom(dom) {\n this.verticalDom = dom || this.verticalDom;\n };\n\n // 设置虚拟表格横向数据;在横向滚动时使用\n setHorizontalData() {\n const scrollLeft = this.horizontalDom && this.horizontalDom.scrollLeft;\n const pivotData = new PivotData(this.props);\n const rowAttrs = pivotData.props.rows;\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n const part1 = rowAttrs.length ? rowAttrs : [undefined]\n const part2 = rowAttrs.length !== 0 && colKeys.length !== 0 ? [undefined] : []\n const part3 = colKeys\n const part4 = aggregatorGather\n const columns = [...part1, ...part2, ...part3, ...part4]\n const { colSize: oColSize } = this.state;\n // 表格内容可视区域的宽度\n const width = this.virtualTableWidth;\n const colSize = [];\n let totalWidth = 0;\n let hiddenLeftWidth = 0; // 左侧隐藏未被渲染的宽度\n let hiddenRigthWidth = 0; // 右侧隐藏未被渲染的宽度\n let currentStep = 0; // 0: 前面被隐藏阶段;1: 可视区域阶段;2: 后面不可见区域\n if (!width) {\n return;\n }\n columns.forEach((item, i) => {\n // const { width: colWidth = 150 } = item;\n const colWidth = 120\n totalWidth += colWidth;\n if (currentStep === 0) {\n if (totalWidth >= scrollLeft - OFFSET_HORIZONTAL) {\n // 根据 scrollLeft 算出可视区域起始行号\n colSize[0] = i;\n currentStep += 1;\n } else {\n hiddenLeftWidth += colWidth;\n }\n }\n if (currentStep === 1 && totalWidth > scrollLeft + width + OFFSET_HORIZONTAL) {\n // 计算出可视区域结束列号\n colSize[1] = i;\n currentStep += 1;\n }\n if (currentStep === 2) {\n hiddenRigthWidth += colWidth;\n }\n });\n\n if (oColSize.join() !== colSize.join()) {\n // 可视区域的列号有了变化才重新进行渲染\n this.setState({\n hiddenLeftStyle: { width: `${hiddenLeftWidth}px` },\n hiddenRightStyle: { width: `${hiddenRigthWidth}px` },\n colSize,\n totalWidth,\n });\n }\n };\n\n handleHorizontalScroll(e) {\n e.stopPropagation();\n const scrollLeft = e.target.scrollLeft;\n // this.scrollDom && (this.scrollDom.scrollLeft = scrollLeft);\n this.setHorizontalData();\n };\n\n handleBodyMouseEnter() {\n this.mousePosition = POSITION_TABLE_BODY;\n };\n\n tableHeaderRender() {\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols.length ? concat(pivotData.props.cols, undefined) : [undefined, undefined];\n const rowAttrs = pivotData.props.rows;\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n return (\n <div className=\"pivot-table-header\">\n <table className=\"pivotTable\">\n <colgroup>\n {\n rowAttrs.length === 0 && colKeys.length === 0 && (\n <col style={{ width: '120px' }} />\n )\n }\n\n {(rowAttrs.length !== 0 && (\n rowAttrs.map((r, i) => {\n return (\n <col style={{ width: '120px' }} />\n );\n })\n ))}\n {colKeys.length && (\n <col style={{ width: '120px' }} />\n ) || null}\n {colKeys.map((colKey, i) => {\n return (\n <col style={{ width: '120px' }} />\n );\n })}\n {(\n aggregatorGather.map((_, o) => {\n return (\n <col style={{ width: '120px' }} />\n )\n })\n ) || <React.Fragment />}\n </colgroup>\n <thead>\n {colAttrs.map((c, j) => {\n return (\n <tr key={`${c}${j}`}>\n\n {\n rowAttrs.length === 0 && colKeys.length === 0 && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} />\n ) || null\n }\n\n {j === 0 && rowAttrs.length !== 0\n && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} style={{ position: 'sticky', zIndex: 2, left: 0, top: 0 }} />\n )\n || (rowAttrs.length !== 0 && j === colAttrs.length - 1 && (\n rowAttrs.map((r, i) => {\n return (\n <th style={{ position: 'sticky', zIndex: 2, left: i * 120 + 'px' }} className=\"pivotAxisLabel\" key={`rowAttr${i}`}>\n {r}\n </th>\n );\n })\n ))}\n\n {colKeys.length && (\n <th style={{ position: 'sticky', zIndex: 2, left: rowAttrs.length * 120 + 'px', top: j * 30 + 'px' }} className=\"pvtAxisLabel\">{c}</th>\n ) || null}\n\n {colKeys.map((colKey, i) => {\n const x = spanSize(colKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n className=\"pivotColLabel\"\n key={`colKey${i}${j}`}\n colSpan={x}\n style={{ position: 'sticky', zIndex: 1, top: j * 30 + 'px' }}\n >\n {colKey[j]}\n </th>\n );\n })}\n\n\n {/* total */}\n {(j === 0) && (\n <th\n className=\"pivotTotalLabel\"\n key={`pivotTotalLabel${j}`}\n colSpan={aggregatorGather.length}\n rowSpan={\n colAttrs.length - (aggregatorGather.length === 0 ? 0 : 1)\n }\n >\n Totals\n </th>\n ) || <React.Fragment />}\n\n {/* total 细分维度 */}\n {(j === colAttrs.length - 1) && (\n aggregatorGather.map((_, o) => {\n return (\n <th\n key={`Total${j}${o}`}\n className=\"pivotColLabel pivotRowTotal\"\n >\n {`${_.vals.join(' ')}(${_.aggregatorName})`}\n </th>)\n })\n ) || <React.Fragment />}\n\n </tr>\n );\n })}\n </thead>\n </table>\n </div>\n );\n };\n\n tableBodyRender() {\n const { hiddenBottomStyle, hiddenLeftStyle, hiddenRightStyle, colSize, totalHeight } = this.state;\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols.length ? concat(pivotData.props.cols, undefined) : [undefined, undefined];\n const rowAttrs = pivotData.props.rows;\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n\n\n const part1 = rowAttrs.length ? rowAttrs : [undefined]\n const part2 = rowAttrs.length !== 0 && colKeys.length !== 0 ? [undefined] : []\n const part3 = colKeys\n const part4 = aggregatorGather\n const columns = [...part1, ...part2, ...part3, ...part4]\n\n // const showCols = columns.slice(...colSize);\n const showCols = columns;\n const cols = [];\n // if (colSize[0]) {\n // cols.push(<col key=\"first\" width={hiddenLeftStyle.width} />);\n // }\n showCols.forEach((col, i) => {\n const width = 120\n cols.push(<col key={`${colSize[0] + i}`} width={`${width}px`} />);\n });\n // if (colSize[1]) {\n // cols.push(<col key=\"last\" width={hiddenRightStyle.width} />);\n // }\n\n return (\n <div className=\"pivot-table-body\" ref={this.getHorizontalDom} onMouseEnter={() => this.handleBodyMouseEnter()}>\n <div className=\"table-body-total\">\n <table className=\"pivotTable\">\n <colgroup>\n {cols}\n </colgroup>\n <thead>\n {colAttrs.map((c, j) => {\n return (\n <tr key={`${c}${j}`}>\n\n {\n rowAttrs.length === 0 && colKeys.length === 0 && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} />\n ) || null\n }\n\n {j === 0 && rowAttrs.length !== 0\n && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} style={{ position: 'sticky', zIndex: 3, left: 0, top: 0 }} />\n )\n || (rowAttrs.length !== 0 && j === colAttrs.length - 1 && (\n rowAttrs.map((r, i) => {\n return (\n <th style={{ position: 'sticky', zIndex: 2, left: i * 120 + 'px', top: j * 30 + 'px' }} className=\"pivotAxisLabel\" key={`rowAttr${i}`}>\n {r}\n </th>\n );\n })\n ))}\n\n {colKeys.length && (\n <th style={{ position: 'sticky', zIndex: 2, left: rowAttrs.length * 120 + 'px', top: j * 30 + 'px' }} className=\"pvtAxisLabel\">{c}</th>\n ) || null}\n\n {colKeys.map((colKey, i) => {\n const x = spanSize(colKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n className=\"pivotColLabel\"\n key={`colKey${i}${j}`}\n colSpan={x}\n style={{ position: 'sticky', zIndex: 1, top: j * 30 + 'px' }}\n >\n {colKey[j]}\n </th>\n );\n })}\n\n\n {/* total */}\n {(j === 0) && (\n <th\n className=\"pivotTotalLabel\"\n key={`pivotTotalLabel${j}`}\n colSpan={aggregatorGather.length}\n rowSpan={\n colAttrs.length - (aggregatorGather.length === 0 ? 0 : 1)\n }\n style={{ position: 'sticky', zIndex: 2, top: j * 30 + 'px' }}\n >\n Totals\n </th>\n ) || <React.Fragment />}\n\n {/* total 细分维度 */}\n {(j === colAttrs.length - 1) && (\n aggregatorGather.map((_, o) => {\n return (\n <th\n key={`Total${j}${o}`}\n className=\"pivotColLabel pivotRowTotal\"\n style={{ position: 'sticky', zIndex: 2, top: j * 30 + 'px' }}\n >\n {`${_.vals.join(' ')}(${_.aggregatorName})`}\n </th>)\n })\n ) || <React.Fragment />}\n\n </tr>\n );\n })}\n </thead>\n <tbody>\n {rowKeys.map((rowKey, i) => {\n return (\n <tr key={`rowKeyRow${i}`}>\n {rowKey.length\n &&\n rowKey.map((txt, j) => {\n const x = spanSize(rowKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n key={`rowKeyLabel${i}-${j}`}\n className=\"pivotRowLabel\"\n rowSpan={x}\n colSpan={\n j === rowAttrs.length - 1 && colKeys.length !== 0\n ? 2\n : 1\n }\n style={{ position: 'sticky', zIndex: 1, left: (j) * 120 + 'px' }}\n >\n {txt}\n </th>\n );\n })\n ||\n <th\n key={`rowKeyLabel${i}`}\n className=\"pivotRowLabel\"\n >\n { }\n </th>}\n {colKeys.map((colKey, j) => {\n const aggregator = pivotData.getAggregator(rowKey, colKey);\n return (\n <td\n className=\"pivotVal\"\n key={`pivotVal${i}-${j}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(aggregator.value(), rowKey, colKey)\n }\n style={this.valueCellColors(\n rowKey,\n colKey,\n aggregator.value()\n )}\n >\n {aggregator.format(aggregator.value())}\n </td>\n );\n })}\n {aggregatorGather.map((_, j) => {\n const totalAggregator = pivotData.getAggregator([...rowKey, _.aggregatorName], []);\n return (<td\n className=\"pivotTotal pivotRowTotal\"\n key={`pivotTotal${i}-${j}-${_.aggregatorName}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(totalAggregator.value(), rowKey, [null])\n }\n style={this.colTotalColors(totalAggregator.value())}\n >\n {totalAggregator.format(totalAggregator.value())}\n </td>)\n })}\n </tr>\n );\n })}\n\n <tr>\n {\n (\n <th\n className=\"pivotTotalLabel\"\n colSpan={rowAttrs.length + (colKeys.length === 0 ? 0 : 1)}\n style={{ position: 'sticky', zIndex: 2, left: 0 }}\n >\n Totals\n </th>\n ) || <React.Fragment />\n }\n\n {colKeys.map((colKey, i) => {\n const totalAggregator = pivotData.getAggregator([], colKey);\n return (\n <td\n className=\"pivotTotal\"\n key={`total${i}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(totalAggregator.value(), [null], colKey)\n }\n style={this.rowTotalColors(totalAggregator.value())}\n >\n {totalAggregator.format(totalAggregator.value())}\n </td>\n );\n })}\n\n {(\n aggregatorGather.map((_, o) => {\n const grandTotalAggregator = pivotData.getAggregator([], [], _.aggregatorName);\n return (\n <td\n key={`aggregatorGather${o}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(grandTotalAggregator.value(), [null], [null])\n }\n className=\"pivotGrandTotal pivotRowTotal\"\n >\n {grandTotalAggregator.format(grandTotalAggregator.value())}\n </td>)\n })) || <React.Fragment />\n }\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n );\n };\n\n handleScriptLoad() {\n $(document).ready(function () {\n $('.pivotTable').dataTable({ scrollY: '50vh', scrollCollapse: true, paging: false });\n });\n }\n\n componentWillUnmount() {\n $('.pivot-table-body').off('scroll')\n }\n render() {\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols.length ? concat(pivotData.props.cols, undefined) : [undefined, undefined];\n const rowAttrs = pivotData.props.rows;\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n\n this.valueCellColors = () => { };\n this.rowTotalColors = () => { };\n this.colTotalColors = () => { };\n // todo\n if (opts.heatmapMode) {\n const colorScaleGenerator = this.props.tableColorScaleGenerator;\n if (opts.heatmapMode === 'full') {\n const allValues = [];\n rowKeys.map(r =>\n colKeys.map(c =>\n allValues.push(pivotData.getAggregator(r, c).value())\n )\n );\n const colorScale = colorScaleGenerator(allValues);\n this.valueCellColors = (r, c, v) => colorScale(v);\n } else if (opts.heatmapMode === 'row') {\n const rowColorScales = {};\n rowKeys.map(r => {\n const rowValues = colKeys.map(x =>\n pivotData.getAggregator(r, x).value()\n );\n rowColorScales[r] = colorScaleGenerator(rowValues);\n });\n this.valueCellColors = (r, c, v) => rowColorScales[r](v);\n } else if (opts.heatmapMode === 'col') {\n const colColorScales = {};\n colKeys.map(c => {\n const colValues = rowKeys.map(x =>\n pivotData.getAggregator(x, c).value()\n );\n colColorScales[c] = colorScaleGenerator(colValues);\n });\n this.valueCellColors = (r, c, v) => colColorScales[c](v);\n }\n }\n\n this.getClickHandler =\n this.props.tableOptions && this.props.tableOptions.clickCallback\n ? (value, rowValues, colValues) => {\n const filters = {};\n for (const i of Object.keys(colAttrs || {})) {\n const attr = colAttrs[i];\n if (colValues[i] !== null) {\n filters[attr] = colValues[i];\n }\n }\n for (const i of Object.keys(rowAttrs || {})) {\n const attr = rowAttrs[i];\n if (rowValues[i] !== null) {\n filters[attr] = rowValues[i];\n }\n }\n return e =>\n this.props.tableOptions.clickCallback(\n e,\n value,\n filters,\n pivotData\n );\n }\n : null;\n\n return (\n <div className=\"use-virtual-table\" ref={this.getVirtualTableRef} onScroll={(e) => this.handleHorizontalScroll(e)}>\n <div className=\"use-virtual-table-body\">\n {/* {this.tableHeaderRender()} */}\n {this.tableBodyRender()}\n </div>\n {/* <div\n className=\"bar-virtual-vertical-scroll\"\n style={{ height: `${this.virtualTableHeight - (this.tableHeader.clientHeight || 34)}px`, width: `${this.scrollBarWidth}px` }}\n onScroll={this.handleScroll}\n ref={this.getScrollDom}\n onMouseEnter={this.handleVerScrollMouseEnter}\n >\n <div className='bar-body' style={{ height: `${totalHeight}px` }} />\n </div> */}\n </div>\n );\n }\n }\n\n TableRenderer.defaultProps = PivotData.defaultProps;\n TableRenderer.propTypes = PivotData.propTypes;\n TableRenderer.defaultProps.tableColorScaleGenerator = redColorScaleGenerator;\n TableRenderer.defaultProps.tableOptions = {};\n TableRenderer.propTypes.tableColorScaleGenerator = PropTypes.func;\n TableRenderer.propTypes.tableOptions = PropTypes.object;\n return TableRenderer;\n}\n\nclass TSVExportRenderer extends React.PureComponent {\n render() {\n const pivotData = new PivotData(this.props);\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n if (rowKeys.length === 0) {\n rowKeys.push([]);\n }\n if (colKeys.length === 0) {\n colKeys.push([]);\n }\n\n const headerRow = pivotData.props.rows.map(r => r);\n if (colKeys.length === 1 && colKeys[0].length === 0) {\n headerRow.push(this.props.aggregatorName);\n } else {\n colKeys.map(c => headerRow.push(c.join('-')));\n }\n\n const result = rowKeys.map(r => {\n const row = r.map(x => x);\n colKeys.map(c => {\n const v = pivotData.getAggregator(r, c).value();\n row.push(v ? v : '');\n });\n return row;\n });\n\n result.unshift(headerRow);\n\n return (\n <textarea\n value={result.map(r => r.join('\\t')).join('\\n')}\n style={{ width: window.innerWidth / 2, height: window.innerHeight / 2 }}\n readOnly={true}\n />\n );\n }\n}\n\nTSVExportRenderer.defaultProps = PivotData.defaultProps;\nTSVExportRenderer.propTypes = PivotData.propTypes;\n\nexport default {\n Table: makeRenderer(),\n 'Table Heatmap': makeRenderer({ heatmapMode: 'full' }),\n 'Table Col Heatmap': makeRenderer({ heatmapMode: 'col' }),\n 'Table Row Heatmap': makeRenderer({ heatmapMode: 'row' }),\n 'Exportable TSV': TSVExportRenderer,\n};\n"]}
{"version":3,"sources":["src/TableRenderers.jsx"],"names":["spanSize","arr","i","j","x","asc","end","noDraw","len","length","asc1","end1","stop","redColorScaleGenerator","values","min","Math","apply","max","nonRed","round","backgroundColor","DEFAULT_ROW_HEIGHT","makeRenderer","opts","TableRenderer","props","valueCellColors","rowTotalColors","colTotalColors","getClickHandler","pivotData","PivotData","colAttrs","cols","undefined","rowAttrs","rows","colKeys","getColKeys","aggregatorGather","width","map","r","colKey","_","o","c","position","zIndex","left","top","vals","join","aggregatorName","rowKeys","getRowKeys","part1","part2","part3","part4","columns","showCols","forEach","col","push","rowKey","txt","aggregator","getAggregator","value","format","totalAggregator","grandTotalAggregator","document","ready","dataTable","scrollY","scrollCollapse","paging","heatmapMode","colorScaleGenerator","tableColorScaleGenerator","allValues","colorScale","v","rowColorScales","rowValues","colColorScales","colValues","tableOptions","clickCallback","filters","Object","keys","attr","e","tableBodyRender","React","PureComponent","defaultProps","propTypes","PropTypes","func","object","TSVExportRenderer","headerRow","result","row","unshift","window","innerWidth","height","innerHeight","Table"],"mappings":"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","file":"TableRenderers.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { PivotData } from './Utilities';\nimport { concat } from 'lodash';\nimport raf from 'rc-util/lib/raf';\nimport $ from 'jquery';\n\n// helper function for setting row/col-span in pivotTableRenderer\nconst spanSize = function (arr, i, j) {\n let x;\n if (i !== 0) {\n let asc, end;\n let noDraw = true;\n for (\n x = 0, end = j, asc = end >= 0;\n asc ? x <= end : x >= end;\n asc ? x++ : x--\n ) {\n if (arr[i - 1][x] !== arr[i][x]) {\n noDraw = false;\n }\n }\n if (noDraw) {\n return -1;\n }\n }\n let len = 0;\n while (i + len < arr.length) {\n let asc1, end1;\n let stop = false;\n for (\n x = 0, end1 = j, asc1 = end1 >= 0;\n asc1 ? x <= end1 : x >= end1;\n asc1 ? x++ : x--\n ) {\n if (arr[i][x] !== arr[i + len][x]) {\n stop = true;\n }\n }\n if (stop) {\n break;\n }\n len++;\n }\n return len;\n};\n\nfunction redColorScaleGenerator(values) {\n const min = Math.min.apply(Math, values);\n const max = Math.max.apply(Math, values);\n return x => {\n // eslint-disable-next-line no-magic-numbers\n const nonRed = 255 - Math.round((255 * (x - min)) / (max - min));\n return { backgroundColor: `rgb(255,${nonRed},${nonRed})` };\n };\n}\n\nconst DEFAULT_ROW_HEIGHT = 32; // 默认表格单行高度\n\nfunction makeRenderer(opts = {}) {\n class TableRenderer extends React.PureComponent {\n constructor(props) {\n super(props);\n this.valueCellColors = () => { };\n this.rowTotalColors = () => { };\n this.colTotalColors = () => { };\n this.getClickHandler = null;\n }\n componentDidMount() {\n }\n\n tableHeaderRender() {\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols.length ? concat(pivotData.props.cols, undefined) : [undefined, undefined];\n const rowAttrs = pivotData.props.rows;\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n return (\n <div className=\"pivot-table-header\">\n <table className=\"pivotTable\">\n <colgroup>\n {\n rowAttrs.length === 0 && colKeys.length === 0 && (\n <col style={{ width: '120px' }} />\n )\n }\n\n {(rowAttrs.length !== 0 && (\n rowAttrs.map((r, i) => {\n return (\n <col style={{ width: '120px' }} />\n );\n })\n ))}\n {colKeys.length && (\n <col style={{ width: '120px' }} />\n ) || null}\n {colKeys.map((colKey, i) => {\n return (\n <col style={{ width: '120px' }} />\n );\n })}\n {(\n aggregatorGather.map((_, o) => {\n return (\n <col style={{ width: '120px' }} />\n )\n })\n ) || <React.Fragment />}\n </colgroup>\n <thead>\n {colAttrs.map((c, j) => {\n return (\n <tr key={`${c}${j}`}>\n\n {\n rowAttrs.length === 0 && colKeys.length === 0 && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} />\n ) || null\n }\n\n {j === 0 && rowAttrs.length !== 0\n && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} style={{ position: 'sticky', zIndex: 2, left: 0, top: 0 }} />\n )\n || (rowAttrs.length !== 0 && j === colAttrs.length - 1 && (\n rowAttrs.map((r, i) => {\n return (\n <th style={{ position: 'sticky', zIndex: 2, left: i * 120 + 'px' }} className=\"pivotAxisLabel\" key={`rowAttr${i}`}>\n {r}\n </th>\n );\n })\n ))}\n\n {colKeys.length && (\n <th style={{ position: 'sticky', zIndex: 2, left: rowAttrs.length * 120 + 'px', top: j * 30 + 'px' }} className=\"pvtAxisLabel\">{c}</th>\n ) || null}\n\n {colKeys.map((colKey, i) => {\n const x = spanSize(colKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n className=\"pivotColLabel\"\n key={`colKey${i}${j}`}\n colSpan={x}\n style={{ position: 'sticky', zIndex: 1, top: j * 30 + 'px' }}\n >\n {colKey[j]}\n </th>\n );\n })}\n\n\n {/* total */}\n {(j === 0) && (\n <th\n className=\"pivotTotalLabel\"\n key={`pivotTotalLabel${j}`}\n colSpan={aggregatorGather.length}\n rowSpan={\n colAttrs.length - (aggregatorGather.length === 0 ? 0 : 1)\n }\n >\n Totals\n </th>\n ) || <React.Fragment />}\n\n {/* total 细分维度 */}\n {(j === colAttrs.length - 1) && (\n aggregatorGather.map((_, o) => {\n return (\n <th\n key={`Total${j}${o}`}\n className=\"pivotColLabel pivotRowTotal\"\n >\n {`${_.vals.join(' ')}(${_.aggregatorName})`}\n </th>)\n })\n ) || <React.Fragment />}\n\n </tr>\n );\n })}\n </thead>\n </table>\n </div>\n );\n };\n\n tableBodyRender() {\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols.length ? concat(pivotData.props.cols, undefined) : [undefined, undefined];\n const rowAttrs = pivotData.props.rows;\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n\n\n const part1 = rowAttrs.length ? rowAttrs : [undefined]\n const part2 = rowAttrs.length !== 0 && colKeys.length !== 0 ? [undefined] : []\n const part3 = colKeys\n const part4 = aggregatorGather\n const columns = [...part1, ...part2, ...part3, ...part4]\n\n // const showCols = columns.slice(...colSize);\n const showCols = columns;\n const cols = [];\n showCols.forEach((col, i) => {\n const width = 120\n cols.push(<col key={`${i}`} width={`${width}px`} />);\n });\n return (\n <div className=\"pivot-table-body\">\n <div className=\"table-body-total\">\n <table className=\"pivotTable\">\n <colgroup>\n {cols}\n </colgroup>\n <thead>\n {colAttrs.map((c, j) => {\n return (\n <tr key={`${c}${j}`}>\n\n {\n rowAttrs.length === 0 && colKeys.length === 0 && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} />\n ) || null\n }\n\n {j === 0 && rowAttrs.length !== 0\n && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length - 1} style={{ position: 'sticky', zIndex: 3, left: 0, top: 0 }} />\n )\n || (rowAttrs.length !== 0 && j === colAttrs.length - 1 && (\n rowAttrs.map((r, i) => {\n return (\n <th style={{ position: 'sticky', zIndex: 2, left: i * 120 + 'px', top: j * 30 + 'px' }} className=\"pivotAxisLabel\" key={`rowAttr${i}`}>\n {r}\n </th>\n );\n })\n ))}\n\n {colKeys.length && (\n <th style={{ position: 'sticky', zIndex: 2, left: rowAttrs.length * 120 + 'px', top: j * 30 + 'px' }} className=\"pvtAxisLabel\">{c}</th>\n ) || null}\n\n {colKeys.map((colKey, i) => {\n const x = spanSize(colKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n className=\"pivotColLabel\"\n key={`colKey${i}${j}`}\n colSpan={x}\n style={{ position: 'sticky', zIndex: 1, top: j * 30 + 'px' }}\n >\n {colKey[j]}\n </th>\n );\n })}\n\n\n {/* total */}\n {(j === 0) && (\n <th\n className=\"pivotTotalLabel\"\n key={`pivotTotalLabel${j}`}\n colSpan={aggregatorGather.length}\n rowSpan={\n colAttrs.length - (aggregatorGather.length === 0 ? 0 : 1)\n }\n style={{ position: 'sticky', zIndex: 2, top: j * 30 + 'px' }}\n >\n Totals\n </th>\n ) || <React.Fragment />}\n\n {/* total 细分维度 */}\n {(j === colAttrs.length - 1) && (\n aggregatorGather.map((_, o) => {\n return (\n <th\n key={`Total${j}${o}`}\n className=\"pivotColLabel pivotRowTotal\"\n style={{ position: 'sticky', zIndex: 2, top: j * 30 + 'px' }}\n >\n {`${_.vals.join(' ')}(${_.aggregatorName})`}\n </th>)\n })\n ) || <React.Fragment />}\n\n </tr>\n );\n })}\n </thead>\n <tbody>\n {rowKeys.map((rowKey, i) => {\n return (\n <tr key={`rowKeyRow${i}`}>\n {rowKey.length\n &&\n rowKey.map((txt, j) => {\n const x = spanSize(rowKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n key={`rowKeyLabel${i}-${j}`}\n className=\"pivotRowLabel\"\n rowSpan={x}\n colSpan={\n j === rowAttrs.length - 1 && colKeys.length !== 0\n ? 2\n : 1\n }\n style={{ position: 'sticky', zIndex: 1, left: (j) * 120 + 'px' }}\n >\n {txt}\n </th>\n );\n })\n ||\n <th\n key={`rowKeyLabel${i}`}\n className=\"pivotRowLabel\"\n >\n { }\n </th>}\n {colKeys.map((colKey, j) => {\n const aggregator = pivotData.getAggregator(rowKey, colKey);\n return (\n <td\n className=\"pivotVal\"\n key={`pivotVal${i}-${j}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(aggregator.value(), rowKey, colKey)\n }\n style={this.valueCellColors(\n rowKey,\n colKey,\n aggregator.value()\n )}\n >\n {aggregator.format(aggregator.value())}\n </td>\n );\n })}\n {aggregatorGather.map((_, j) => {\n const totalAggregator = pivotData.getAggregator([...rowKey, _.aggregatorName], []);\n return (<td\n className=\"pivotTotal pivotRowTotal\"\n key={`pivotTotal${i}-${j}-${_.aggregatorName}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(totalAggregator.value(), rowKey, [null])\n }\n style={this.colTotalColors(totalAggregator.value())}\n >\n {totalAggregator.format(totalAggregator.value())}\n </td>)\n })}\n </tr>\n );\n })}\n\n <tr>\n {\n (\n <th\n className=\"pivotTotalLabel\"\n colSpan={rowAttrs.length + (colKeys.length === 0 ? 0 : 1)}\n style={{ position: 'sticky', zIndex: 2, left: 0 }}\n >\n Totals\n </th>\n ) || <React.Fragment />\n }\n\n {colKeys.map((colKey, i) => {\n const totalAggregator = pivotData.getAggregator([], colKey);\n return (\n <td\n className=\"pivotTotal\"\n key={`total${i}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(totalAggregator.value(), [null], colKey)\n }\n style={this.rowTotalColors(totalAggregator.value())}\n >\n {totalAggregator.format(totalAggregator.value())}\n </td>\n );\n })}\n\n {(\n aggregatorGather.map((_, o) => {\n const grandTotalAggregator = pivotData.getAggregator([], [], _.aggregatorName);\n return (\n <td\n key={`aggregatorGather${o}`}\n onClick={\n this.getClickHandler &&\n this.getClickHandler(grandTotalAggregator.value(), [null], [null])\n }\n className=\"pivotGrandTotal pivotRowTotal\"\n >\n {grandTotalAggregator.format(grandTotalAggregator.value())}\n </td>)\n })) || <React.Fragment />\n }\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n );\n };\n\n handleScriptLoad() {\n $(document).ready(function () {\n $('.pivotTable').dataTable({ scrollY: '50vh', scrollCollapse: true, paging: false });\n });\n }\n\n componentWillUnmount() {\n }\n render() {\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols.length ? concat(pivotData.props.cols, undefined) : [undefined, undefined];\n const rowAttrs = pivotData.props.rows;\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n const aggregatorGather = this.props.aggregatorGather;\n\n this.valueCellColors = () => { };\n this.rowTotalColors = () => { };\n this.colTotalColors = () => { };\n // todo\n if (opts.heatmapMode) {\n const colorScaleGenerator = this.props.tableColorScaleGenerator;\n if (opts.heatmapMode === 'full') {\n const allValues = [];\n rowKeys.map(r =>\n colKeys.map(c =>\n allValues.push(pivotData.getAggregator(r, c).value())\n )\n );\n const colorScale = colorScaleGenerator(allValues);\n this.valueCellColors = (r, c, v) => colorScale(v);\n } else if (opts.heatmapMode === 'row') {\n const rowColorScales = {};\n rowKeys.map(r => {\n const rowValues = colKeys.map(x =>\n pivotData.getAggregator(r, x).value()\n );\n rowColorScales[r] = colorScaleGenerator(rowValues);\n });\n this.valueCellColors = (r, c, v) => rowColorScales[r](v);\n } else if (opts.heatmapMode === 'col') {\n const colColorScales = {};\n colKeys.map(c => {\n const colValues = rowKeys.map(x =>\n pivotData.getAggregator(x, c).value()\n );\n colColorScales[c] = colorScaleGenerator(colValues);\n });\n this.valueCellColors = (r, c, v) => colColorScales[c](v);\n }\n }\n\n this.getClickHandler =\n this.props.tableOptions && this.props.tableOptions.clickCallback\n ? (value, rowValues, colValues) => {\n const filters = {};\n for (const i of Object.keys(colAttrs || {})) {\n const attr = colAttrs[i];\n if (colValues[i] !== null) {\n filters[attr] = colValues[i];\n }\n }\n for (const i of Object.keys(rowAttrs || {})) {\n const attr = rowAttrs[i];\n if (rowValues[i] !== null) {\n filters[attr] = rowValues[i];\n }\n }\n return e =>\n this.props.tableOptions.clickCallback(\n e,\n value,\n filters,\n pivotData\n );\n }\n : null;\n\n return (\n <div className=\"use-virtual-table\">\n <div className=\"use-virtual-table-body\">\n {/* {this.tableHeaderRender()} */}\n {this.tableBodyRender()}\n </div>\n </div>\n );\n }\n }\n\n TableRenderer.defaultProps = PivotData.defaultProps;\n TableRenderer.propTypes = PivotData.propTypes;\n TableRenderer.defaultProps.tableColorScaleGenerator = redColorScaleGenerator;\n TableRenderer.defaultProps.tableOptions = {};\n TableRenderer.propTypes.tableColorScaleGenerator = PropTypes.func;\n TableRenderer.propTypes.tableOptions = PropTypes.object;\n return TableRenderer;\n}\n\nclass TSVExportRenderer extends React.PureComponent {\n render() {\n const pivotData = new PivotData(this.props);\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n if (rowKeys.length === 0) {\n rowKeys.push([]);\n }\n if (colKeys.length === 0) {\n colKeys.push([]);\n }\n\n const headerRow = pivotData.props.rows.map(r => r);\n if (colKeys.length === 1 && colKeys[0].length === 0) {\n headerRow.push(this.props.aggregatorName);\n } else {\n colKeys.map(c => headerRow.push(c.join('-')));\n }\n\n const result = rowKeys.map(r => {\n const row = r.map(x => x);\n colKeys.map(c => {\n const v = pivotData.getAggregator(r, c).value();\n row.push(v ? v : '');\n });\n return row;\n });\n\n result.unshift(headerRow);\n\n return (\n <textarea\n value={result.map(r => r.join('\\t')).join('\\n')}\n style={{ width: window.innerWidth / 2, height: window.innerHeight / 2 }}\n readOnly={true}\n />\n );\n }\n}\n\nTSVExportRenderer.defaultProps = PivotData.defaultProps;\nTSVExportRenderer.propTypes = PivotData.propTypes;\n\nexport default {\n Table: makeRenderer(),\n 'Table Heatmap': makeRenderer({ heatmapMode: 'full' }),\n 'Table Col Heatmap': makeRenderer({ heatmapMode: 'col' }),\n 'Table Row Heatmap': makeRenderer({ heatmapMode: 'row' }),\n 'Exportable TSV': TSVExportRenderer,\n};\n"]}