"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var scrollProcessTimeout,_xeUtils=_interopRequireDefault(require("xe-utils/methods/xe-utils")),_conf=_interopRequireDefault(require("../../conf")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,l,o){return l in e?Object.defineProperty(e,l,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[l]=o,e}function isOperateMouse(e){return e._isResize||e.lastScrollTime&&Date.now()<e.lastScrollTime+e.optimizeOpts.delayHover}function countTreeExpand(e,l){var o=l.$table,t=e[o.treeOpts.children],r=1;if(o.isTreeExpandByRow(e))for(var n=0;n<t.length;n++)r+=countTreeExpand(t[n],l);return r}function getOffsetSize(e){switch(e.vSize){case"mini":return 3;case"small":return 2;case"medium":return 1}return 0}function calcTreeLine(e,l){var o=e.$table,t=e.$rowIndex,r=1;return t&&(r=countTreeExpand(l[t-1],e)),o.rowHeight*r-(t?1:12-getOffsetSize(o))}function renderBorder(e,l){return e("div",{class:"plx-table-".concat(l,"ed-borders"),ref:"".concat(l,"Borders")},[e("span",{class:"plx-table-border-top",ref:"".concat(l,"Top")}),e("span",{class:"plx-table-border-right",ref:"".concat(l,"Right")}),e("span",{class:"plx-table-border-bottom",ref:"".concat(l,"Bottom")}),e("span",{class:"plx-table-border-left",ref:"".concat(l,"Left")})])}function renderColumn(e,l,o,t,r,n,i,s,c,d,a,u,p,f,x,w){var y,g,m=o._e,v=o.$listeners,h=o.tableData,b=o.height,$=o.columnKey,T=o.overflowX,_=o.scrollXLoad,I=o.scrollYLoad,S=o.highlightCurrentRow,C=o.showOverflow,L=o.align,O=o.cellClassName,q=o.cellStyle,k=o.spanMethod,E=o.radioOpts,B=o.checkboxOpts,R=o.expandOpts,P=o.treeOpts,U=o.mouseConfig,H=o.mouseOpts,D=o.editConfig,M=o.editOpts,z=o.editRules,N=o.validOpts,X=o.editStore,Y=o.validStore,A=u.editRender,F=u.align,j=u.showOverflow,K=u.className,W=u.treeNode,G=X.actived,J=U&&H.selected,Q=U&&(H.range||H.checked),V=i?u.fixed!==i:u.fixed&&T,Z=_xeUtils.default.isUndefined(j)||_xeUtils.default.isNull(j)?C:j,ee="ellipsis"===Z,le="title"===Z,oe=!0===Z||"tooltip"===Z,te=le||oe||ee,re={},ne=F||L,ie=Y.row===c&&Y.column===u,se=z&&("default"===N.message?b||1<h.length:"inline"===N.message),ce={"data-colid":u.id},de=A&&D&&"dblclick"===M.trigger,ae={$table:o,$seq:t,seq:r,rowid:n,row:c,rowIndex:d,$rowIndex:a,column:u,columnIndex:p,$columnIndex:f,fixed:i,isHidden:V,level:s,data:h,items:w};if(!_&&!I||te||(ee=te=!0),(le||oe||v["cell-mouseenter"])&&(re.mouseenter=function(e){if(!isOperateMouse(o)){var l={$table:o,$seq:t,seq:r,rowid:n,row:c,rowIndex:d,$rowIndex:a,column:u,columnIndex:p,$columnIndex:f,fixed:i,isHidden:V,level:s,cell:e.currentTarget};le?_tools.DomTools.updateCellTitle(e):oe&&o.triggerTooltipEvent(e,l),_tools.UtilTools.emitEvent(o,"cell-mouseenter",[l,e])}}),(oe||v["cell-mouseleave"])&&(re.mouseleave=function(e){isOperateMouse(o)||(oe&&o.handleTargetLeaveEvent(e),_tools.UtilTools.emitEvent(o,"cell-mouseleave",[{$table:o,$seq:t,seq:r,rowid:n,row:c,rowIndex:d,$rowIndex:a,column:u,columnIndex:p,$columnIndex:f,fixed:i,isHidden:V,level:s,cell:e.currentTarget},e]))}),(B.range||Q||J)&&(re.mousedown=function(e){o.triggerCellMousedownEvent(e,{$table:o,$seq:t,seq:r,rowid:n,row:c,rowIndex:d,$rowIndex:a,column:u,columnIndex:p,$columnIndex:f,fixed:i,isHidden:V,level:s,cell:e.currentTarget})}),(S||v["cell-click"]||Q||A&&D||"row"===R.trigger||"cell"===R.trigger||"row"===E.trigger||"radio"===u.type&&"cell"===E.trigger||"row"===B.trigger||("checkbox"===u.type||"selection"===u.type)&&"cell"===B.trigger||"row"===P.trigger||u.treeNode&&"cell"===P.trigger)&&(re.click=function(e){o.triggerCellClickEvent(e,{$table:o,$seq:t,seq:r,rowid:n,row:c,rowIndex:d,$rowIndex:a,column:u,columnIndex:p,$columnIndex:f,fixed:i,isHidden:V,level:s,cell:e.currentTarget})}),(de||v["cell-dblclick"])&&(re.dblclick=function(e){o.triggerCellDBLClickEvent(e,{$table:o,$seq:t,seq:r,row:c,rowIndex:d,$rowIndex:a,column:u,columnIndex:p,$columnIndex:f,fixed:i,isHidden:V,level:s,cell:e.currentTarget})}),k){var ue=k(ae)||{},pe=ue.rowspan,fe=void 0===pe?1:pe,xe=ue.colspan,we=void 0===xe?1:xe;if(!fe||!we)return null;ce.rowspan=fe,ce.colspan=we}!V&&D&&M.showStatus&&(g=o.isUpdateByRow(c,u.property));var ye="seq"===u.type||"index"===u.type?"seq":u.type;return e("td",{class:["plx-body--column",u.id,(_defineProperty(y={},"col--".concat(ne),ne),_defineProperty(y,"col--".concat(ye),ye),_defineProperty(y,"col--last",f===x.length-1),_defineProperty(y,"col--tree-node",W),_defineProperty(y,"col--edit",A),_defineProperty(y,"col--ellipsis",te),_defineProperty(y,"edit--visible",A&&"visible"===A.type),_defineProperty(y,"fixed--hidden",V),_defineProperty(y,"col--dirty",g),_defineProperty(y,"col--actived",D&&A&&G.row===c&&(G.column===u||"row"===M.mode)),_defineProperty(y,"col--valid-error",ie),y),_tools.UtilTools.getClass(K,ae),_tools.UtilTools.getClass(O,ae)],key:$?u.id:p,attrs:ce,style:q?_xeUtils.default.isFunction(q)?q(ae):q:null,on:re},C&&V?[e("div",{class:["plx-cell",{"c--title":le,"c--tooltip":oe,"c--ellipsis":ee}]})]:renderLine(e,l,o,s,w,ae).concat([e("div",{class:["plx-cell",{"c--title":le,"c--tooltip":oe,"c--ellipsis":ee}],attrs:{title:le?_tools.UtilTools.getCellLabel(c,u,ae):null}},u.renderCell(e,ae)),se?ie?e("div",{class:"plx-cell--valid",style:Y.rule&&Y.rule.width?{width:"".concat(Y.rule.width,"px")}:null},[e("span",{class:"plx-cell--valid-msg"},Y.content)]):m():null]))}function renderLine(e,l,o,t,r,n){var i=n.column,s=o.treeOpts,c=o.treeConfig;return i.slots&&i.slots.line?i.slots.line.call(o,n,e):i.treeNode&&c&&s.line?[e("div",{class:"plx-tree--line-wrapper"},[e("div",{class:"plx-tree--line",style:{height:"".concat(calcTreeLine(n,r),"px"),left:"".concat(t*s.indent+(t?2-getOffsetSize(o):0)+16,"px")}})])]:[]}function renderRows(d,a,u,p,f,x,w,y){var g=u.stripe,m=u.rowKey,v=u.highlightHoverRow,h=u.rowClassName,b=u.rowStyle,$=u.treeConfig,T=u.treeOpts,_=u.treeExpandeds,I=u.scrollYLoad,S=u.scrollYStore,C=u.editStore,L=u.rowExpandeds,O=u.radioOpts,q=u.checkboxOpts,k=u.expandColumn,E=u.getColumnIndex,B=[];return w.forEach(function(t,r){var e={},n=r,i=n+1;I&&(i+=S.startIndex),n=u.getRowIndex(t),v&&(e.mouseenter=function(e){isOperateMouse(u)||u.triggerHoverEvent(e,{row:t,rowIndex:n})},e.mouseleave=function(e){isOperateMouse(u)||u.clearHoverRow()});var s=_tools.UtilTools.getRowid(u,t);if(B.push(d("tr",{class:["plx-body--row",{"row--stripe":g&&0<n&&(n+1)%2==0,"row--new":-1<C.insertList.indexOf(t),"row--radio":O.highlight&&u.selectRow===t,"row--cheched":q.highlight&&u.isCheckedByCheckboxRow(t)},h?_xeUtils.default.isFunction(h)?h({$table:u,$seq:p,seq:i,rowid:s,fixedType:x,rowLevel:f,row:t,rowIndex:n,$rowIndex:r}):h:""],attrs:{"data-rowid":s},style:b?_xeUtils.default.isFunction(b)?b({$table:u,$seq:p,seq:i,rowid:s,fixedType:x,rowLevel:f,row:t,rowIndex:n,$rowIndex:r}):b:null,key:m||$?s:r,on:e},y.map(function(e,l){var o=E(e);return renderColumn(d,a,u,p,i,s,x,f,t,n,r,e,o,l,y,w)}))),L.length&&-1<L.indexOf(t)){var l,o=E(k);$&&(l={paddingLeft:"".concat(f*T.indent+30,"px")}),k&&B.push(d("tr",{class:"plx-body--expanded-row",key:"expand_".concat(s),style:b?_xeUtils.default.isFunction(b)?b({$table:u,$seq:p,seq:i,rowid:s,fixedType:x,rowLevel:f,row:t,rowIndex:n,$rowIndex:r,isExpanded:!0}):b:null,on:e},[d("td",{class:"plx-body--expanded-column",attrs:{colspan:y.length}},[d("div",{class:["plx-body--expanded-cell",{"fixed--hidden":x}],style:l},[k.renderData(d,{$table:u,seq:i,rowid:s,row:t,rowIndex:n,column:k,columnIndex:o,fixed:x,level:f})])])]))}if($&&_.length){var c=t[T.children];c&&c.length&&-1<_.indexOf(t)&&B.push.apply(B,renderRows(d,a,u,p?"".concat(p,".").concat(i):"".concat(i),f+1,x,c,y))}}),B}function syncBodyScroll(e,l,o){(l||o)&&(l&&(l.onscroll=null,l.scrollTop=e),o&&(o.onscroll=null,o.scrollTop=e),clearTimeout(scrollProcessTimeout),scrollProcessTimeout=setTimeout(function(){l&&(l.onscroll=l._onscroll),o&&(o.onscroll=o._onscroll)},100))}var _default={name:"PlxTableBody",props:{tableData:Array,tableColumn:Array,visibleColumn:Array,collectColumn:Array,fixedColumn:Array,size:String,fixedType:String,isGroup:Boolean},mounted:function(){var e=this.$parent,l=this.$el,o=this.$refs,t=this.fixedType,r=e.elemStore,n="".concat(t||"main","-body-");r["".concat(n,"wrapper")]=l,r["".concat(n,"table")]=o.table,r["".concat(n,"colgroup")]=o.colgroup,r["".concat(n,"list")]=o.tbody,r["".concat(n,"xSpace")]=o.xSpace,r["".concat(n,"ySpace")]=o.ySpace,r["".concat(n,"emptyBlock")]=o.emptyBlock,this.$el.onscroll=this.scrollEvent,this.$el._onscroll=this.scrollEvent},beforeDestroy:function(){this.$el._onscroll=null,this.$el.onscroll=null},render:function(o){var e=this._e,l=this.$parent,t=this.fixedColumn,r=this.fixedType,n=l.$scopedSlots,i=l.id,s=l.tableData,c=l.tableColumn,d=l.showOverflow,a=l.scrollXLoad,u=l.mouseConfig,p=l.mouseOpts,f=l.keyboardConfig,x=void 0===f?{}:f,w=u&&(p.range||p.checked);return r&&d?c=t:a&&r&&(c=t),o("div",{class:["plx-table--body-wrapper",r?"fixed-".concat(r,"--wrapper"):"body--wrapper"],attrs:{"data-tid":i}},[r?e():o("div",{class:"plx-body--x-space",ref:"xSpace"}),o("div",{class:"plx-body--y-space",ref:"ySpace"}),o("table",{class:"plx-table--body",attrs:{"data-tid":i,cellspacing:0,cellpadding:0,border:0},ref:"table"},[o("colgroup",{ref:"colgroup"},c.map(function(e,l){return o("col",{attrs:{name:e.id},key:l})})),o("tbody",{ref:"tbody"},renderRows(o,this,l,"",0,r,s,c))]),r||!w&&!x.isCut?null:o("div",{class:"plx-table--borders"},[w?renderBorder(o,"check"):null,x.isCut?renderBorder(o,"copy"):null]),r?null:o("div",{class:["plx-table--empty-block",s.length?"":"is--empty"],ref:"emptyBlock"},[o("div",{class:"plx-table--empty-content"},n.empty?n.empty.call(this,{$table:this},o):_conf.default.i18n("plx.table.emptyText"))])])},methods:{scrollEvent:function(e){var l=this.$parent,o=this.fixedType,t=l.$refs,r=l.highlightHoverRow,n=l.scrollXLoad,i=l.scrollYLoad,s=l.lastScrollTop,c=l.lastScrollLeft,d=t.tableHeader,a=t.tableBody,u=t.leftBody,p=t.rightBody,f=t.tableFooter,x=d?d.$el:null,w=f?f.$el:null,y=a.$el,g=u?u.$el:null,m=p?p.$el:null,v=y.scrollTop,h=y.scrollLeft,b=h!==c,$=v!==s;l.lastScrollTop=v,l.lastScrollLeft=h,l.lastScrollTime=Date.now(),r&&l.clearHoverRow(),g&&"left"===o?syncBodyScroll(v=g.scrollTop,y,m):m&&"right"===o?syncBodyScroll(v=m.scrollTop,y,g):(b&&(x&&(x.scrollLeft=y.scrollLeft),w&&(w.scrollLeft=y.scrollLeft)),(g||m)&&(l.checkScrolling(),$&&syncBodyScroll(v,g,m))),n&&b&&(l.triggerScrollXEvent(e),x&&h+y.clientWidth>=y.scrollWidth-80&&this.$nextTick(function(){y.scrollLeft!==x.scrollLeft&&(x.scrollLeft=y.scrollLeft)})),i&&$&&l.triggerScrollYEvent(e),_tools.UtilTools.emitEvent(l,"scroll",[{type:"body",fixed:o,scrollTop:v,scrollLeft:h,isX:b,isY:$,$table:l},e])}}};exports.default=_default;