import { defineComponent as x, ref as p, watch as j, onMounted as I, getCurrentInstance as A, unref as E, onBeforeUnmount as O, setBlockTracking as h, createElementVNode as g, mergeProps as T, renderSlot as R, h as S, render as _ } from "vue"; const w = [ "childRow", "column-sizing", "column-visibility", "destroy", "draw", "error", "init", "length", "order", "page", "preDraw", "preInit", "preXhr", "processing", "requestChild", "search", "stateLoadParams", "stateLoaded", "stateSaveParams", "xhr", "autoFill", "preAutoFill", "buttons-action", "buttons-processing", "column-reorder", "key", "key-blur", "key-focus", "key-refocus", "key-return-submit", "responsive-display", "responsive-resize", "rowgroup-datasrc", "pre-row-reorder", "row-reorder", "row-reordered", "dtsb-inserted", "deselect", "select", "select-blur", "selectItems", "selectStyle", "user-select", "stateRestore-change" ]; let m; const C = { name: "Datatables.netVue", inheritAttrs: !1, use(i) { m = i; } }, L = /* @__PURE__ */ x({ ...C, props: { ajax: null, columns: null, data: null, options: null }, emits: w, setup(i, { expose: c }) { const o = i, y = p(null), u = {}, l = p(), D = p([]); j( () => o.data, (t) => { let e = l.value; e && (f(e), e.clear(), e.rows.add(t).draw(!1)); }, { deep: !0 } ), I(() => { var a; const t = A(); let e = Object.assign({}, o.options) || {}; if (o.data && (e.data = o.data, k(e.data)), o.columns && (e.columns = o.columns), e.columns && v(e.columns, t), o.ajax && (e.ajax = o.ajax), e.columnDefs || (e.columnDefs = []), t) { let n = Object.keys(t.slots); for (let r = 0; r < n.length; r++) { let s = n[r]; if (s.match(/^column\-/)) { let d = s.replace("column-", ""); e.columnDefs.push({ target: d.match(/^\d+$/) ? parseInt(d) : d + ":name", render: "#" + s }); } } v(e.columnDefs, t); } if (!m) throw new Error( "DataTables library not set. See https://datatables.net/tn/19 for details." ); l.value = new m(E(y), e), (a = l.value) == null || a.on("preXhr", function() { f(l.value); }); for (let n of w) l.value && t && l.value.on(n, function() { var r = Array.from(arguments), s = r.shift(); r.unshift({ event: s, dt: l }), r.unshift(n), t.emit.apply(t, r); }); }), O(() => { var t; f(l.value), (t = l.value) == null || t.destroy(!0); }); function k(t) { D.value = t.value ? t.value.slice() : t.slice(); } function b(t) { return function(e, a, n, r) { let s = r.settings.sTableId + "," + r.row + "," + r.col; if (!u[s]) { let d = S("div", t({ cellData: e, colIndex: r.col, rowData: n, rowIndex: r.row, type: a })); u[s] = document.createElement("div"), _(d, u[s]); } return u[s]; }; } function v(t, e) { if (e) for (let n = 0; n < t.length; n++) { let r = t[n]; if (typeof r.render == "string" && r.render.charAt(0) === "#") { var a = r.render.replace("#", ""); e.slots[a] && (r.render = b(e.slots[a])); } else if (typeof r.render == "object" && typeof r.render.display == "string" && r.render.display.charAt(0) === "#") { var a = r.render.display.replace("#", ""); e.slots[a] && (r.render.display = b(e.slots[a])); } } } function f(t) { let e = Object.keys(u), a = t.table().node().id; for (var n = 0; n < e.length; n++) e[n].indexOf(a + ",") === 0 && delete u[e[n]]; } return c({ dt: l }), (t, e) => e[0] || (h(-1), e[0] = g("div", { class: "datatable" }, [ g("table", T({ ref_key: "table", ref: y }, t.$attrs, { style: { width: "100%" } }), [ R(t.$slots, "default") ], 16) ]), h(1), e[0]); } }), V = /* @__PURE__ */ (() => { const i = L; return i.install = (c) => { c.component("Datatables.netVue", i); }, i; })(); export { L as DataTable, V as default };