/*! CardView 1.0.1 for DataTables
 * Copyright (c) SpryMedia Ltd - https://datatables.net/license/plus
 */
import DataTable,{Dom,util,Api}from"datatables.net";function wrap(t){return'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">'+t+"</svg>"}let icons={tick:wrap('<path d="M20 6 9 17l-5-5"/>')},ulList=function(){return Dom.c("div").classAdd(this.classes.card).attr("data-dt-row","").append(Dom.c("div").classAdd(this.classes.selector).html(CardView.icons.tick)).append(Dom.c("div").classAdd(this.classes.cardContent).append(Dom.c("ul").append(Dom.c("li").attr("data-dtcv-for","columns").attr("data-dt-column","").append(Dom.c("span").classAdd(this.classes.title).attr("data-dtcv-title","")).append(Dom.c("span").classAdd(this.classes.data).attr("data-dtcv-dataSrc","")))))},dlList=function(){return Dom.c("div").classAdd(this.classes.card).attr("data-dt-row","").append(Dom.c("div").classAdd(this.classes.selector).html(CardView.icons.tick)).append(Dom.c("div").classAdd(this.classes.cardContent).append(Dom.c("dl").append(Dom.c("div").attr("data-dtcv-for","columns").attr("data-dt-column","").append(Dom.c("dt").classAdd(this.classes.title).attr("data-dtcv-title","")).append(Dom.c("dd").classAdd(this.classes.data).attr("data-dtcv-dataSrc","")))))},miniTable=function(){return Dom.c("div").classAdd(this.classes.card).attr("data-dt-row","").append(Dom.c("div").classAdd(this.classes.selector).html(CardView.icons.tick)).append(Dom.c("div").classAdd(this.classes.cardContent).append(Dom.c("table").append(Dom.c("tr").attr("data-dtcv-for","columns").attr("data-dt-column","").append(Dom.c("td").classAdd(this.classes.title).attr("data-dtcv-title","")).append(Dom.c("td").classAdd(this.classes.data).attr("data-dtcv-dataSrc","")))))};if(!DataTable||!DataTable.versionCheck||!DataTable.versionCheck("3"))throw"Warning: CardView requires DataTables 3 or greater";class CardView{displayed(){return this.s.displayed}mode(t){return void 0===t?this.s.mode:("cards"===(this.s.mode=t)?this._display():"table"===t?this._hide():this._resize(),this.s.dt.trigger("cardView-mode",[t]),DataTable.plus("2026-07-31"),this)}constructor(t,e){var t=new DataTable.Api(t),a=t.settings()[0],s=Dom.s(t.table().node()).closest(".dt-layout-table").children("div");this.c=util.object.assignDeep({},CardView.defaults,e),this.classes=Object.assign({},CardView.classes),this.s={columnCount:1,displayed:!1,dt:t,mode:this.c.mode,restorePageLen:t.page.len()},this.dom={container:Dom.c("div").classAdd(this.classes.container),host:s,table:s.children(),templateSrc:"function"==typeof this.c.template?this.c.template.call(this):Dom.s(this.c.template),template:null},this.dom.container.prependTo(this.dom.host),a._cardView||(a._cardView=this)._init()}_columns(){var t=Dom.s(this.s.dt.table().container()).width(),e=this.c.breakpoints;let a="tiny";a=t>=e[0]?"huge":t>=e[1]?"large":t>=e[2]?"medium":t>=e[3]?"small":"tiny",t=this.c.gridColumns[a],this.s.columnCount=t,this.dom.container[0].style.setProperty("--dtcv-grid_columns",t.toString())}_display(){this.dom.container.css("display",""),this.dom.table.css("display","none"),this.s.displayed=!0,this._pageLength(),Dom.s(this.s.dt.table().container()).classAdd(this.classes.shown),this.s.dt.trigger("cardView-display",["cards"])}_destroy(){var t=this.s.dt;this.displayed()&&this._hide(),this.dom.container.off(".cardView").remove(),t.off(".cardView")}_draw(){let t=this;var e=this.s.dt;this.dom.container.empty(),e.rows({page:"current"}).every(function(){t._renderCard(this)})}_hide(){this.dom.table.css("display",""),this.dom.container.css("display","none"),this.s.displayed=!1,this._pageLength(),Dom.s(this.s.dt.table().container()).classRemove(this.classes.shown),this.s.dt.trigger("cardView-display",["table"])}_init(){var t=this.s.dt,e=(DataTable.plus("2026-07-31"),null==(e=t.state.loaded())?void 0:e.cardView),e=(e||this.c).mode;this._columns(),this.mode(e),this._selectMode(),this._selectEvents(),t.on("column-sizing.cardView",()=>{this._resize()}).on("draw.cardView",()=>{this.s.displayed&&this._draw()}).on("rowInvalidate.cardView",(t,e,a)=>{this._updateCard(a)}).on("selectStyle.cardView",()=>{this._selectMode()}).on("stateSaveParams.cardView",(t,e,a)=>{a.cardView||(a.cardView={}),a.cardView.mode=this.s.mode}).on("destroy.cardView",()=>{this._destroy()})}_pageLength(){if("core"!==this.c.pageLength){var e=this.s.dt,a=Dom.s(e.table().container()).find("div.dt-length select");let s=this.s.columnCount,t=this.s.restorePageLen;a.length?(a.find("option").each(t=>{var t=Dom.s(t),e=t.data("dtcvOriginal");e&&t.attr("value",e).text(e.toString())}),this.s.displayed&&a.find("option").each(t=>{var e,t=Dom.s(t),a=parseInt(t.attr("value"));0!=a%s&&(e=Math.round(a/s)*s,t.attr("value",e).text(e.toString()).data("dtcvOriginal",a))}),(t=e.ready()?parseInt(a.val()):(a.val(this.s.restorePageLen),this.s.restorePageLen))||(t=Math.round(e.page.len()/s)*s,a.val(t))):this.s.displayed&&(a=e.page.len(),t=Math.round(a/s)*s),t!==e.page.len()&&(e.page.len(t),e.ready())&&e.draw(!1)}}_resize(){this._columns();var e=Dom.s(this.s.dt.table().container()).width(),a=this.c.responsiveBreakpoint;if("auto"===this.s.mode){let t;e<(t="number"==typeof a?a:!0===a||"medium"===a?this.c.breakpoints[2]:"huge"===a?this.c.breakpoints[0]:"large"===a?this.c.breakpoints[1]:"small"===a?this.c.breakpoints[3]:this.c.breakpoints[4])&&!this.displayed()?this._display():e>=t&&this.displayed()&&this._hide()}this._pageLength()}_selectEvents(){let r=this.s.dt;this.dom.container.on("click.cardView","div."+this.classes.selector.replace(/ /,"."),function(t){var e=parseInt(Dom.s(this).closest("[data-dt-row]").attr("data-dt-row"));"number"==typeof e&&((e=r.row(e)).selected()?e.deselect():e.select())}),r.on("select.cardView deselect.cardView",(e,t,a,s)=>{var i=r.settings()[0].data;if("row"===a)for(let t=0;t<s.length;t++){var d=i[s[t]]._card;d&&d.classToggle(this.classes.selected,"select"===e.type)}})}_selectMode(){var t=this.s.dt;t.select&&this.dom.container.classToggle(this.classes.selectable,"api"!==t.select.style())}_templateAttr(t,e,a){var s=t.find("[data-"+e+"]");null!==t.attr("data-"+e)&&s.add(t),s.each(t=>{t.setAttribute("data-"+e,a)})}_templateHtml(t,s,i){var e=t.find("[data-"+s+"]");null!==t.attr("data-"+s)&&e.add(t),e.each(t=>{var t=Dom.s(t),e=t.attr("data-"+s),a=(t.attr("data-dt-column")?t:t.closest("[data-dt-column]")).attr("data-dt-column");t.html("function"==typeof i?i(e,null!==a?parseInt(a):null):i.toString())})}_templatePrep(){if(this.dom.template)return this.dom.template;let s=this,i=this.s.dt;var t=this.dom.templateSrc,t="template"===t[0].nodeName.toLowerCase()?Dom.s(document.importNode(t[0].content,!0)).children():t.clone(!0);return t.find("[data-dtcv-for]").each(t=>{let e=t.parentElement,a=Dom.s(t);a.detach().attrRemove("data-dtcv-for"),i.columns(this.c.columns).every(function(){var t=a.clone(!0).appendTo(e);s._templateAttr(t,"dt-column",this.index()),s._templateAttr(t,"dtcv-dataSrc",this.dataSrc()),s._templateHtml(t,"dtcv-title",this.title())})}),this.dom.template,t}_renderCard(t){var e,a=this.s.dt.settings()[0].data,s=t.index();let i;a[s]&&(a[s]._card?i=a[s]._card:(e=this._templatePrep(),i=e.clone(!0),this._cardData(t,i),this._templateAttr(i,"dt-row",t.index()),t.selected&&t.selected()&&i.classAdd(this.classes.selected),a[s]._card=i),this.dom.container.append(i))}_updateCard(t){var e=this.s.dt,a=e.settings()[0].data;a[t]&&a[t]._card&&(a=a[t]._card,e=e.row(t),this._cardData(e,a))}_cardData(a,t){this._templateHtml(t,"dtcv-dataSrc",(t,e)=>null!==e?a.cell(a.index(),e).render(this.c.orthogonal):null!==t?util.data.get(t)(a.data()):"")}}CardView.classes={card:"dtcv-card",cardContent:"",container:"dtcv-container",data:"dtcv-card_data",selectable:"dtcv-container_selectable",selector:"dtcv-card_selector",selected:"dtcv-card_selected",shown:"dt-cardview",title:"dtcv-card_title"},CardView.defaults={breakpoints:[1200,992,768,576,0],columns:"*",gridColumns:{huge:5,large:4,medium:3,small:2,tiny:1},mode:"auto",orthogonal:"display",pageLength:"fit",responsiveBreakpoint:"medium",template:dlList},CardView.version="1.0.1",CardView.templates={dlList:dlList,miniTable:miniTable,ulList:ulList},CardView.icons=icons,Api.register("cardView()",function(){return this.inst(this.context)}),Api.register("cardView().displayed()",function(){var t=this.context[0];return!!t._cardView&&t._cardView.displayed()}),Api.register("cardView().mode()",function(t){var e=this.context[0];return t?(e._cardView&&e._cardView.mode(t),this):e._cardView?e._cardView.mode():null}),DataTable.ext.buttons.cardViewToggle={action:function(t,e,a,s){var i=e.settings()[0];i._cardView&&i._cardView.mode(i._cardView.displayed()?"table":"cards"),this.text(DataTable.ext.buttons.cardViewToggle.text(e,a))},text:function(t){var e=t.settings()[0];return e._cardView&&e._cardView.displayed()?t.i18n("buttons.tableView","View table"):t.i18n("buttons.cardView","View cards")}},DataTable.ext.buttons.cardView={action:function(t,e,a,s){e=e.settings()[0];e._cardView&&e._cardView.mode("cards")},init:function(t,e){let a=t.settings()[0];var s=()=>{this.active(a._cardView&&a._cardView.displayed())};s(),t.on("cardView-display",s)},text:function(t){return t.i18n("buttons.cardView","View cards")}},DataTable.ext.buttons.tableView={action:function(t,e,a,s){e=e.settings()[0];e._cardView&&e._cardView.mode("table")},init:function(t,e){let a=t.settings()[0];var s=()=>{this.active(!a._cardView||!a._cardView.displayed())};s(),t.on("cardView-display",s)},text:function(t){return t.i18n("buttons.tableView","View table")}},DataTable.ext.buttons.autoView={action:function(t,e,a,s){e=e.settings()[0];e._cardView&&e._cardView.mode("auto")},init:function(t,e){let a=t.settings()[0];var s=()=>{this.active(!a._cardView||"auto"===a._cardView.mode())};s(),t.on("cardView-mode",s)},text:function(t){return t.i18n("buttons.tableView","Auto view")}},Dom.s(document).on("preInit.dt.cardView",function(t,e){var a,s;"dt"===t.namespace&&(t=e.init.cardView,a=DataTable.defaults.cardView,t||a)&&(s={},util.is.plainObject(a)&&util.object.assign(s,a),util.is.plainObject(t)&&util.object.assign(s,t),!1!==t)&&new CardView(e,s)}),DataTable.CardView=CardView;export default DataTable;