/*! RowGroup 2.1.1 for DataTables
 * Copyright (c) SpryMedia Ltd - datatables.net/license
 */
import DataTable,{Dom,util}from"datatables.net";if(!DataTable||!DataTable.versionCheck||!DataTable.versionCheck("3.1"))throw new Error("RowGroup requires DataTables 3.1 or newer");class RowGroup{dataSrc(t){var r;return void 0===t?this.c.dataSrc:(r=this.s.dt,this.c.dataSrc=t,Dom.s(r.table().node()).trigger("rowgroup-datasrc.dt",!1,[r,t]),this)}disable(){return this.c.enable=!1,this}enable(t){return!1===t?this.disable():(this.c.enable=!0,this)}enabled(){return this.c.enable}constructor(t,r){this.c=util.object.assignDeep({},DataTable.defaults.rowGroup,RowGroup.defaults,r),this.s={dt:new DataTable.Api(t)};r=this.s.dt.settings()[0],t=r.rowGroup;if(t)return t;(r.rowGroup=this)._init()}_init(){var a=this,t=this.s.dt,e=t.settings()[0],o=Dom.s(t.table().container()).find("div.dt-scroll-body"),s=(t.on("draw.dtrg",function(t,r){a.c.enable&&e===r&&(a._draw(),s)&&o.scrollTop()&&(o.scrollTop(s),s=null)}),t.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){a._adjustColspan()}),t.on("destroy",function(){t.off(".dtrg")}),null);o.count()&&t.on("preDraw",function(){s=o.scrollTop()})}_adjustColspan(){Dom.s(this.s.dt.table().body()).find("tr."+this.c.className).each(t=>{t=Dom.s(t).find("th, td").map(t=>Dom.s(t).isVisible()?t:null);1===t.count()&&t.attr("colspan",this._colspan())})}_colspan(){return this.s.dt.columns(":visible").count()}_draw(){var t=this.s.dt;null===this.c.dataSrc||Array.isArray(this.c.dataSrc)&&0===this.c.dataSrc.length||(t=this._group(0,t.rows({page:"current"}).indexes().toArray()),this._groupDisplay(0,t))}_group(t,r){for(var a,e=Array.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],o=DataTable.util.get(e[t]),s=this.s.dt,i=[],n=0,l=r.length;n<l;n++){var u,d=r[n];null==(u=o(s.row(d).data(),t))&&(u=this.c.emptyDataGroup),void 0!==a&&u===a||(i.push({dataPoint:u,rows:[]}),a=u),i[i.length-1].rows.push(d)}if(void 0!==e[t+1])for(n=0,l=i.length;n<l;n++)i[n].children=this._group(t+1,i[n].rows);return i}_groupDisplay(t,r){for(var a,e=this.s.dt,o=0,s=r.length;o<s;o++){var i,n=r[o],l=n.dataPoint,u=n.rows;this.c.startRender&&(a=this.c.startRender.call(this,e.rows(u),l,t),i=this._rowWrap(a,this.c.startClassName,t))&&i.insertBefore(e.row(u[0]).node()),this.c.endRender&&(a=this.c.endRender.call(this,e.rows(u),l,t),i=this._rowWrap(a,this.c.endClassName,t))&&i.insertAfter(e.row(u[u.length-1]).node()),n.children&&this._groupDisplay(t+1,n.children)}}_rowWrap(t,r,a){var e;return null==(t=null!==t&&""!==t?t:this.c.emptyDataGroup)?null:(util.is.element(t)&&"tr"===t.nodeName.toLowerCase()?Dom.s(t):util.is.dom(t)&&t.count()&&"tr"===t.get(0).nodeName.toLowerCase()?t:util.is.jquery(t)&&t.length&&"tr"===t.get(0).nodeName.toLowerCase()?Dom.s(t):(e=Dom.c("th").attr("colspan",this._colspan()).attr("scope","row"),"string"==typeof t?e.html(t):e.append(t),Dom.c("tr").append(e))).classAdd(this.c.className).classAdd(r).classAdd("dtrg-level-"+a)}}RowGroup.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender(t,r,a){return util.escapeHtml(r)}},RowGroup.version="2.1.1",DataTable.RowGroup=RowGroup,DataTable.Api.register("rowGroup()",function(){return this.inst(this.context)}),DataTable.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(!1)})}),DataTable.Api.register("rowGroup().enable()",function(r){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(void 0===r||r)})}),DataTable.Api.register("rowGroup().enabled()",function(){var t=this.context;return!(!t.length||!t[0].rowGroup)&&t[0].rowGroup.enabled()}),DataTable.Api.register("rowGroup().dataSrc()",function(r){var t;return void 0===r?(t=this.context[0].rowGroup)?t.dataSrc():[]:this.iterator("table",function(t){t.rowGroup||new RowGroup(this.context[0]),t.rowGroup.dataSrc(r)})}),Dom.on("preInit.dt.dtrg",function(t,r,a){var e,o;"dt"===t.namespace&&(t=r.init.rowGroup,e=DataTable.defaults.rowGroup,t||e)&&(o={},util.is.plainObject(e)&&util.object.assign(o,e),util.is.plainObject(t)&&util.object.assign(o,t),!1!==t)&&new RowGroup(r,o)});export default DataTable;