MIF_E31211789/public/admin/assets/vendor/simple-datatables/simple-datatables.js

9086 lines
591 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function (f) {
if (typeof exports === "object" && typeof module !== "undefined") {
module.exports = f();
} else if (typeof define === "function" && define.amd) {
define([], f);
} else {
var g;
if (typeof window !== "undefined") {
g = window;
} else if (typeof global !== "undefined") {
g = global;
} else if (typeof self !== "undefined") {
g = self;
} else {
g = this;
}
g.simpleDatatables = f();
}
})(function () {
var define, module, exports;
return (function () {
function r(e, n, t) {
function o(i, f) {
if (!n[i]) {
if (!e[i]) {
var c = "function" == typeof require && require;
if (!f && c) return c(i, !0);
if (u) return u(i, !0);
var a = new Error("Cannot find module '" + i + "'");
throw ((a.code = "MODULE_NOT_FOUND"), a);
}
var p = (n[i] = { exports: {} });
e[i][0].call(
p.exports,
function (r) {
var n = e[i][1][r];
return o(n || r);
},
p,
p.exports,
r,
e,
n,
t
);
}
return n[i].exports;
}
for (
var u = "function" == typeof require && require, i = 0;
i < t.length;
i++
)
o(t[i]);
return o;
}
return r;
})()(
{
1: [
function (require, module, exports) {
(function (global) {
(function () {
"use strict";
const t = (t) =>
"[object Object]" ===
Object.prototype.toString.call(t),
e = (e) => {
let s = !1;
try {
s = JSON.parse(e);
} catch (t) {
return !1;
}
return (
!(
null === s ||
(!Array.isArray(s) && !t(s))
) && s
);
},
s = (t, e) => {
const s = document.createElement(t);
if (e && "object" == typeof e)
for (const t in e)
"html" === t
? (s.innerHTML = e[t])
: s.setAttribute(t, e[t]);
return s;
},
i = (t) =>
["#text", "#comment"].includes(t.nodeName)
? t.data
: t.childNodes
? t.childNodes.map((t) => i(t)).join("")
: "",
n = (t) => {
if (null == t) return "";
if (
t.hasOwnProperty("text") ||
t.hasOwnProperty("data")
) {
const e = t;
return e.text ?? n(e.data);
}
return t.hasOwnProperty("nodeName")
? i(t)
: String(t);
},
a = function (t) {
return t
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;");
},
o = function (t, e) {
let s = 0,
i = 0;
for (; s < t + 1; ) {
e[i].hidden || (s += 1), (i += 1);
}
return i - 1;
},
r = function (t) {
const e = {};
if (t)
for (const s of t) e[s.name] = s.value;
return e;
},
l = (t) =>
t
? t
.trim()
.split(" ")
.map((t) => `.${t}`)
.join("")
: null,
d = (t, e) => {
const s = e
?.split(" ")
.some((e) => !t.classList.contains(e));
return !s;
},
c = (t, e) =>
t ? (e ? `${t} ${e}` : t) : e || "";
var h = (function () {
function t(t) {
var e = this;
void 0 === t && (t = {}),
Object.entries(t).forEach(function (t) {
var s = t[0],
i = t[1];
return (e[s] = i);
});
}
return (
(t.prototype.toString = function () {
return JSON.stringify(this);
}),
(t.prototype.setValue = function (t, e) {
return (this[t] = e), this;
}),
t
);
})();
function u(t) {
for (
var e = arguments, s = [], i = 1;
i < arguments.length;
i++
)
s[i - 1] = e[i];
return (
null != t &&
s.some(function (e) {
var s, i;
return (
"function" ==
typeof (null ===
(i =
null ===
(s =
null == t
? void 0
: t.ownerDocument) ||
void 0 === s
? void 0
: s.defaultView) ||
void 0 === i
? void 0
: i[e]) &&
t instanceof
t.ownerDocument.defaultView[e]
);
})
);
}
function p(t, e, s) {
var i;
return (
"#text" === t.nodeName
? (i = s.document.createTextNode(
t.data
))
: "#comment" === t.nodeName
? (i = s.document.createComment(t.data))
: (e
? (i = s.document.createElementNS(
"http://www.w3.org/2000/svg",
t.nodeName
))
: "svg" ===
t.nodeName.toLowerCase()
? ((i =
s.document.createElementNS(
"http://www.w3.org/2000/svg",
"svg"
)),
(e = !0))
: (i = s.document.createElement(
t.nodeName
)),
t.attributes &&
Object.entries(
t.attributes
).forEach(function (t) {
var e = t[0],
s = t[1];
return i.setAttribute(e, s);
}),
t.childNodes &&
t.childNodes.forEach(function (
t
) {
return i.appendChild(
p(t, e, s)
);
}),
s.valueDiffing &&
(t.value &&
u(
i,
"HTMLButtonElement",
"HTMLDataElement",
"HTMLInputElement",
"HTMLLIElement",
"HTMLMeterElement",
"HTMLOptionElement",
"HTMLProgressElement",
"HTMLParamElement"
) &&
(i.value = t.value),
t.checked &&
u(i, "HTMLInputElement") &&
(i.checked = t.checked),
t.selected &&
u(i, "HTMLOptionElement") &&
(i.selected = t.selected))),
i
);
}
var f = function (t, e) {
for (e = e.slice(); e.length > 0; ) {
var s = e.splice(0, 1)[0];
t = t.childNodes[s];
}
return t;
};
function m(t, e, s) {
var i,
n,
a,
o = e[s._const.action],
r = e[s._const.route];
[
s._const.addElement,
s._const.addTextElement,
].includes(o) || (i = f(t, r));
var l = { diff: e, node: i };
if (s.preDiffApply(l)) return !0;
switch (o) {
case s._const.addAttribute:
if (!i || !u(i, "Element")) return !1;
i.setAttribute(
e[s._const.name],
e[s._const.value]
);
break;
case s._const.modifyAttribute:
if (!i || !u(i, "Element")) return !1;
i.setAttribute(
e[s._const.name],
e[s._const.newValue]
),
u(i, "HTMLInputElement") &&
"value" === e[s._const.name] &&
(i.value =
e[s._const.newValue]);
break;
case s._const.removeAttribute:
if (!i || !u(i, "Element")) return !1;
i.removeAttribute(e[s._const.name]);
break;
case s._const.modifyTextElement:
if (!i || !u(i, "Text")) return !1;
s.textDiff(
i,
i.data,
e[s._const.oldValue],
e[s._const.newValue]
),
u(
i.parentNode,
"HTMLTextAreaElement"
) &&
(i.parentNode.value =
e[s._const.newValue]);
break;
case s._const.modifyValue:
if (!i || void 0 === i.value) return !1;
i.value = e[s._const.newValue];
break;
case s._const.modifyComment:
if (!i || !u(i, "Comment")) return !1;
s.textDiff(
i,
i.data,
e[s._const.oldValue],
e[s._const.newValue]
);
break;
case s._const.modifyChecked:
if (!i || void 0 === i.checked)
return !1;
i.checked = e[s._const.newValue];
break;
case s._const.modifySelected:
if (!i || void 0 === i.selected)
return !1;
i.selected = e[s._const.newValue];
break;
case s._const.replaceElement:
var d =
"svg" ===
e[
s._const.newValue
].nodeName.toLowerCase() ||
"http://www.w3.org/2000/svg" ===
i.parentNode.namespaceURI;
i.parentNode.replaceChild(
p(e[s._const.newValue], d, s),
i
);
break;
case s._const.relocateGroup:
Array.apply(
void 0,
new Array(e[s._const.groupLength])
)
.map(function () {
return i.removeChild(
i.childNodes[
e[s._const.from]
]
);
})
.forEach(function (t, n) {
0 === n &&
(a =
i.childNodes[
e[s._const.to]
]),
i.insertBefore(
t,
a || null
);
});
break;
case s._const.removeElement:
i.parentNode.removeChild(i);
break;
case s._const.addElement:
var c = (m = r.slice()).splice(
m.length - 1,
1
)[0];
if (!u((i = f(t, m)), "Element"))
return !1;
i.insertBefore(
p(
e[s._const.element],
"http://www.w3.org/2000/svg" ===
i.namespaceURI,
s
),
i.childNodes[c] || null
);
break;
case s._const.removeTextElement:
if (!i || 3 !== i.nodeType) return !1;
var h = i.parentNode;
h.removeChild(i),
u(h, "HTMLTextAreaElement") &&
(h.value = "");
break;
case s._const.addTextElement:
var m;
c = (m = r.slice()).splice(
m.length - 1,
1
)[0];
if (
((n = s.document.createTextNode(
e[s._const.value]
)),
!(i = f(t, m)).childNodes)
)
return !1;
i.insertBefore(
n,
i.childNodes[c] || null
),
u(
i.parentNode,
"HTMLTextAreaElement"
) &&
(i.parentNode.value =
e[s._const.value]);
break;
default:
console.log("unknown action");
}
return (
s.postDiffApply({
diff: l.diff,
node: l.node,
newNode: n,
}),
!0
);
}
function g(t, e, s) {
var i = t[e];
(t[e] = t[s]), (t[s] = i);
}
function b(t, e, s) {
(e = e.slice()).reverse(),
e.forEach(function (e) {
!(function (t, e, s) {
switch (e[s._const.action]) {
case s._const.addAttribute:
(e[s._const.action] =
s._const.removeAttribute),
m(t, e, s);
break;
case s._const.modifyAttribute:
g(
e,
s._const.oldValue,
s._const.newValue
),
m(t, e, s);
break;
case s._const.removeAttribute:
(e[s._const.action] =
s._const.addAttribute),
m(t, e, s);
break;
case s._const.modifyTextElement:
case s._const.modifyValue:
case s._const.modifyComment:
case s._const.modifyChecked:
case s._const.modifySelected:
case s._const.replaceElement:
g(
e,
s._const.oldValue,
s._const.newValue
),
m(t, e, s);
break;
case s._const.relocateGroup:
g(
e,
s._const.from,
s._const.to
),
m(t, e, s);
break;
case s._const.removeElement:
(e[s._const.action] =
s._const.addElement),
m(t, e, s);
break;
case s._const.addElement:
(e[s._const.action] =
s._const.removeElement),
m(t, e, s);
break;
case s._const.removeTextElement:
(e[s._const.action] =
s._const.addTextElement),
m(t, e, s);
break;
case s._const.addTextElement:
(e[s._const.action] =
s._const.removeTextElement),
m(t, e, s);
break;
default:
console.log(
"unknown action"
);
}
})(t, e, s);
});
}
var v = function () {
return (
(v =
Object.assign ||
function (t) {
for (
var e,
s = arguments,
i = 1,
n = arguments.length;
i < n;
i++
)
for (var a in (e = s[i]))
Object.prototype.hasOwnProperty.call(
e,
a
) && (t[a] = e[a]);
return t;
}),
v.apply(this, arguments)
);
};
"function" == typeof SuppressedError &&
SuppressedError;
var w = function (t) {
var e = [];
return (
e.push(t.nodeName),
"#text" !== t.nodeName &&
"#comment" !== t.nodeName &&
t.attributes &&
(t.attributes.class &&
e.push(
""
.concat(t.nodeName, ".")
.concat(
t.attributes.class.replace(
/ /g,
"."
)
)
),
t.attributes.id &&
e.push(
""
.concat(t.nodeName, "#")
.concat(t.attributes.id)
)),
e
);
},
_ = function (t) {
var e = {},
s = {};
return (
t.forEach(function (t) {
w(t).forEach(function (t) {
var i = t in e;
i || t in s
? i &&
(delete e[t], (s[t] = !0))
: (e[t] = !0);
});
}),
e
);
},
y = function (t, e) {
var s = _(t),
i = _(e),
n = {};
return (
Object.keys(s).forEach(function (t) {
i[t] && (n[t] = !0);
}),
n
);
},
N = function (t) {
return (
delete t.outerDone,
delete t.innerDone,
delete t.valueDone,
!t.childNodes || t.childNodes.every(N)
);
},
x = function (t) {
if (
Object.prototype.hasOwnProperty.call(
t,
"data"
)
)
return {
nodeName:
"#text" === t.nodeName
? "#text"
: "#comment",
data: t.data,
};
var e = { nodeName: t.nodeName };
return (
Object.prototype.hasOwnProperty.call(
t,
"attributes"
) &&
(e.attributes = v(
{},
t.attributes
)),
Object.prototype.hasOwnProperty.call(
t,
"checked"
) && (e.checked = t.checked),
Object.prototype.hasOwnProperty.call(
t,
"value"
) && (e.value = t.value),
Object.prototype.hasOwnProperty.call(
t,
"selected"
) && (e.selected = t.selected),
Object.prototype.hasOwnProperty.call(
t,
"childNodes"
) &&
(e.childNodes = t.childNodes.map(
function (t) {
return x(t);
}
)),
e
);
},
D = function (t, e) {
if (
![
"nodeName",
"value",
"checked",
"selected",
"data",
].every(function (s) {
return t[s] === e[s];
})
)
return !1;
if (
Object.prototype.hasOwnProperty.call(
t,
"data"
)
)
return !0;
if (
Boolean(t.attributes) !==
Boolean(e.attributes)
)
return !1;
if (
Boolean(t.childNodes) !==
Boolean(e.childNodes)
)
return !1;
if (t.attributes) {
var s = Object.keys(t.attributes),
i = Object.keys(e.attributes);
if (s.length !== i.length) return !1;
if (
!s.every(function (s) {
return (
t.attributes[s] ===
e.attributes[s]
);
})
)
return !1;
}
if (t.childNodes) {
if (
t.childNodes.length !==
e.childNodes.length
)
return !1;
if (
!t.childNodes.every(function (
t,
s
) {
return D(t, e.childNodes[s]);
})
)
return !1;
}
return !0;
},
M = function (t, e, s, i, n) {
if ((void 0 === n && (n = !1), !t || !e))
return !1;
if (t.nodeName !== e.nodeName) return !1;
if (
["#text", "#comment"].includes(
t.nodeName
)
)
return !!n || t.data === e.data;
if (t.nodeName in s) return !0;
if (t.attributes && e.attributes) {
if (t.attributes.id) {
if (
t.attributes.id !==
e.attributes.id
)
return !1;
if (
""
.concat(t.nodeName, "#")
.concat(t.attributes.id) in
s
)
return !0;
}
if (
t.attributes.class &&
t.attributes.class ===
e.attributes.class
)
if (
""
.concat(t.nodeName, ".")
.concat(
t.attributes.class.replace(
/ /g,
"."
)
) in s
)
return !0;
}
if (i) return !0;
var a = t.childNodes
? t.childNodes.slice().reverse()
: [],
o = e.childNodes
? e.childNodes.slice().reverse()
: [];
if (a.length !== o.length) return !1;
if (n)
return a.every(function (t, e) {
return t.nodeName === o[e].nodeName;
});
var r = y(a, o);
return a.every(function (t, e) {
return M(t, o[e], r, !0, !0);
});
},
O = function (t, e) {
return Array.apply(
void 0,
new Array(t)
).map(function () {
return e;
});
},
E = function (t, e) {
for (
var s = t.childNodes
? t.childNodes
: [],
i = e.childNodes
? e.childNodes
: [],
n = O(s.length, !1),
a = O(i.length, !1),
o = [],
r = function () {
return arguments[1];
},
l = !1,
d = function () {
var t = (function (t, e, s, i) {
var n = 0,
a = [],
o = t.length,
r = e.length,
l = Array.apply(
void 0,
new Array(o + 1)
).map(function () {
return [];
}),
d = y(t, e),
c = o === r;
c &&
t.some(function (t, s) {
var i = w(t),
n = w(e[s]);
return i.length !==
n.length
? ((c = !1), !0)
: (i.some(
function (
t,
e
) {
if (
t !==
n[
e
]
)
return (
(c =
!1),
!0
);
}
),
!c || void 0);
});
for (var h = 0; h < o; h++)
for (
var u = t[h], p = 0;
p < r;
p++
) {
var f = e[p];
s[h] ||
i[p] ||
!M(u, f, d, c)
? (l[h + 1][
p + 1
] = 0)
: ((l[h + 1][
p + 1
] = l[h][p]
? l[h][
p
] + 1
: 1),
l[h + 1][
p + 1
] >= n &&
((n =
l[
h +
1
][
p +
1
]),
(a = [
h + 1,
p + 1,
])));
}
return (
0 !== n && {
oldValue: a[0] - n,
newValue: a[1] - n,
length: n,
}
);
})(s, i, n, a);
t
? (o.push(t),
Array.apply(
void 0,
new Array(t.length)
)
.map(r)
.forEach(function (
e
) {
return (function (
t,
e,
s,
i
) {
(t[
s.oldValue +
i
] = !0),
(e[
s.newValue +
i
] = !0);
})(n, a, t, e);
}))
: (l = !0);
};
!l;
)
d();
return (
(t.subsets = o), (t.subsetsAge = 100), o
);
},
V = (function () {
function t() {
this.list = [];
}
return (
(t.prototype.add = function (t) {
var e;
(e = this.list).push.apply(e, t);
}),
(t.prototype.forEach = function (t) {
this.list.forEach(function (e) {
return t(e);
});
}),
t
);
})();
function $(t, e) {
var s,
i,
n = t;
for (e = e.slice(); e.length > 0; )
(i = e.splice(0, 1)[0]),
(s = n),
(n = n.childNodes
? n.childNodes[i]
: void 0);
return { node: n, parentNode: s, nodeIndex: i };
}
function C(t, e, s) {
return (
e.forEach(function (e) {
!(function (t, e, s) {
var i, n, a, o;
if (
![
s._const.addElement,
s._const.addTextElement,
].includes(e[s._const.action])
) {
var r = $(t, e[s._const.route]);
(n = r.node),
(a = r.parentNode),
(o = r.nodeIndex);
}
var l,
d,
c = [],
h = { diff: e, node: n };
if (s.preVirtualDiffApply(h))
return !0;
switch (e[s._const.action]) {
case s._const.addAttribute:
n.attributes ||
(n.attributes = {}),
(n.attributes[
e[s._const.name]
] = e[s._const.value]),
"checked" ===
e[s._const.name]
? (n.checked = !0)
: "selected" ===
e[s._const.name]
? (n.selected = !0)
: "INPUT" ===
n.nodeName &&
"value" ===
e[
s._const
.name
] &&
(n.value =
e[
s._const.value
]);
break;
case s._const.modifyAttribute:
n.attributes[
e[s._const.name]
] = e[s._const.newValue];
break;
case s._const.removeAttribute:
delete n.attributes[
e[s._const.name]
],
0 ===
Object.keys(
n.attributes
).length &&
delete n.attributes,
"checked" ===
e[s._const.name]
? (n.checked = !1)
: "selected" ===
e[s._const.name]
? delete n.selected
: "INPUT" ===
n.nodeName &&
"value" ===
e[
s._const
.name
] &&
delete n.value;
break;
case s._const.modifyTextElement:
(n.data =
e[s._const.newValue]),
"TEXTAREA" ===
a.nodeName &&
(a.value =
e[
s._const.newValue
]);
break;
case s._const.modifyValue:
n.value =
e[s._const.newValue];
break;
case s._const.modifyComment:
n.data =
e[s._const.newValue];
break;
case s._const.modifyChecked:
n.checked =
e[s._const.newValue];
break;
case s._const.modifySelected:
n.selected =
e[s._const.newValue];
break;
case s._const.replaceElement:
(l = x(
e[s._const.newValue]
)),
(a.childNodes[o] = l);
break;
case s._const.relocateGroup:
n.childNodes
.splice(
e[s._const.from],
e[
s._const
.groupLength
]
)
.reverse()
.forEach(function (t) {
return n.childNodes.splice(
e[s._const.to],
0,
t
);
}),
n.subsets &&
n.subsets.forEach(
function (t) {
if (
e[
s
._const
.from
] <
e[
s
._const
.to
] &&
t.oldValue <=
e[
s
._const
.to
] &&
t.oldValue >
e[
s
._const
.from
]
)
(t.oldValue -=
e[
s._const.groupLength
]),
(i =
t.oldValue +
t.length -
e[
s
._const
.to
]) >
0 &&
(c.push(
{
oldValue:
e[
s
._const
.to
] +
e[
s
._const
.groupLength
],
newValue:
t.newValue +
t.length -
i,
length: i,
}
),
(t.length -=
i));
else if (
e[
s
._const
.from
] >
e[
s
._const
.to
] &&
t.oldValue >
e[
s
._const
.to
] &&
t.oldValue <
e[
s
._const
.from
]
) {
var i;
(t.oldValue +=
e[
s._const.groupLength
]),
(i =
t.oldValue +
t.length -
e[
s
._const
.to
]) >
0 &&
(c.push(
{
oldValue:
e[
s
._const
.to
] +
e[
s
._const
.groupLength
],
newValue:
t.newValue +
t.length -
i,
length: i,
}
),
(t.length -=
i));
} else
t.oldValue ===
e[
s
._const
.from
] &&
(t.oldValue =
e[
s._const.to
]);
}
);
break;
case s._const.removeElement:
a.childNodes.splice(o, 1),
a.subsets &&
a.subsets.forEach(
function (t) {
t.oldValue >
o
? (t.oldValue -= 1)
: t.oldValue ===
o
? (t.delete =
!0)
: t.oldValue <
o &&
t.oldValue +
t.length >
o &&
(t.oldValue +
t.length -
1 ===
o
? t.length--
: (c.push(
{
newValue:
t.newValue +
o -
t.oldValue,
oldValue:
o,
length:
t.length -
o +
t.oldValue -
1,
}
),
(t.length =
o -
t.oldValue)));
}
),
(n = a);
break;
case s._const.addElement:
var u = (d =
e[
s._const.route
].slice()).splice(
d.length - 1,
1
)[0];
(n =
null ===
(i = $(t, d)) ||
void 0 === i
? void 0
: i.node),
(l = x(
e[s._const.element]
)),
n.childNodes ||
(n.childNodes = []),
u >= n.childNodes.length
? n.childNodes.push(
l
)
: n.childNodes.splice(
u,
0,
l
),
n.subsets &&
n.subsets.forEach(
function (t) {
if (
t.oldValue >=
u
)
t.oldValue += 1;
else if (
t.oldValue <
u &&
t.oldValue +
t.length >
u
) {
var e =
t.oldValue +
t.length -
u;
c.push({
newValue:
t.newValue +
t.length -
e,
oldValue:
u +
1,
length: e,
}),
(t.length -=
e);
}
}
);
break;
case s._const.removeTextElement:
a.childNodes.splice(o, 1),
"TEXTAREA" ===
a.nodeName &&
delete a.value,
a.subsets &&
a.subsets.forEach(
function (t) {
t.oldValue >
o
? (t.oldValue -= 1)
: t.oldValue ===
o
? (t.delete =
!0)
: t.oldValue <
o &&
t.oldValue +
t.length >
o &&
(t.oldValue +
t.length -
1 ===
o
? t.length--
: (c.push(
{
newValue:
t.newValue +
o -
t.oldValue,
oldValue:
o,
length:
t.length -
o +
t.oldValue -
1,
}
),
(t.length =
o -
t.oldValue)));
}
),
(n = a);
break;
case s._const.addTextElement:
var p = (d =
e[
s._const.route
].slice()).splice(
d.length - 1,
1
)[0];
(l = {
nodeName: "#text",
data: e[s._const.value],
}),
(n = $(t, d).node)
.childNodes ||
(n.childNodes = []),
p >= n.childNodes.length
? n.childNodes.push(
l
)
: n.childNodes.splice(
p,
0,
l
),
"TEXTAREA" ===
n.nodeName &&
(n.value =
e[
s._const.newValue
]),
n.subsets &&
n.subsets.forEach(
function (t) {
if (
(t.oldValue >=
p &&
(t.oldValue += 1),
t.oldValue <
p &&
t.oldValue +
t.length >
p)
) {
var e =
t.oldValue +
t.length -
p;
c.push({
newValue:
t.newValue +
t.length -
e,
oldValue:
p +
1,
length: e,
}),
(t.length -=
e);
}
}
);
break;
default:
console.log(
"unknown action"
);
}
n.subsets &&
((n.subsets = n.subsets.filter(
function (t) {
return (
!t.delete &&
t.oldValue !==
t.newValue
);
}
)),
c.length &&
(n.subsets =
n.subsets.concat(c))),
s.postVirtualDiffApply({
node: h.node,
diff: h.diff,
newNode: l,
});
})(t, e, s);
}),
!0
);
}
function S(t, e) {
void 0 === e && (e = { valueDiffing: !0 });
var s = { nodeName: t.nodeName };
if (u(t, "Text", "Comment")) s.data = t.data;
else {
if (t.attributes && t.attributes.length > 0)
(s.attributes = {}),
Array.prototype.slice
.call(t.attributes)
.forEach(function (t) {
return (s.attributes[
t.name
] = t.value);
});
if (t.childNodes && t.childNodes.length > 0)
(s.childNodes = []),
Array.prototype.slice
.call(t.childNodes)
.forEach(function (t) {
return s.childNodes.push(
S(t, e)
);
});
e.valueDiffing &&
(u(t, "HTMLTextAreaElement") &&
(s.value = t.value),
u(t, "HTMLInputElement") &&
["radio", "checkbox"].includes(
t.type.toLowerCase()
) &&
void 0 !== t.checked
? (s.checked = t.checked)
: u(
t,
"HTMLButtonElement",
"HTMLDataElement",
"HTMLInputElement",
"HTMLLIElement",
"HTMLMeterElement",
"HTMLOptionElement",
"HTMLProgressElement",
"HTMLParamElement"
) && (s.value = t.value),
u(t, "HTMLOptionElement") &&
(s.selected = t.selected));
}
return s;
}
var k =
/<\s*\/*[a-zA-Z:_][a-zA-Z0-9:_\-.]*\s*(?:"[^"]*"['"]*|'[^']*'['"]*|[^'"/>])*\/*\s*>|<!--(?:.|\n|\r)*?-->/g,
T =
/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;
function A(t) {
return t
.replace(/&lt;/g, "<")
.replace(/&gt;/g, ">")
.replace(/&amp;/g, "&");
}
var L = {
area: !0,
base: !0,
br: !0,
col: !0,
embed: !0,
hr: !0,
img: !0,
input: !0,
keygen: !0,
link: !0,
menuItem: !0,
meta: !0,
param: !0,
source: !0,
track: !0,
wbr: !0,
},
P = function (t, e) {
var s = { nodeName: "", attributes: {} },
i = !1,
n = t.match(/<\/?([^\s]+?)[/\s>]/);
if (
n &&
((s.nodeName =
e || "svg" === n[1]
? n[1]
: n[1].toUpperCase()),
(L[n[1]] ||
"/" === t.charAt(t.length - 2)) &&
(i = !0),
s.nodeName.startsWith("!--"))
) {
var a = t.indexOf("--\x3e");
return {
type: "comment",
node: {
nodeName: "#comment",
data:
-1 !== a
? t.slice(4, a)
: "",
},
voidElement: i,
};
}
for (
var o = new RegExp(T), r = null, l = !1;
!l;
)
if (null === (r = o.exec(t))) l = !0;
else if (r[0].trim())
if (r[1]) {
var d = r[1].trim(),
c = [d, ""];
d.indexOf("=") > -1 &&
(c = d.split("=")),
(s.attributes[c[0]] = c[1]),
o.lastIndex--;
} else
r[2] &&
(s.attributes[r[2]] = r[3]
.trim()
.substring(
1,
r[3].length - 1
));
return {
type: "tag",
node: s,
voidElement: i,
};
},
R = function (t, e) {
void 0 === e &&
(e = {
valueDiffing: !0,
caseSensitive: !1,
});
var s,
i = [],
n = -1,
a = [],
o = !1;
if (0 !== t.indexOf("<")) {
var r = t.indexOf("<");
i.push({
nodeName: "#text",
data:
-1 === r
? t
: t.substring(0, r),
});
}
return (
t.replace(k, function (r, l) {
var d = "/" !== r.charAt(1),
c = r.startsWith("\x3c!--"),
h = l + r.length,
u = t.charAt(h);
if (c) {
var p = P(
r,
e.caseSensitive
).node;
if (n < 0) return i.push(p), "";
var f = a[n];
return (
f &&
p.nodeName &&
(f.node.childNodes ||
(f.node.childNodes =
[]),
f.node.childNodes.push(
p
)),
""
);
}
if (d) {
if (
("svg" ===
(s = P(
r,
e.caseSensitive || o
)).node.nodeName &&
(o = !0),
n++,
!s.voidElement &&
u &&
"<" !== u)
) {
s.node.childNodes ||
(s.node.childNodes =
[]);
var m = A(
t.slice(
h,
t.indexOf("<", h)
)
);
s.node.childNodes.push({
nodeName: "#text",
data: m,
}),
e.valueDiffing &&
"TEXTAREA" ===
s.node
.nodeName &&
(s.node.value = m);
}
0 === n &&
s.node.nodeName &&
i.push(s.node);
var g = a[n - 1];
g &&
s.node.nodeName &&
(g.node.childNodes ||
(g.node.childNodes =
[]),
g.node.childNodes.push(
s.node
)),
(a[n] = s);
}
if (
(!d || s.voidElement) &&
(n > -1 &&
(s.voidElement ||
(e.caseSensitive &&
s.node.nodeName ===
r.slice(
2,
-1
)) ||
(!e.caseSensitive &&
s.node.nodeName.toUpperCase() ===
r
.slice(
2,
-1
)
.toUpperCase())) &&
--n > -1 &&
("svg" ===
s.node.nodeName &&
(o = !1),
(s = a[n])),
"<" !== u && u)
) {
var b =
-1 === n
? i
: a[n].node
.childNodes ||
[],
v = t.indexOf("<", h);
m = A(
t.slice(
h,
-1 === v ? void 0 : v
)
);
b.push({
nodeName: "#text",
data: m,
});
}
return "";
}),
i[0]
);
},
H = (function () {
function t(t, e, s) {
(this.options = s),
(this.t1 =
"undefined" != typeof Element &&
u(t, "Element")
? S(t, this.options)
: "string" == typeof t
? R(t, this.options)
: JSON.parse(
JSON.stringify(t)
)),
(this.t2 =
"undefined" != typeof Element &&
u(e, "Element")
? S(e, this.options)
: "string" == typeof e
? R(e, this.options)
: JSON.parse(
JSON.stringify(e)
)),
(this.diffcount = 0),
(this.foundAll = !1),
this.debug &&
((this.t1Orig =
"undefined" !=
typeof Element &&
u(t, "Element")
? S(t, this.options)
: "string" == typeof t
? R(t, this.options)
: JSON.parse(
JSON.stringify(t)
)),
(this.t2Orig =
"undefined" !=
typeof Element &&
u(e, "Element")
? S(e, this.options)
: "string" == typeof e
? R(e, this.options)
: JSON.parse(
JSON.stringify(e)
))),
(this.tracker = new V());
}
return (
(t.prototype.init = function () {
return this.findDiffs(
this.t1,
this.t2
);
}),
(t.prototype.findDiffs = function (
t,
e
) {
var s;
do {
if (
this.options.debug &&
((this.diffcount += 1),
this.diffcount >
this.options.diffcap)
)
throw new Error(
"surpassed diffcap:"
.concat(
JSON.stringify(
this.t1Orig
),
" -> "
)
.concat(
JSON.stringify(
this.t2Orig
)
)
);
0 ===
(s = this.findNextDiff(
t,
e,
[]
)).length &&
(D(t, e) ||
(this.foundAll
? console.error(
"Could not find remaining diffs!"
)
: ((this.foundAll =
!0),
N(t),
(s =
this.findNextDiff(
t,
e,
[]
))))),
s.length > 0 &&
((this.foundAll = !1),
this.tracker.add(s),
C(t, s, this.options));
} while (s.length > 0);
return this.tracker.list;
}),
(t.prototype.findNextDiff = function (
t,
e,
s
) {
var i, n;
if (
this.options.maxDepth &&
s.length > this.options.maxDepth
)
return [];
if (!t.outerDone) {
if (
((i = this.findOuterDiff(
t,
e,
s
)),
this.options
.filterOuterDiff &&
(n =
this.options.filterOuterDiff(
t,
e,
i
)) &&
(i = n),
i.length > 0)
)
return (
(t.outerDone = !0), i
);
t.outerDone = !0;
}
if (
Object.prototype.hasOwnProperty.call(
t,
"data"
)
)
return [];
if (!t.innerDone) {
if (
(i = this.findInnerDiff(
t,
e,
s
)).length > 0
)
return i;
t.innerDone = !0;
}
if (
this.options.valueDiffing &&
!t.valueDone
) {
if (
(i = this.findValueDiff(
t,
e,
s
)).length > 0
)
return (
(t.valueDone = !0), i
);
t.valueDone = !0;
}
return [];
}),
(t.prototype.findOuterDiff = function (
t,
e,
s
) {
var i,
n,
a,
o,
r,
l,
d = [];
if (t.nodeName !== e.nodeName) {
if (!s.length)
throw new Error(
"Top level nodes have to be of the same kind."
);
return [
new h()
.setValue(
this.options._const
.action,
this.options._const
.replaceElement
)
.setValue(
this.options._const
.oldValue,
x(t)
)
.setValue(
this.options._const
.newValue,
x(e)
)
.setValue(
this.options._const
.route,
s
),
];
}
if (
s.length &&
this.options.diffcap <
Math.abs(
(t.childNodes || [])
.length -
(e.childNodes || [])
.length
)
)
return [
new h()
.setValue(
this.options._const
.action,
this.options._const
.replaceElement
)
.setValue(
this.options._const
.oldValue,
x(t)
)
.setValue(
this.options._const
.newValue,
x(e)
)
.setValue(
this.options._const
.route,
s
),
];
if (
Object.prototype.hasOwnProperty.call(
t,
"data"
) &&
t.data !== e.data
)
return "#text" === t.nodeName
? [
new h()
.setValue(
this.options
._const
.action,
this.options
._const
.modifyTextElement
)
.setValue(
this.options
._const
.route,
s
)
.setValue(
this.options
._const
.oldValue,
t.data
)
.setValue(
this.options
._const
.newValue,
e.data
),
]
: [
new h()
.setValue(
this.options
._const
.action,
this.options
._const
.modifyComment
)
.setValue(
this.options
._const
.route,
s
)
.setValue(
this.options
._const
.oldValue,
t.data
)
.setValue(
this.options
._const
.newValue,
e.data
),
];
for (
n = t.attributes
? Object.keys(
t.attributes
).sort()
: [],
a = e.attributes
? Object.keys(
e.attributes
).sort()
: [],
o = n.length,
l = 0;
l < o;
l++
)
(i = n[l]),
-1 === (r = a.indexOf(i))
? d.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeAttribute
)
.setValue(
this
.options
._const
.route,
s
)
.setValue(
this
.options
._const
.name,
i
)
.setValue(
this
.options
._const
.value,
t
.attributes[
i
]
)
)
: (a.splice(r, 1),
t.attributes[i] !==
e.attributes[i] &&
d.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.modifyAttribute
)
.setValue(
this
.options
._const
.route,
s
)
.setValue(
this
.options
._const
.name,
i
)
.setValue(
this
.options
._const
.oldValue,
t
.attributes[
i
]
)
.setValue(
this
.options
._const
.newValue,
e
.attributes[
i
]
)
));
for (
o = a.length, l = 0;
l < o;
l++
)
(i = a[l]),
d.push(
new h()
.setValue(
this.options
._const
.action,
this.options
._const
.addAttribute
)
.setValue(
this.options
._const
.route,
s
)
.setValue(
this.options
._const
.name,
i
)
.setValue(
this.options
._const
.value,
e.attributes[i]
)
);
return d;
}),
(t.prototype.findInnerDiff = function (
t,
e,
s
) {
var i = t.childNodes
? t.childNodes.slice()
: [],
n = e.childNodes
? e.childNodes.slice()
: [],
a = Math.max(
i.length,
n.length
),
o = Math.abs(
i.length - n.length
),
r = [],
l = 0;
if (
!this.options.maxChildCount ||
a < this.options.maxChildCount
) {
var d = Boolean(
t.subsets &&
t.subsetsAge--
),
c = d
? t.subsets
: t.childNodes &&
e.childNodes
? E(t, e)
: [];
if (
c.length > 0 &&
(r =
this.attemptGroupRelocation(
t,
e,
c,
s,
d
)).length > 0
)
return r;
}
for (var u = 0; u < a; u += 1) {
var p = i[u],
f = n[u];
o &&
(p && !f
? "#text" === p.nodeName
? (r.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeTextElement
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
)
.setValue(
this
.options
._const
.value,
p.data
)
),
(l -= 1))
: (r.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeElement
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
)
.setValue(
this
.options
._const
.element,
x(p)
)
),
(l -= 1))
: f &&
!p &&
("#text" ===
f.nodeName
? r.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.addTextElement
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
)
.setValue(
this
.options
._const
.value,
f.data
)
)
: r.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.addElement
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
)
.setValue(
this
.options
._const
.element,
x(f)
)
))),
p &&
f &&
(!this.options
.maxChildCount ||
a <
this.options
.maxChildCount
? (r = r.concat(
this.findNextDiff(
p,
f,
s.concat(
l
)
)
))
: D(p, f) ||
(i.length >
n.length
? ("#text" ===
p.nodeName
? r.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeTextElement
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
)
.setValue(
this
.options
._const
.value,
p.data
)
)
: r.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeElement
)
.setValue(
this
.options
._const
.element,
x(
p
)
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
)
),
i.splice(
u,
1
),
(u -= 1),
(l -= 1),
(o -= 1))
: i.length <
n.length
? ((r =
r.concat(
[
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.addElement
)
.setValue(
this
.options
._const
.element,
x(
f
)
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
),
]
)),
i.splice(
u,
0,
x(f)
),
(o -= 1))
: (r =
r.concat(
[
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.replaceElement
)
.setValue(
this
.options
._const
.oldValue,
x(
p
)
)
.setValue(
this
.options
._const
.newValue,
x(
f
)
)
.setValue(
this
.options
._const
.route,
s.concat(
l
)
),
]
)))),
(l += 1);
}
return (t.innerDone = !0), r;
}),
(t.prototype.attemptGroupRelocation =
function (t, e, s, i, n) {
for (
var a,
o,
r,
l,
d,
c = (function (
t,
e,
s
) {
var i = t.childNodes
? O(
t
.childNodes
.length,
!0
)
: [],
n = e.childNodes
? O(
e
.childNodes
.length,
!0
)
: [],
a = 0;
return (
s.forEach(
function (
t
) {
for (
var e =
t.oldValue +
t.length,
s =
t.newValue +
t.length,
o =
t.oldValue;
o <
e;
o += 1
)
i[
o
] =
a;
for (
o =
t.newValue;
o <
s;
o += 1
)
n[
o
] =
a;
a += 1;
}
),
{
gaps1: i,
gaps2: n,
}
);
})(t, e, s),
u = c.gaps1,
p = c.gaps2,
f =
t.childNodes.slice(),
m =
e.childNodes.slice(),
g = Math.min(
u.length,
p.length
),
b = [],
v = 0,
w = 0;
v < g;
w += 1, v += 1
)
if (
!n ||
(!0 !== u[v] &&
!0 !== p[v])
) {
if (!0 === u[w])
if (
"#text" ===
(l = f[w])
.nodeName
)
if (
"#text" ===
m[v]
.nodeName
) {
if (
l.data !==
m[v]
.data
) {
for (
var _ =
w;
f.length >
_ +
1 &&
"#text" ===
f[
_ +
1
]
.nodeName;
)
if (
((_ += 1),
m[
v
]
.data ===
f[
_
]
.data)
) {
d =
!0;
break;
}
d ||
b.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.modifyTextElement
)
.setValue(
this
.options
._const
.route,
i.concat(
w
)
)
.setValue(
this
.options
._const
.oldValue,
l.data
)
.setValue(
this
.options
._const
.newValue,
m[
v
]
.data
)
);
}
} else
b.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeTextElement
)
.setValue(
this
.options
._const
.route,
i.concat(
w
)
)
.setValue(
this
.options
._const
.value,
l.data
)
),
u.splice(
w,
1
),
f.splice(
w,
1
),
(g =
Math.min(
u.length,
p.length
)),
(w -= 1),
(v -= 1);
else
!0 === p[v]
? b.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.replaceElement
)
.setValue(
this
.options
._const
.oldValue,
x(
l
)
)
.setValue(
this
.options
._const
.newValue,
x(
m[
v
]
)
)
.setValue(
this
.options
._const
.route,
i.concat(
w
)
)
)
: (b.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.removeElement
)
.setValue(
this
.options
._const
.route,
i.concat(
w
)
)
.setValue(
this
.options
._const
.element,
x(
l
)
)
),
u.splice(
w,
1
),
f.splice(
w,
1
),
(g =
Math.min(
u.length,
p.length
)),
(w -= 1),
(v -= 1));
else if (!0 === p[v])
"#text" ===
(l = m[v]).nodeName
? (b.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.addTextElement
)
.setValue(
this
.options
._const
.route,
i.concat(
w
)
)
.setValue(
this
.options
._const
.value,
l.data
)
),
u.splice(
w,
0,
!0
),
f.splice(
w,
0,
{
nodeName:
"#text",
data: l.data,
}
),
(g = Math.min(
u.length,
p.length
)))
: (b.push(
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.addElement
)
.setValue(
this
.options
._const
.route,
i.concat(
w
)
)
.setValue(
this
.options
._const
.element,
x(
l
)
)
),
u.splice(
w,
0,
!0
),
f.splice(
w,
0,
x(l)
),
(g = Math.min(
u.length,
p.length
)));
else if (
u[w] !== p[v]
) {
if (b.length > 0)
return b;
if (
((r = s[u[w]]),
(o = Math.min(
r.newValue,
f.length -
r.length
)) !==
r.oldValue)
) {
a = !1;
for (
var y = 0;
y <
r.length;
y += 1
)
M(
f[
o +
y
],
f[
r.oldValue +
y
],
{},
!1,
!0
) ||
(a =
!0);
if (a)
return [
new h()
.setValue(
this
.options
._const
.action,
this
.options
._const
.relocateGroup
)
.setValue(
this
.options
._const
.groupLength,
r.length
)
.setValue(
this
.options
._const
.from,
r.oldValue
)
.setValue(
this
.options
._const
.to,
o
)
.setValue(
this
.options
._const
.route,
i
),
];
}
}
} else;
return b;
}),
(t.prototype.findValueDiff = function (
t,
e,
s
) {
var i = [];
return (
t.selected !== e.selected &&
i.push(
new h()
.setValue(
this.options
._const
.action,
this.options
._const
.modifySelected
)
.setValue(
this.options
._const
.oldValue,
t.selected
)
.setValue(
this.options
._const
.newValue,
e.selected
)
.setValue(
this.options
._const
.route,
s
)
),
(t.value || e.value) &&
t.value !== e.value &&
"OPTION" !== t.nodeName &&
i.push(
new h()
.setValue(
this.options
._const
.action,
this.options
._const
.modifyValue
)
.setValue(
this.options
._const
.oldValue,
t.value || ""
)
.setValue(
this.options
._const
.newValue,
e.value || ""
)
.setValue(
this.options
._const
.route,
s
)
),
t.checked !== e.checked &&
i.push(
new h()
.setValue(
this.options
._const
.action,
this.options
._const
.modifyChecked
)
.setValue(
this.options
._const
.oldValue,
t.checked
)
.setValue(
this.options
._const
.newValue,
e.checked
)
.setValue(
this.options
._const
.route,
s
)
),
i
);
}),
t
);
})(),
I = {
debug: !1,
diffcap: 10,
maxDepth: !1,
maxChildCount: 50,
valueDiffing: !0,
textDiff: function (t, e, s, i) {
t.data = i;
},
preVirtualDiffApply: function () {},
postVirtualDiffApply: function () {},
preDiffApply: function () {},
postDiffApply: function () {},
filterOuterDiff: null,
compress: !1,
_const: !1,
document:
!(
"undefined" == typeof window ||
!window.document
) && window.document,
components: [],
},
Y = (function () {
function t(t) {
if (
(void 0 === t && (t = {}),
Object.entries(I).forEach(function (
e
) {
var s = e[0],
i = e[1];
Object.prototype.hasOwnProperty.call(
t,
s
) || (t[s] = i);
}),
!t._const)
) {
var e = [
"addAttribute",
"modifyAttribute",
"removeAttribute",
"modifyTextElement",
"relocateGroup",
"removeElement",
"addElement",
"removeTextElement",
"addTextElement",
"replaceElement",
"modifyValue",
"modifyChecked",
"modifySelected",
"modifyComment",
"action",
"route",
"oldValue",
"newValue",
"element",
"group",
"groupLength",
"from",
"to",
"name",
"value",
"data",
"attributes",
"nodeName",
"childNodes",
"checked",
"selected",
],
s = {};
t.compress
? e.forEach(function (t, e) {
return (s[t] = e);
})
: e.forEach(function (t) {
return (s[t] = t);
}),
(t._const = s);
}
this.options = t;
}
return (
(t.prototype.apply = function (t, e) {
return (function (t, e, s) {
return e.every(function (e) {
return m(t, e, s);
});
})(t, e, this.options);
}),
(t.prototype.undo = function (t, e) {
return b(t, e, this.options);
}),
(t.prototype.diff = function (t, e) {
return new H(
t,
e,
this.options
).init();
}),
t
);
})();
const j = (
t,
e,
s,
{
classes: i,
format: n,
hiddenHeader: a,
sortable: o,
scrollY: r,
type: l,
},
{ noColumnWidths: d, unhideHeader: h }
) => ({
nodeName: "TR",
childNodes: t
.map((t, u) => {
const p = e[u] || {
type: l,
format: n,
sortable: !0,
searchable: !0,
};
if (p.hidden) return;
const f = t.attributes
? { ...t.attributes }
: {};
if (
(p.sortable &&
o &&
(!r.length || h) &&
(p.filter
? (f[
"data-filterable"
] = "true")
: (f["data-sortable"] =
"true")),
p.headerClass &&
(f.class = c(
f.class,
p.headerClass
)),
s.sort && s.sort.column === u)
) {
const t =
"asc" === s.sort.dir
? i.ascending
: i.descending;
(f.class = c(f.class, t)),
(f["aria-sort"] =
"asc" === s.sort.dir
? "ascending"
: "descending");
} else
s.filters[u] &&
(f.class = c(
f.class,
i.filterActive
));
if (s.widths[u] && !d) {
const t = `width: ${s.widths[u]}%;`;
f.style = c(f.style, t);
}
if (r.length && !h) {
const t =
"padding-bottom: 0;padding-top: 0;border: 0;";
f.style = c(f.style, t);
}
const m =
"html" === t.type
? t.data
: [
{
nodeName: "#text",
data:
t.text ??
String(
t.data
),
},
];
return {
nodeName: "TH",
attributes: f,
childNodes:
(!a && !r.length) || h
? p.sortable && o
? [
{
nodeName:
"BUTTON",
attributes:
{
class: p.filter
? i.filter
: i.sorter,
},
childNodes:
m,
},
]
: m
: [
{
nodeName:
"#text",
data: "",
},
],
};
})
.filter((t) => t),
}),
q = (
t,
e,
s,
i,
a,
o,
{
classes: r,
hiddenHeader: l,
header: d,
footer: h,
format: u,
sortable: p,
scrollY: f,
type: m,
rowRender: g,
tabIndex: b,
},
{
noColumnWidths: v,
unhideHeader: w,
renderHeader: _,
},
y,
N
) => {
const x = {
nodeName: "TABLE",
attributes: { ...t },
childNodes: [
{
nodeName: "TBODY",
childNodes: s.map(
({ row: t, index: e }) => {
const s = {
nodeName: "TR",
attributes: {
...t.attributes,
"data-index":
String(e),
},
childNodes: t.cells
.map((t, s) => {
const o = i[
s
] || {
type: m,
format: u,
sortable:
!0,
searchable:
!0,
};
if (
o.hidden
)
return;
const r = {
nodeName:
"TD",
attributes:
t.attributes
? {
...t.attributes,
}
: {},
childNodes:
"html" ===
o.type
? t.data
: [
{
nodeName:
"#text",
data: n(
t
),
},
],
};
if (
(d ||
h ||
!a
.widths[
s
] ||
v ||
(r.attributes.style =
c(
r
.attributes
.style,
`width: ${a.widths[s]}%;`
)),
o.cellClass &&
(r.attributes.class =
c(
r
.attributes
.class,
o.cellClass
)),
o.render)
) {
const i =
o.render(
t.data,
r,
e,
s
);
if (i) {
if (
"string" !=
typeof i
)
return i;
{
const t =
R(
`<td>${i}</td>`
);
1 ===
t
.childNodes
.length &&
[
"#text",
"#comment",
].includes(
t
.childNodes[0]
.nodeName
)
? (r.childNodes[0].data =
i)
: (r.childNodes =
t.childNodes);
}
}
}
return r;
})
.filter(
(t) => t
),
};
if (
(e === o &&
(s.attributes.class =
c(
s
.attributes
.class,
r.cursor
)),
g)
) {
const i = g(
t,
s,
e
);
if (i) {
if (
"string" !=
typeof i
)
return i;
{
const t = R(
`<tr>${i}</tr>`
);
!t.childNodes ||
(1 ===
t
.childNodes
.length &&
[
"#text",
"#comment",
].includes(
t
.childNodes[0]
.nodeName
))
? (s.childNodes[0].data =
i)
: (s.childNodes =
t.childNodes);
}
}
}
return s;
}
),
},
],
};
if (
((x.attributes.class = c(
x.attributes.class,
r.table
)),
d || h || _)
) {
const t = j(
e,
i,
a,
{
classes: r,
hiddenHeader: l,
sortable: p,
scrollY: f,
},
{
noColumnWidths: v,
unhideHeader: w,
}
);
if (d || _) {
const e = {
nodeName: "THEAD",
childNodes: [t],
};
(!f.length && !l) ||
w ||
(e.attributes = {
style: "height: 0px;",
}),
x.childNodes.unshift(e);
}
if (h) {
const e = {
nodeName: "TFOOT",
childNodes: [
d ? structuredClone(t) : t,
],
};
(!f.length && !l) ||
w ||
(e.attributes = {
style: "height: 0px;",
}),
x.childNodes.push(e);
}
}
return (
y.forEach((t) => x.childNodes.push(t)),
N.forEach((t) => x.childNodes.push(t)),
!1 !== b &&
(x.attributes.tabindex = String(b)),
x
);
};
"undefined" != typeof globalThis
? globalThis
: "undefined" != typeof window
? window
: "undefined" != typeof global
? global
: "undefined" != typeof self && self;
function F(t) {
return t &&
t.__esModule &&
Object.prototype.hasOwnProperty.call(
t,
"default"
)
? t.default
: t;
}
var B = { exports: {} },
z = F(
(B.exports = (function () {
var t = 1e3,
e = 6e4,
s = 36e5,
i = "millisecond",
n = "second",
a = "minute",
o = "hour",
r = "day",
l = "week",
d = "month",
c = "quarter",
h = "year",
u = "date",
p = "Invalid Date",
f =
/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,
m =
/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,
g = {
name: "en",
weekdays:
"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split(
"_"
),
months: "January_February_March_April_May_June_July_August_September_October_November_December".split(
"_"
),
ordinal: function (t) {
var e = [
"th",
"st",
"nd",
"rd",
],
s = t % 100;
return (
"[" +
t +
(e[(s - 20) % 10] ||
e[s] ||
e[0]) +
"]"
);
},
},
b = function (t, e, s) {
var i = String(t);
return !i || i.length >= e
? t
: "" +
Array(
e + 1 - i.length
).join(s) +
t;
},
v = {
s: b,
z: function (t) {
var e = -t.utcOffset(),
s = Math.abs(e),
i = Math.floor(s / 60),
n = s % 60;
return (
(e <= 0 ? "+" : "-") +
b(i, 2, "0") +
":" +
b(n, 2, "0")
);
},
m: function t(e, s) {
if (e.date() < s.date())
return -t(s, e);
var i =
12 *
(s.year() -
e.year()) +
(s.month() -
e.month()),
n = e.clone().add(i, d),
a = s - n < 0,
o = e
.clone()
.add(
i +
(a
? -1
: 1),
d
);
return +(
-(
i +
(s - n) /
(a
? n - o
: o - n)
) || 0
);
},
a: function (t) {
return t < 0
? Math.ceil(t) || 0
: Math.floor(t);
},
p: function (t) {
return (
{
M: d,
y: h,
w: l,
d: r,
D: u,
h: o,
m: a,
s: n,
ms: i,
Q: c,
}[t] ||
String(t || "")
.toLowerCase()
.replace(/s$/, "")
);
},
u: function (t) {
return void 0 === t;
},
},
w = "en",
_ = {};
_[w] = g;
var y = "$isDayjsObject",
N = function (t) {
return (
t instanceof O ||
!(!t || !t[y])
);
},
x = function t(e, s, i) {
var n;
if (!e) return w;
if ("string" == typeof e) {
var a = e.toLowerCase();
_[a] && (n = a),
s &&
((_[a] = s),
(n = a));
var o = e.split("-");
if (!n && o.length > 1)
return t(o[0]);
} else {
var r = e.name;
(_[r] = e), (n = r);
}
return (
!i && n && (w = n),
n || (!i && w)
);
},
D = function (t, e) {
if (N(t)) return t.clone();
var s =
"object" == typeof e
? e
: {};
return (
(s.date = t),
(s.args = arguments),
new O(s)
);
},
M = v;
(M.l = x),
(M.i = N),
(M.w = function (t, e) {
return D(t, {
locale: e.$L,
utc: e.$u,
x: e.$x,
$offset: e.$offset,
});
});
var O = (function () {
function g(t) {
(this.$L = x(
t.locale,
null,
!0
)),
this.parse(t),
(this.$x =
this.$x ||
t.x ||
{}),
(this[y] = !0);
}
var b = g.prototype;
return (
(b.parse = function (t) {
(this.$d = (function (
t
) {
var e = t.date,
s = t.utc;
if (null === e)
return new Date(
NaN
);
if (M.u(e))
return new Date();
if (
e instanceof
Date
)
return new Date(
e
);
if (
"string" ==
typeof e &&
!/Z$/i.test(e)
) {
var i =
e.match(f);
if (i) {
var n =
i[2] -
1 ||
0,
a = (
i[7] ||
"0"
).substring(
0,
3
);
return s
? new Date(
Date.UTC(
i[1],
n,
i[3] ||
1,
i[4] ||
0,
i[5] ||
0,
i[6] ||
0,
a
)
)
: new Date(
i[1],
n,
i[3] ||
1,
i[4] ||
0,
i[5] ||
0,
i[6] ||
0,
a
);
}
}
return new Date(e);
})(t)),
this.init();
}),
(b.init = function () {
var t = this.$d;
(this.$y =
t.getFullYear()),
(this.$M =
t.getMonth()),
(this.$D =
t.getDate()),
(this.$W =
t.getDay()),
(this.$H =
t.getHours()),
(this.$m =
t.getMinutes()),
(this.$s =
t.getSeconds()),
(this.$ms =
t.getMilliseconds());
}),
(b.$utils = function () {
return M;
}),
(b.isValid = function () {
return !(
this.$d.toString() ===
p
);
}),
(b.isSame = function (
t,
e
) {
var s = D(t);
return (
this.startOf(e) <=
s &&
s <= this.endOf(e)
);
}),
(b.isAfter = function (
t,
e
) {
return (
D(t) <
this.startOf(e)
);
}),
(b.isBefore = function (
t,
e
) {
return (
this.endOf(e) < D(t)
);
}),
(b.$g = function (t, e, s) {
return M.u(t)
? this[e]
: this.set(s, t);
}),
(b.unix = function () {
return Math.floor(
this.valueOf() / 1e3
);
}),
(b.valueOf = function () {
return this.$d.getTime();
}),
(b.startOf = function (
t,
e
) {
var s = this,
i = !!M.u(e) || e,
c = M.p(t),
p = function (
t,
e
) {
var n = M.w(
s.$u
? Date.UTC(
s.$y,
e,
t
)
: new Date(
s.$y,
e,
t
),
s
);
return i
? n
: n.endOf(
r
);
},
f = function (
t,
e
) {
return M.w(
s
.toDate()
[
t
].apply(
s.toDate(
"s"
),
(i
? [
0,
0,
0,
0,
]
: [
23,
59,
59,
999,
]
).slice(
e
)
),
s
);
},
m = this.$W,
g = this.$M,
b = this.$D,
v =
"set" +
(this.$u
? "UTC"
: "");
switch (c) {
case h:
return i
? p(1, 0)
: p(31, 11);
case d:
return i
? p(1, g)
: p(
0,
g + 1
);
case l:
var w =
this.$locale()
.weekStart ||
0,
_ =
(m < w
? m +
7
: m) -
w;
return p(
i
? b - _
: b +
(6 -
_),
g
);
case r:
case u:
return f(
v + "Hours",
0
);
case o:
return f(
v +
"Minutes",
1
);
case a:
return f(
v +
"Seconds",
2
);
case n:
return f(
v +
"Milliseconds",
3
);
default:
return this.clone();
}
}),
(b.endOf = function (t) {
return this.startOf(
t,
!1
);
}),
(b.$set = function (t, e) {
var s,
l = M.p(t),
c =
"set" +
(this.$u
? "UTC"
: ""),
p = ((s = {}),
(s[r] = c + "Date"),
(s[u] = c + "Date"),
(s[d] =
c + "Month"),
(s[h] =
c + "FullYear"),
(s[o] =
c + "Hours"),
(s[a] =
c + "Minutes"),
(s[n] =
c + "Seconds"),
(s[i] =
c +
"Milliseconds"),
s)[l],
f =
l === r
? this.$D +
(e -
this
.$W)
: e;
if (
l === d ||
l === h
) {
var m =
this.clone().set(
u,
1
);
m.$d[p](f),
m.init(),
(this.$d =
m.set(
u,
Math.min(
this
.$D,
m.daysInMonth()
)
).$d);
} else
p && this.$d[p](f);
return (
this.init(), this
);
}),
(b.set = function (t, e) {
return this.clone().$set(
t,
e
);
}),
(b.get = function (t) {
return this[M.p(t)]();
}),
(b.add = function (i, c) {
var u,
p = this;
i = Number(i);
var f = M.p(c),
m = function (t) {
var e = D(p);
return M.w(
e.date(
e.date() +
Math.round(
t *
i
)
),
p
);
};
if (f === d)
return this.set(
d,
this.$M + i
);
if (f === h)
return this.set(
h,
this.$y + i
);
if (f === r)
return m(1);
if (f === l)
return m(7);
var g =
((u = {}),
(u[a] = e),
(u[o] = s),
(u[n] = t),
u)[f] || 1,
b =
this.$d.getTime() +
i * g;
return M.w(b, this);
}),
(b.subtract = function (
t,
e
) {
return this.add(
-1 * t,
e
);
}),
(b.format = function (t) {
var e = this,
s = this.$locale();
if (!this.isValid())
return (
s.invalidDate ||
p
);
var i =
t ||
"YYYY-MM-DDTHH:mm:ssZ",
n = M.z(this),
a = this.$H,
o = this.$m,
r = this.$M,
l = s.weekdays,
d = s.months,
c = s.meridiem,
h = function (
t,
s,
n,
a
) {
return (
(t &&
(t[s] ||
t(
e,
i
))) ||
n[s].slice(
0,
a
)
);
},
u = function (t) {
return M.s(
a % 12 ||
12,
t,
"0"
);
},
f =
c ||
function (
t,
e,
s
) {
var i =
t < 12
? "AM"
: "PM";
return s
? i.toLowerCase()
: i;
};
return i.replace(
m,
function (t, i) {
return (
i ||
(function (
t
) {
switch (
t
) {
case "YY":
return String(
e.$y
).slice(
-2
);
case "YYYY":
return M.s(
e.$y,
4,
"0"
);
case "M":
return (
r +
1
);
case "MM":
return M.s(
r +
1,
2,
"0"
);
case "MMM":
return h(
s.monthsShort,
r,
d,
3
);
case "MMMM":
return h(
d,
r
);
case "D":
return e.$D;
case "DD":
return M.s(
e.$D,
2,
"0"
);
case "d":
return String(
e.$W
);
case "dd":
return h(
s.weekdaysMin,
e.$W,
l,
2
);
case "ddd":
return h(
s.weekdaysShort,
e.$W,
l,
3
);
case "dddd":
return l[
e
.$W
];
case "H":
return String(
a
);
case "HH":
return M.s(
a,
2,
"0"
);
case "h":
return u(
1
);
case "hh":
return u(
2
);
case "a":
return f(
a,
o,
!0
);
case "A":
return f(
a,
o,
!1
);
case "m":
return String(
o
);
case "mm":
return M.s(
o,
2,
"0"
);
case "s":
return String(
e.$s
);
case "ss":
return M.s(
e.$s,
2,
"0"
);
case "SSS":
return M.s(
e.$ms,
3,
"0"
);
case "Z":
return n;
}
return null;
})(t) ||
n.replace(
":",
""
)
);
}
);
}),
(b.utcOffset = function () {
return (
15 *
-Math.round(
this.$d.getTimezoneOffset() /
15
)
);
}),
(b.diff = function (
i,
u,
p
) {
var f,
m = this,
g = M.p(u),
b = D(i),
v =
(b.utcOffset() -
this.utcOffset()) *
e,
w = this - b,
_ = function () {
return M.m(
m,
b
);
};
switch (g) {
case h:
f = _() / 12;
break;
case d:
f = _();
break;
case c:
f = _() / 3;
break;
case l:
f =
(w - v) /
6048e5;
break;
case r:
f =
(w - v) /
864e5;
break;
case o:
f = w / s;
break;
case a:
f = w / e;
break;
case n:
f = w / t;
break;
default:
f = w;
}
return p ? f : M.a(f);
}),
(b.daysInMonth =
function () {
return this.endOf(d)
.$D;
}),
(b.$locale = function () {
return _[this.$L];
}),
(b.locale = function (
t,
e
) {
if (!t) return this.$L;
var s = this.clone(),
i = x(t, e, !0);
return (
i && (s.$L = i), s
);
}),
(b.clone = function () {
return M.w(
this.$d,
this
);
}),
(b.toDate = function () {
return new Date(
this.valueOf()
);
}),
(b.toJSON = function () {
return this.isValid()
? this.toISOString()
: null;
}),
(b.toISOString =
function () {
return this.$d.toISOString();
}),
(b.toString = function () {
return this.$d.toUTCString();
}),
g
);
})(),
E = O.prototype;
return (
(D.prototype = E),
[
["$ms", i],
["$s", n],
["$m", a],
["$H", o],
["$W", r],
["$M", d],
["$y", h],
["$D", u],
].forEach(function (t) {
E[t[1]] = function (e) {
return this.$g(
e,
t[0],
t[1]
);
};
}),
(D.extend = function (t, e) {
return (
t.$i ||
(t(e, O, D),
(t.$i = !0)),
D
);
}),
(D.locale = x),
(D.isDayjs = N),
(D.unix = function (t) {
return D(1e3 * t);
}),
(D.en = _[w]),
(D.Ls = _),
(D.p = {}),
D
);
})())
),
U = { exports: {} },
J = F(
(U.exports = (function () {
var t = {
LTS: "h:mm:ss A",
LT: "h:mm A",
L: "MM/DD/YYYY",
LL: "MMMM D, YYYY",
LLL: "MMMM D, YYYY h:mm A",
LLLL: "dddd, MMMM D, YYYY h:mm A",
},
e =
/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,
s = /\d\d/,
i = /\d\d?/,
n = /\d*[^-_:/,()\s\d]+/,
a = {},
o = function (t) {
return (
(t = +t) +
(t > 68 ? 1900 : 2e3)
);
},
r = function (t) {
return function (e) {
this[t] = +e;
};
},
l = [
/[+-]\d\d:?(\d\d)?|Z/,
function (t) {
(
this.zone ||
(this.zone = {})
).offset = (function (t) {
if (!t) return 0;
if ("Z" === t) return 0;
var e =
t.match(
/([+-]|\d\d)/g
),
s =
60 * e[1] +
(+e[2] || 0);
return 0 === s
? 0
: "+" === e[0]
? -s
: s;
})(t);
},
],
d = function (t) {
var e = a[t];
return (
e &&
(e.indexOf
? e
: e.s.concat(e.f))
);
},
c = function (t, e) {
var s,
i = a.meridiem;
if (i) {
for (
var n = 1;
n <= 24;
n += 1
)
if (
t.indexOf(
i(n, 0, e)
) > -1
) {
s = n > 12;
break;
}
} else
s = t === (e ? "pm" : "PM");
return s;
},
h = {
A: [
n,
function (t) {
this.afternoon = c(
t,
!1
);
},
],
a: [
n,
function (t) {
this.afternoon = c(
t,
!0
);
},
],
S: [
/\d/,
function (t) {
this.milliseconds =
100 * +t;
},
],
SS: [
s,
function (t) {
this.milliseconds =
10 * +t;
},
],
SSS: [
/\d{3}/,
function (t) {
this.milliseconds = +t;
},
],
s: [i, r("seconds")],
ss: [i, r("seconds")],
m: [i, r("minutes")],
mm: [i, r("minutes")],
H: [i, r("hours")],
h: [i, r("hours")],
HH: [i, r("hours")],
hh: [i, r("hours")],
D: [i, r("day")],
DD: [s, r("day")],
Do: [
n,
function (t) {
var e = a.ordinal,
s = t.match(/\d+/);
if (
((this.day = s[0]),
e)
)
for (
var i = 1;
i <= 31;
i += 1
)
e(i).replace(
/\[|\]/g,
""
) === t &&
(this.day =
i);
},
],
M: [i, r("month")],
MM: [s, r("month")],
MMM: [
n,
function (t) {
var e = d("months"),
s =
(
d(
"monthsShort"
) ||
e.map(
function (
t
) {
return t.slice(
0,
3
);
}
)
).indexOf(t) +
1;
if (s < 1)
throw new Error();
this.month =
s % 12 || s;
},
],
MMMM: [
n,
function (t) {
var e =
d("months").indexOf(
t
) + 1;
if (e < 1)
throw new Error();
this.month =
e % 12 || e;
},
],
Y: [/[+-]?\d+/, r("year")],
YY: [
s,
function (t) {
this.year = o(t);
},
],
YYYY: [/\d{4}/, r("year")],
Z: l,
ZZ: l,
};
function u(s) {
var i, n;
(i = s), (n = a && a.formats);
for (
var o = (s = i.replace(
/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,
function (e, s, i) {
var a =
i &&
i.toUpperCase();
return (
s ||
n[i] ||
t[i] ||
n[a].replace(
/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,
function (
t,
e,
s
) {
return (
e ||
s.slice(
1
)
);
}
)
);
}
)).match(e),
r = o.length,
l = 0;
l < r;
l += 1
) {
var d = o[l],
c = h[d],
u = c && c[0],
p = c && c[1];
o[l] = p
? { regex: u, parser: p }
: d.replace(/^\[|\]$/g, "");
}
return function (t) {
for (
var e = {}, s = 0, i = 0;
s < r;
s += 1
) {
var n = o[s];
if ("string" == typeof n)
i += n.length;
else {
var a = n.regex,
l = n.parser,
d = t.slice(i),
c = a.exec(d)[0];
l.call(e, c),
(t = t.replace(
c,
""
));
}
}
return (
(function (t) {
var e = t.afternoon;
if (void 0 !== e) {
var s = t.hours;
e
? s < 12 &&
(t.hours += 12)
: 12 === s &&
(t.hours = 0),
delete t.afternoon;
}
})(e),
e
);
};
}
return function (t, e, s) {
(s.p.customParseFormat = !0),
t &&
t.parseTwoDigitYear &&
(o = t.parseTwoDigitYear);
var i = e.prototype,
n = i.parse;
i.parse = function (t) {
var e = t.date,
i = t.utc,
o = t.args;
this.$u = i;
var r = o[1];
if ("string" == typeof r) {
var l = !0 === o[2],
d = !0 === o[3],
c = l || d,
h = o[2];
d && (h = o[2]),
(a = this.$locale()),
!l &&
h &&
(a = s.Ls[h]),
(this.$d = (function (
t,
e,
s
) {
try {
if (
[
"x",
"X",
].indexOf(
e
) > -1
)
return new Date(
("X" ===
e
? 1e3
: 1) *
t
);
var i = u(e)(t),
n = i.year,
a = i.month,
o = i.day,
r = i.hours,
l =
i.minutes,
d =
i.seconds,
c =
i.milliseconds,
h = i.zone,
p =
new Date(),
f =
o ||
(n || a
? 1
: p.getDate()),
m =
n ||
p.getFullYear(),
g = 0;
(n && !a) ||
(g =
a > 0
? a -
1
: p.getMonth());
var b = r || 0,
v = l || 0,
w = d || 0,
_ = c || 0;
return h
? new Date(
Date.UTC(
m,
g,
f,
b,
v,
w,
_ +
60 *
h.offset *
1e3
)
)
: s
? new Date(
Date.UTC(
m,
g,
f,
b,
v,
w,
_
)
)
: new Date(
m,
g,
f,
b,
v,
w,
_
);
} catch (t) {
return new Date(
""
);
}
})(e, r, i)),
this.init(),
h &&
!0 !== h &&
(this.$L =
this.locale(
h
).$L),
c &&
e !=
this.format(
r
) &&
(this.$d = new Date(
""
)),
(a = {});
} else if (r instanceof Array)
for (
var p = r.length, f = 1;
f <= p;
f += 1
) {
o[1] = r[f - 1];
var m = s.apply(
this,
o
);
if (m.isValid()) {
(this.$d = m.$d),
(this.$L =
m.$L),
this.init();
break;
}
f === p &&
(this.$d = new Date(
""
));
}
else n.call(this, t);
};
};
})())
);
z.extend(J);
const W = (t, e) => {
let s;
if (e)
switch (e) {
case "ISO_8601":
s = t;
break;
case "RFC_2822":
s = z(
t.slice(5),
"DD MMM YYYY HH:mm:ss ZZ"
).unix();
break;
case "MYSQL":
s = z(
t,
"YYYY-MM-DD hh:mm:ss"
).unix();
break;
case "UNIX":
s = z(t).unix();
break;
default:
s = z(t, e, !0).valueOf();
}
return s;
},
Q = (t, e) => {
if (
t?.constructor === Object &&
Object.prototype.hasOwnProperty.call(
t,
"data"
) &&
!Object.keys(t).find(
(t) =>
![
"text",
"order",
"data",
"attributes",
].includes(t)
)
)
return t;
const s = { data: t };
switch (e.type) {
case "string":
"string" != typeof t &&
((s.text = String(s.data)),
(s.order = s.text));
break;
case "date":
e.format &&
(s.order = W(
String(s.data),
e.format
));
break;
case "number":
(s.text = String(s.data)),
(s.data = parseInt(s.data, 10));
break;
case "html": {
const t = Array.isArray(s.data)
? {
nodeName: "TD",
childNodes: s.data,
}
: R(
`<td>${String(
s.data
)}</td>`
);
s.data = t.childNodes || [];
const e = i(t);
(s.text = e), (s.order = e);
break;
}
case "boolean":
"string" == typeof s.data &&
(s.data = s.data
.toLowerCase()
.trim()),
(s.data = ![
"false",
!1,
null,
void 0,
0,
].includes(s.data)),
(s.order = s.data ? 1 : 0),
(s.text = String(s.data));
break;
case "other":
(s.text = ""), (s.order = 0);
break;
default:
s.text = JSON.stringify(s.data);
}
return s;
},
X = (t) => {
if (
t instanceof Object &&
t.constructor === Object &&
t.hasOwnProperty("data") &&
("string" == typeof t.text ||
"string" == typeof t.data)
)
return t;
const e = { data: t };
if ("string" == typeof t) {
if (t.length) {
const s = R(`<th>${t}</th>`);
if (
s.childNodes &&
(1 !== s.childNodes.length ||
"#text" !==
s.childNodes[0]
.nodeName)
) {
(e.data = s.childNodes),
(e.type = "html");
const t = i(s);
e.text = t;
}
}
} else
[null, void 0].includes(t)
? (e.text = "")
: (e.text = JSON.stringify(t));
return e;
},
Z = (t, e = void 0, s, n, a) => {
const o = { data: [], headings: [] };
if (t.headings)
o.headings = t.headings.map((t) =>
X(t)
);
else if (e?.tHead)
o.headings = Array.from(
e.tHead.querySelectorAll("th")
).map((t, e) => {
const o = ((t) => {
const e = S(t, {
valueDiffing: !1,
});
let s;
return (
(s =
!e.childNodes ||
(1 ===
e.childNodes
.length &&
"#text" ===
e.childNodes[0]
.nodeName)
? {
data: t.innerText,
type: "string",
}
: {
data: e.childNodes,
type: "html",
text: i(e),
}),
(s.attributes =
e.attributes),
s
);
})(t);
s[e] ||
(s[e] = {
type: n,
format: a,
searchable: !0,
sortable: !0,
});
const r = s[e];
return (
("false" !==
t.dataset.sortable
?.trim()
.toLowerCase() &&
"false" !==
t.dataset.sort
?.trim()
.toLowerCase()) ||
(r.sortable = !1),
"false" ===
t.dataset.searchable
?.trim()
.toLowerCase() &&
(r.searchable = !1),
("true" !==
t.dataset.hidden
?.trim()
.toLowerCase() &&
"true" !==
t
.getAttribute(
"hidden"
)
?.trim()
.toLowerCase()) ||
(r.hidden = !0),
[
"number",
"string",
"html",
"date",
"boolean",
"other",
].includes(t.dataset.type) &&
((r.type = t.dataset.type),
"date" === r.type &&
t.dataset.format &&
(r.format =
t.dataset.format)),
o
);
});
else if (t.data?.length) {
const e = t.data[0],
s = Array.isArray(e) ? e : e.cells;
o.headings = s.map((t) => X(""));
} else
e?.tBodies.length &&
(o.headings = Array.from(
e.tBodies[0].rows[0].cells
).map((t) => X("")));
for (let t = 0; t < o.headings.length; t++)
s[t] ||
(s[t] = {
type: n,
format: a,
sortable: !0,
searchable: !0,
});
if (
(t.data
? (o.data = t.data.map((t) => {
let e, i;
return (
Array.isArray(t)
? ((e = {}), (i = t))
: ((e = t.attributes),
(i = t.cells)),
{
attributes: e,
cells: i.map((t, e) =>
Q(t, s[e])
),
}
);
}))
: e?.tBodies?.length &&
(o.data = Array.from(
e.tBodies[0].rows
).map((t) => ({
attributes: r(t.attributes),
cells: Array.from(
t.cells
).map((t, e) => {
const i = t.dataset
.content
? Q(
t.dataset
.content,
s[e]
)
: ((t, e) => {
let s;
switch (
e.type
) {
case "string":
s = {
data: t.innerText,
};
break;
case "date": {
const i =
t.innerText;
s = {
data: i,
order: W(
i,
e.format
),
};
break;
}
case "number":
s = {
data: parseInt(
t.innerText,
10
),
text: t.innerText,
};
break;
case "boolean": {
const e =
![
"false",
"0",
"null",
"undefined",
].includes(
t.innerText
.toLowerCase()
.trim()
);
s = {
data: e,
text: e
? "1"
: "0",
order: e
? 1
: 0,
};
break;
}
default:
s = {
data:
S(
t,
{
valueDiffing:
!1,
}
)
.childNodes ||
[],
text: t.innerText,
order: t.innerText,
};
}
return (
(s.attributes =
r(
t.attributes
)),
s
);
})(t, s[e]);
return (
t.dataset.order &&
(i.order = isNaN(
parseFloat(
t.dataset
.order
)
)
? t.dataset
.order
: parseFloat(
t
.dataset
.order
)),
i
);
}),
}))),
o.data.length &&
o.data[0].cells.length !==
o.headings.length)
)
throw new Error(
"Data heading length mismatch."
);
return o;
};
class G {
constructor(t) {
(this.dt = t), (this.cursor = !1);
}
setCursor(t = !1) {
if (t === this.cursor) return;
const e = this.cursor;
if (
((this.cursor = t),
this.dt._renderTable(),
!1 !== t && this.dt.options.scrollY)
) {
const t = l(
this.dt.options.classes.cursor
),
e = this.dt.dom.querySelector(
`tr${t}`
);
e &&
e.scrollIntoView({
block: "nearest",
});
}
this.dt.emit(
"datatable.cursormove",
this.cursor,
e
);
}
add(t) {
if (!Array.isArray(t) || t.length < 1)
return;
const e = {
cells: t.map((t, e) => {
const s =
this.dt.columns.settings[e];
return Q(t, s);
}),
};
this.dt.data.data.push(e),
(this.dt.hasRows = !0),
this.dt.update(!0);
}
remove(t) {
if (!Array.isArray(t))
return this.remove([t]);
(this.dt.data.data =
this.dt.data.data.filter(
(e, s) => !t.includes(s)
)),
this.dt.data.data.length ||
(this.dt.hasRows = !1),
this.dt.update(!0);
}
findRowIndex(t, e) {
return this.dt.data.data.findIndex((s) => {
const i = s.cells[t];
return n(i)
.toLowerCase()
.includes(String(e).toLowerCase());
});
}
findRow(t, e) {
const s = this.findRowIndex(t, e);
if (s < 0)
return {
index: -1,
row: null,
cols: [],
};
const i = this.dt.data.data[s],
n = i.cells.map((t) => t.data);
return { index: s, row: i, cols: n };
}
updateRow(t, e) {
const s = {
cells: e.map((t, e) => {
const s =
this.dt.columns.settings[e];
return Q(t, s);
}),
};
this.dt.data.data.splice(t, 1, s),
this.dt.update(!0);
}
}
class K {
constructor(t) {
(this.dt = t), this.init();
}
init() {
[this.settings, this._state] = ((
t = [],
e,
s
) => {
let i = [],
n = !1;
const a = [];
return (
t.forEach((t) => {
(Array.isArray(t.select)
? t.select
: [t.select]
).forEach((o) => {
i[o]
? t.type &&
(i[o].type = t.type)
: (i[o] = {
type: t.type || e,
sortable: !0,
searchable: !0,
});
const r = i[o];
t.render &&
(r.render = t.render),
t.format
? (r.format =
t.format)
: "date" ===
t.type &&
(r.format = s),
t.cellClass &&
(r.cellClass =
t.cellClass),
t.headerClass &&
(r.headerClass =
t.headerClass),
t.locale &&
(r.locale =
t.locale),
!1 === t.sortable
? (r.sortable = !1)
: (t.numeric &&
(r.numeric =
t.numeric),
t.caseFirst &&
(r.caseFirst =
t.caseFirst)),
!1 === t.searchable
? (r.searchable =
!1)
: t.sensitivity &&
(r.sensitivity =
t.sensitivity),
(r.searchable ||
r.sortable) &&
void 0 !==
t.ignorePunctuation &&
(r.ignorePunctuation =
t.ignorePunctuation),
t.hidden &&
(r.hidden = !0),
t.filter &&
(r.filter =
t.filter),
t.sortSequence &&
(r.sortSequence =
t.sortSequence),
t.sort &&
(t.filter
? (a[o] =
t.sort)
: (n = {
column: o,
dir: t.sort,
})),
void 0 !==
t.searchItemSeparator &&
(r.searchItemSeparator =
t.searchItemSeparator);
});
}),
(i = i.map(
(t) =>
t || {
type: e,
format:
"date" === e
? s
: void 0,
sortable: !0,
searchable: !0,
}
)),
[
i,
{
filters: a,
sort: n,
widths: [],
},
]
);
})(
this.dt.options.columns,
this.dt.options.type,
this.dt.options.format
);
}
get(t) {
return t < 0 || t >= this.size()
? null
: { ...this.settings[t] };
}
size() {
return this.settings.length;
}
swap(t) {
if (2 === t.length) {
const e = this.dt.data.headings.map(
(t, e) => e
),
s = t[0],
i = t[1],
n = e[i];
return (
(e[i] = e[s]),
(e[s] = n),
this.order(e)
);
}
}
order(t) {
(this.dt.data.headings = t.map(
(t) => this.dt.data.headings[t]
)),
this.dt.data.data.forEach(
(e) =>
(e.cells = t.map(
(t) => e.cells[t]
))
),
(this.settings = t.map(
(t) => this.settings[t]
)),
this.dt.update();
}
hide(t) {
t.length &&
(t.forEach((t) => {
this.settings[t] ||
(this.settings[t] = {
type: "string",
});
this.settings[t].hidden = !0;
}),
this.dt.update());
}
show(t) {
t.length &&
(t.forEach((t) => {
this.settings[t] ||
(this.settings[t] = {
type: "string",
sortable: !0,
});
delete this.settings[t].hidden;
}),
this.dt.update());
}
visible(t) {
return (
void 0 === t &&
(t = [
...Array(
this.dt.data.headings.length
).keys(),
]),
Array.isArray(t)
? t.map(
(t) =>
!this.settings[t]?.hidden
)
: !this.settings[t]?.hidden
);
}
add(t) {
const e = this.dt.data.headings.length;
if (
((this.dt.data.headings =
this.dt.data.headings.concat([
X(t.heading),
])),
this.dt.data.data.forEach((e, s) => {
e.cells = e.cells.concat([
Q(t.data[s], t),
]);
}),
(this.settings[e] = {
type: t.type || "string",
sortable: !0,
searchable: !0,
}),
t.type ||
t.format ||
t.sortable ||
t.render ||
t.filter)
) {
const s = this.settings[e];
t.render && (s.render = t.render),
t.format && (s.format = t.format),
t.cellClass &&
(s.cellClass = t.cellClass),
t.headerClass &&
(s.headerClass = t.headerClass),
t.locale && (s.locale = t.locale),
!1 === t.sortable
? (s.sortable = !1)
: (t.numeric &&
(s.numeric = t.numeric),
t.caseFirst &&
(s.caseFirst =
t.caseFirst)),
!1 === t.searchable
? (s.searchable = !1)
: t.sensitivity &&
(s.sensitivity =
t.sensitivity),
(s.searchable || s.sortable) &&
t.ignorePunctuation &&
(s.ignorePunctuation =
t.ignorePunctuation),
t.hidden && (s.hidden = !0),
t.filter && (s.filter = t.filter),
t.sortSequence &&
(s.sortSequence =
t.sortSequence);
}
this.dt.update(!0);
}
remove(t) {
if (!Array.isArray(t))
return this.remove([t]);
(this.dt.data.headings =
this.dt.data.headings.filter(
(e, s) => !t.includes(s)
)),
this.dt.data.data.forEach(
(e) =>
(e.cells = e.cells.filter(
(e, s) => !t.includes(s)
))
),
this.dt.update(!0);
}
filter(t, e = !1) {
if (!this.settings[t]?.filter?.length)
return;
const s = this._state.filters[t];
let i;
if (s) {
let e = !1;
i = this.settings[t].filter.find(
(t) =>
!!e || (t === s && (e = !0), !1)
);
} else {
const e = this.settings[t].filter;
i = e ? e[0] : void 0;
}
i
? (this._state.filters[t] = i)
: s &&
(this._state.filters[t] = void 0),
(this.dt._currentPage = 1),
this.dt.update(),
e ||
this.dt.emit(
"datatable.filter",
t,
i
);
}
sort(t, e = void 0, s = !1) {
const i = this.settings[t];
if (
(s ||
this.dt.emit(
"datatable.sorting",
t,
e
),
!e)
) {
const s =
!(
!this._state.sort ||
this._state.sort.column !==
t
) && this._state.sort?.dir,
n = i?.sortSequence || [
"asc",
"desc",
];
if (s) {
const t = n.indexOf(s);
e =
-1 === t
? n[0] || "asc"
: t === n.length - 1
? n[0]
: n[t + 1];
} else e = n.length ? n[0] : "asc";
}
const a =
!!["string", "html"].includes(i.type) &&
new Intl.Collator(
i.locale || this.dt.options.locale,
{
usage: "sort",
numeric:
i.numeric ||
this.dt.options.numeric,
caseFirst:
i.caseFirst ||
this.dt.options.caseFirst,
ignorePunctuation:
i.ignorePunctuation ||
this.dt.options
.ignorePunctuation,
}
);
this.dt.data.data.sort((s, i) => {
const o = s.cells[t],
r = i.cells[t];
let l = o.order ?? n(o),
d = r.order ?? n(r);
if ("desc" === e) {
const t = l;
(l = d), (d = t);
}
return a
? a.compare(String(l), String(d))
: l < d
? -1
: l > d
? 1
: 0;
}),
(this._state.sort = {
column: t,
dir: e,
}),
this.dt._searchQueries.length
? (this.dt.multiSearch(
this.dt._searchQueries
),
this.dt.emit(
"datatable.sort",
t,
e
))
: s ||
((this.dt._currentPage = 1),
this.dt.update(),
this.dt.emit(
"datatable.sort",
t,
e
));
}
_measureWidths() {
const t = this.dt.data.headings.filter(
(t, e) => !this.settings[e]?.hidden
);
if (
(this.dt.options.scrollY.length ||
this.dt.options.fixedColumns) &&
t?.length
) {
this._state.widths = [];
const t = { noPaging: !0 };
if (
this.dt.options.header ||
this.dt.options.footer
) {
this.dt.options.scrollY.length &&
(t.unhideHeader = !0),
this.dt.headerDOM &&
this.dt.headerDOM.parentElement.removeChild(
this.dt.headerDOM
),
(t.noColumnWidths = !0),
this.dt._renderTable(t);
const e = Array.from(
this.dt.dom
.querySelector(
"thead, tfoot"
)
?.firstElementChild?.querySelectorAll(
"th"
) || []
);
let s = 0;
const i = this.dt.data.headings.map(
(t, i) => {
if (
this.settings[i]
?.hidden
)
return 0;
const n =
e[s].offsetWidth;
return (s += 1), n;
}
),
n = i.reduce(
(t, e) => t + e,
0
);
this._state.widths = i.map(
(t) => (t / n) * 100
);
} else {
(t.renderHeader = !0),
this.dt._renderTable(t);
const e = Array.from(
this.dt.dom
.querySelector(
"thead, tfoot"
)
?.firstElementChild?.querySelectorAll(
"th"
) || []
);
let s = 0;
const i = this.dt.data.headings.map(
(t, i) => {
if (
this.settings[i]
?.hidden
)
return 0;
const n =
e[s].offsetWidth;
return (s += 1), n;
}
),
n = i.reduce(
(t, e) => t + e,
0
);
this._state.widths = i.map(
(t) => (t / n) * 100
);
}
this.dt._renderTable();
}
}
}
const tt = {
sortable: !0,
locale: "en",
numeric: !0,
caseFirst: "false",
searchable: !0,
sensitivity: "base",
ignorePunctuation: !0,
destroyable: !0,
searchItemSeparator: "",
searchQuerySeparator: " ",
searchAnd: !1,
data: {},
type: "html",
format: "YYYY-MM-DD",
columns: [],
paging: !0,
perPage: 10,
perPageSelect: [5, 10, 15, 20, 25],
nextPrev: !0,
firstLast: !1,
prevText: "",
nextText: "",
firstText: "«",
lastText: "»",
ellipsisText: "…",
truncatePager: !0,
pagerDelta: 2,
scrollY: "",
fixedColumns: !0,
fixedHeight: !1,
footer: !1,
header: !0,
hiddenHeader: !1,
caption: void 0,
rowNavigation: !1,
tabIndex: !1,
pagerRender: !1,
rowRender: !1,
tableRender: !1,
diffDomOptions: { valueDiffing: !1 },
labels: {
placeholder: "Search...",
searchTitle: "Search within table",
perPage: "entries per page",
pageTitle: "Page {page}",
noRows: "No entries found",
noResults:
"No results match your search query",
info: "Showing {start} to {end} of {rows} entries",
},
template: (t, e) =>
`<div class='${t.classes.top}'>\n ${
t.paging && t.perPageSelect
? `<div class='${t.classes.dropdown}'>\n <label>\n <select class='${t.classes.selector}'></select> ${t.labels.perPage}\n </label>\n </div>`
: ""
}\n ${
t.searchable
? `<div class='${
t.classes.search
}'>\n <input class='${
t.classes.input
}' placeholder='${
t.labels.placeholder
}' type='search' title='${
t.labels.searchTitle
}'${
e.id
? ` aria-controls="${e.id}"`
: ""
}>\n </div>`
: ""
}\n</div>\n<div class='${
t.classes.container
}'${
t.scrollY.length
? ` style='height: ${t.scrollY}; overflow-Y: auto;'`
: ""
}></div>\n<div class='${
t.classes.bottom
}'>\n ${
t.paging
? `<div class='${t.classes.info}'></div>`
: ""
}\n <nav class='${
t.classes.pagination
}'></nav>\n</div>`,
classes: {
active: "datatable-active",
ascending: "datatable-ascending",
bottom: "datatable-bottom",
container: "datatable-container",
cursor: "datatable-cursor",
descending: "datatable-descending",
disabled: "datatable-disabled",
dropdown: "datatable-dropdown",
ellipsis: "datatable-ellipsis",
filter: "datatable-filter",
filterActive: "datatable-filter-active",
empty: "datatable-empty",
headercontainer:
"datatable-headercontainer",
hidden: "datatable-hidden",
info: "datatable-info",
input: "datatable-input",
loading: "datatable-loading",
pagination: "datatable-pagination",
paginationList:
"datatable-pagination-list",
paginationListItem:
"datatable-pagination-list-item",
paginationListItemLink:
"datatable-pagination-list-item-link",
search: "datatable-search",
selector: "datatable-selector",
sorter: "datatable-sorter",
table: "datatable-table",
top: "datatable-top",
wrapper: "datatable-wrapper",
},
},
et = (t, e, s, i = {}) => ({
nodeName: "LI",
attributes: {
class:
i.active && !i.hidden
? `${s.classes.paginationListItem} ${s.classes.active}`
: i.hidden
? `${s.classes.paginationListItem} ${s.classes.hidden} ${s.classes.disabled}`
: s.classes.paginationListItem,
},
childNodes: [
{
nodeName: "BUTTON",
attributes: {
"data-page": String(t),
class: s.classes
.paginationListItemLink,
"aria-label":
s.labels.pageTitle.replace(
"{page}",
String(t)
),
},
childNodes: [
{ nodeName: "#text", data: e },
],
},
],
}),
st = (t, e, s, i, n) => {
let a = [];
if (
(n.firstLast &&
a.push(et(1, n.firstText, n)),
n.nextPrev)
) {
const e = t ? 1 : s - 1;
a.push(
et(e, n.prevText, n, { hidden: t })
);
}
let o = [...Array(i).keys()].map((t) =>
et(t + 1, String(t + 1), n, {
active: t === s - 1,
})
);
if (
(n.truncatePager &&
(o = ((t, e, s, i) => {
const n = i.pagerDelta,
a = i.classes,
o = i.ellipsisText,
r = 2 * n;
let l = e - n,
d = e + n;
e < 4 - n + r
? (d = 3 + r)
: e > s - (3 - n + r) &&
(l = s - (2 + r));
const c = [];
for (let e = 1; e <= s; e++)
if (
1 == e ||
e == s ||
(e >= l && e <= d)
) {
const s = t[e - 1];
c.push(s);
}
let h;
const u = [];
return (
c.forEach((e) => {
const s = parseInt(
e.childNodes[0]
.attributes[
"data-page"
],
10
);
if (h) {
const e = parseInt(
h.childNodes[0]
.attributes[
"data-page"
],
10
);
if (s - e == 2)
u.push(t[e]);
else if (
s - e !=
1
) {
const t = {
nodeName:
"LI",
attributes:
{
class: `${a.paginationListItem} ${a.ellipsis} ${a.disabled}`,
},
childNodes:
[
{
nodeName:
"BUTTON",
attributes:
{
class: a.paginationListItemLink,
},
childNodes:
[
{
nodeName:
"#text",
data: o,
},
],
},
],
};
u.push(t);
}
}
u.push(e), (h = e);
}),
u
);
})(o, s, i, n)),
(a = a.concat(o)),
n.nextPrev)
) {
const t = e ? i : s + 1;
a.push(
et(t, n.nextText, n, { hidden: e })
);
}
n.firstLast && a.push(et(i, n.lastText, n));
return {
nodeName: "UL",
attributes: {
class: n.classes.paginationList,
},
childNodes: o.length > 1 ? a : [],
};
};
const it = {
classes: {
row: "datatable-editor-row",
form: "datatable-editor-form",
item: "datatable-editor-item",
menu: "datatable-editor-menu",
save: "datatable-editor-save",
block: "datatable-editor-block",
cancel: "datatable-editor-cancel",
close: "datatable-editor-close",
inner: "datatable-editor-inner",
input: "datatable-editor-input",
label: "datatable-editor-label",
modal: "datatable-editor-modal",
action: "datatable-editor-action",
header: "datatable-editor-header",
wrapper: "datatable-editor-wrapper",
editable: "datatable-editor-editable",
container: "datatable-editor-container",
separator: "datatable-editor-separator",
},
labels: {
closeX: "x",
editCell: "Edit Cell",
editRow: "Edit Row",
removeRow: "Remove Row",
reallyRemove: "Are you sure?",
reallyCancel:
"Do you really want to cancel?",
save: "Save",
cancel: "Cancel",
},
cancelModal: (t) =>
confirm(t.options.labels.reallyCancel),
inline: !0,
hiddenColumns: !1,
contextMenu: !0,
clickEvent: "dblclick",
excludeColumns: [],
menuItems: [
{
text: (t) => t.options.labels.editCell,
action: (t, e) => {
if (
!(
t.event.target instanceof
Element
)
)
return;
const s =
t.event.target.closest("td");
return t.editCell(s);
},
},
{
text: (t) => t.options.labels.editRow,
action: (t, e) => {
if (
!(
t.event.target instanceof
Element
)
)
return;
const s =
t.event.target.closest("tr");
return t.editRow(s);
},
},
{ separator: !0 },
{
text: (t) => t.options.labels.removeRow,
action: (t, e) => {
if (
t.event.target instanceof
Element &&
confirm(
t.options.labels
.reallyRemove
)
) {
const e =
t.event.target.closest(
"tr"
);
t.removeRow(e);
}
},
},
],
};
class nt {
constructor(t, e = {}) {
(this.dt = t),
(this.options = { ...it, ...e });
}
init() {
this.initialized ||
(this.options.classes.editable
?.split(" ")
.forEach((t) =>
this.dt.wrapperDOM.classList.add(
t
)
),
this.options.inline &&
((this.originalRowRender =
this.dt.options.rowRender),
(this.dt.options.rowRender = (
t,
e,
s
) => {
let i = this.rowRender(t, e, s);
return (
this.originalRowRender &&
(i =
this.originalRowRender(
t,
i,
s
)),
i
);
})),
this.options.contextMenu &&
((this.containerDOM = s("div", {
id: this.options.classes
.container,
})),
(this.wrapperDOM = s("div", {
class: this.options.classes
.wrapper,
})),
(this.menuDOM = s("ul", {
class: this.options.classes
.menu,
})),
this.options.menuItems &&
this.options.menuItems.length &&
this.options.menuItems.forEach(
(t) => {
const e = s("li", {
class: t.separator
? this.options
.classes
.separator
: this.options
.classes
.item,
});
if (!t.separator) {
const i = s("a", {
class: this
.options
.classes
.action,
href:
t.url ||
"#",
html:
"function" ==
typeof t.text
? t.text(
this
)
: t.text,
});
e.appendChild(i),
t.action &&
"function" ==
typeof t.action &&
i.addEventListener(
"click",
(e) => {
e.preventDefault(),
t.action(
this,
e
);
}
);
}
this.menuDOM.appendChild(
e
);
}
),
this.wrapperDOM.appendChild(
this.menuDOM
),
this.containerDOM.appendChild(
this.wrapperDOM
),
this.updateMenu()),
(this.data = {}),
(this.menuOpen = !1),
(this.editing = !1),
(this.editingRow = !1),
(this.editingCell = !1),
this.bindEvents(),
setTimeout(() => {
(this.initialized = !0),
this.dt.emit("editable.init");
}, 10));
}
bindEvents() {
(this.events = {
keydown: this.keydown.bind(this),
click: this.click.bind(this),
}),
this.dt.dom.addEventListener(
this.options.clickEvent,
this.events.click
),
document.addEventListener(
"keydown",
this.events.keydown
),
this.options.contextMenu &&
((this.events.context =
this.context.bind(this)),
(this.events.updateMenu =
this.updateMenu.bind(this)),
(this.events.dismissMenu =
this.dismissMenu.bind(this)),
(this.events.reset = (function (
t,
e = 300
) {
let s;
return (...i) => {
clearTimeout(s),
(s = window.setTimeout(
() => t(),
e
));
};
})(
() => this.events.updateMenu(),
50
)),
this.dt.dom.addEventListener(
"contextmenu",
this.events.context
),
document.addEventListener(
"click",
this.events.dismissMenu
),
window.addEventListener(
"resize",
this.events.reset
),
window.addEventListener(
"scroll",
this.events.reset
));
}
context(t) {
const e = t.target;
if (!(e instanceof Element)) return;
this.event = t;
const s = e.closest("tbody td");
if (!this.disabled && s) {
t.preventDefault();
let e = t.pageX,
s = t.pageY;
e > this.limits.x &&
(e -= this.rect.width),
s > this.limits.y &&
(s -= this.rect.height),
(this.wrapperDOM.style.top = `${s}px`),
(this.wrapperDOM.style.left = `${e}px`),
this.openMenu(),
this.updateMenu();
}
}
click(t) {
const e = t.target;
if (e instanceof Element)
if (
this.editing &&
this.data &&
this.editingCell
) {
const t = l(
this.options.classes.input
),
e = this.modalDOM
? this.modalDOM.querySelector(
`input${t}[type=text]`
)
: this.dt.wrapperDOM.querySelector(
`input${t}[type=text]`
);
this.saveCell(e.value);
} else if (!this.editing) {
const s = e.closest("tbody td");
s &&
(this.editCell(s),
t.preventDefault());
}
}
keydown(t) {
const e = l(this.options.classes.input);
if (this.modalDOM) {
if ("Escape" === t.key)
this.options.cancelModal(this) &&
this.closeModal();
else if ("Enter" === t.key)
if (this.editingCell) {
const t =
this.modalDOM.querySelector(
`input${e}[type=text]`
);
this.saveCell(t.value);
} else {
const t = Array.from(
this.modalDOM.querySelectorAll(
`input${e}[type=text]`
)
).map((t) => t.value.trim());
this.saveRow(t, this.data.row);
}
} else if (this.editing && this.data)
if ("Enter" === t.key) {
if (this.editingCell) {
const t =
this.dt.wrapperDOM.querySelector(
`input${e}[type=text]`
);
this.saveCell(t.value);
} else if (this.editingRow) {
const t = Array.from(
this.dt.wrapperDOM.querySelectorAll(
`input${e}[type=text]`
)
).map((t) => t.value.trim());
this.saveRow(t, this.data.row);
}
} else
"Escape" === t.key &&
(this.editingCell
? this.saveCell(
this.data.content
)
: this.editingRow &&
this.saveRow(
null,
this.data.row
));
}
editCell(t) {
const e = o(
t.cellIndex,
this.dt.columns.settings
);
if (this.options.excludeColumns.includes(e))
return void this.closeMenu();
const s = parseInt(
t.parentElement.dataset.index,
10
),
i = this.dt.data.data[s].cells[e];
(this.data = {
cell: i,
rowIndex: s,
columnIndex: e,
content: n(i),
}),
(this.editing = !0),
(this.editingCell = !0),
this.options.inline
? this.dt.update()
: this.editCellModal(),
this.closeMenu();
}
editCellModal() {
const t = this.data.cell,
e = this.data.columnIndex,
i =
this.dt.data.headings[e].text ||
String(
this.dt.data.headings[e].data
),
o = [
`<div class='${this.options.classes.inner}'>`,
`<div class='${this.options.classes.header}'>`,
`<h4>${this.options.labels.editCell}</h4>`,
`<button class='${this.options.classes.close}' type='button' data-editor-cancel>${this.options.labels.closeX}</button>`,
" </div>",
`<div class='${this.options.classes.block}'>`,
`<form class='${this.options.classes.form}'>`,
`<div class='${this.options.classes.row}'>`,
`<label class='${
this.options.classes.label
}'>${a(i)}</label>`,
`<input class='${
this.options.classes.input
}' value='${a(n(t))}' type='text'>`,
"</div>",
`<div class='${this.options.classes.row}'>`,
`<button class='${this.options.classes.cancel}' type='button' data-editor-cancel>${this.options.labels.cancel}</button>`,
`<button class='${this.options.classes.save}' type='button' data-editor-save>${this.options.labels.save}</button>`,
"</div>",
"</form>",
"</div>",
"</div>",
].join(""),
r = s("div", {
class: this.options.classes.modal,
html: o,
});
(this.modalDOM = r), this.openModal();
const d = l(this.options.classes.input),
c = r.querySelector(
`input${d}[type=text]`
);
c.focus(),
(c.selectionStart = c.selectionEnd =
c.value.length),
r.addEventListener("click", (t) => {
const e = t.target;
e instanceof Element &&
(e.hasAttribute(
"data-editor-cancel"
)
? (t.preventDefault(),
this.options.cancelModal(
this
) && this.closeModal())
: e.hasAttribute(
"data-editor-save"
) &&
(t.preventDefault(),
this.saveCell(c.value)));
});
}
saveCell(t) {
const e = this.data.content,
s =
this.dt.columns.settings[
this.data.columnIndex
].type || this.dt.options.type,
i = t.trim();
let n;
if ("number" === s)
n = { data: parseFloat(i) };
else if ("boolean" === s)
n = ["", "false", "0"].includes(i)
? {
data: !1,
text: "false",
order: 0,
}
: {
data: !0,
text: "true",
order: 1,
};
else if ("html" === s)
n = {
data: [
{ nodeName: "#text", data: t },
],
text: t,
order: t,
};
else if ("string" === s) n = { data: t };
else if ("date" === s) {
const e =
this.dt.columns.settings[
this.data.columnIndex
].format || this.dt.options.format;
n = { data: t, order: W(String(t), e) };
} else n = { data: t };
(this.dt.data.data[
this.data.rowIndex
].cells[this.data.columnIndex] = n),
this.closeModal();
const a = this.data.rowIndex,
o = this.data.columnIndex;
(this.data = {}),
this.dt.update(!0),
(this.editing = !1),
(this.editingCell = !1),
this.dt.emit(
"editable.save.cell",
t,
e,
a,
o
);
}
editRow(t) {
if (
!t ||
"TR" !== t.nodeName ||
this.editing
)
return;
const e = parseInt(t.dataset.index, 10),
s = this.dt.data.data[e];
(this.data = { row: s.cells, rowIndex: e }),
(this.editing = !0),
(this.editingRow = !0),
this.options.inline
? this.dt.update()
: this.editRowModal(),
this.closeMenu();
}
editRowModal() {
const t = this.data.row,
e = [
`<div class='${this.options.classes.inner}'>`,
`<div class='${this.options.classes.header}'>`,
`<h4>${this.options.labels.editRow}</h4>`,
`<button class='${this.options.classes.close}' type='button' data-editor-cancel>${this.options.labels.closeX}</button>`,
" </div>",
`<div class='${this.options.classes.block}'>`,
`<form class='${this.options.classes.form}'>`,
`<div class='${this.options.classes.row}'>`,
`<button class='${this.options.classes.cancel}' type='button' data-editor-cancel>${this.options.labels.cancel}</button>`,
`<button class='${this.options.classes.save}' type='button' data-editor-save>${this.options.labels.save}</button>`,
"</div>",
"</form>",
"</div>",
"</div>",
].join(""),
i = s("div", {
class: this.options.classes.modal,
html: e,
}),
o = i.firstElementChild;
if (!o) return;
const r =
o.lastElementChild?.firstElementChild;
if (!r) return;
t.forEach((t, e) => {
const i = this.dt.columns.settings[e];
if (
(!i.hidden ||
(i.hidden &&
this.options
.hiddenColumns)) &&
!this.options.excludeColumns.includes(
e
)
) {
const i =
this.dt.data.headings[e].text ||
String(
this.dt.data.headings[e]
.data
);
r.insertBefore(
s("div", {
class: this.options.classes
.row,
html: [
`<div class='${this.options.classes.row}'>`,
`<label class='${
this.options.classes
.label
}'>${a(i)}</label>`,
`<input class='${
this.options.classes
.input
}' value='${a(
n(t)
)}' type='text'>`,
"</div>",
].join(""),
}),
r.lastElementChild
);
}
}),
(this.modalDOM = i),
this.openModal();
const d = l(this.options.classes.input),
c = Array.from(
r.querySelectorAll(
`input${d}[type=text]`
)
);
i.addEventListener("click", (t) => {
const e = t.target;
if (e instanceof Element)
if (
e.hasAttribute(
"data-editor-cancel"
)
)
this.options.cancelModal(
this
) && this.closeModal();
else if (
e.hasAttribute(
"data-editor-save"
)
) {
const t = c.map((t) =>
t.value.trim()
);
this.saveRow(t, this.data.row);
}
});
}
saveRow(t, e) {
const s = e.map((t) => n(t)),
i =
this.dt.data.data[
this.data.rowIndex
];
if (t) {
let s = 0;
i.cells = e.map((e, i) => {
if (
this.options.excludeColumns.includes(
i
) ||
this.dt.columns.settings[i]
.hidden
)
return e;
const n =
this.dt.columns.settings[i]
.type ||
this.dt.options.type,
a = t[s++];
let o;
if ("number" === n)
o = { data: parseFloat(a) };
else if ("boolean" === n)
o = ["", "false", "0"].includes(
a
)
? {
data: !1,
text: "false",
order: 0,
}
: {
data: !0,
text: "true",
order: 1,
};
else if ("html" === n)
o = {
data: [
{
nodeName: "#text",
data: a,
},
],
text: a,
order: a,
};
else if ("string" === n)
o = { data: a };
else if ("date" === n) {
const t =
this.dt.columns.settings[i]
.format ||
this.dt.options.format;
o = {
data: a,
order: W(String(a), t),
};
} else o = { data: a };
return o;
});
}
const a = i.cells.map((t) => n(t));
(this.data = {}),
this.dt.update(!0),
this.closeModal(),
(this.editing = !1),
this.dt.emit(
"editable.save.row",
a,
s,
e
);
}
openModal() {
this.modalDOM &&
document.body.appendChild(
this.modalDOM
);
}
closeModal() {
this.editing &&
this.modalDOM &&
(document.body.removeChild(
this.modalDOM
),
(this.modalDOM =
this.editing =
this.editingRow =
this.editingCell =
!1));
}
removeRow(t) {
if (
!t ||
"TR" !== t.nodeName ||
this.editing
)
return;
const e = parseInt(t.dataset.index, 10);
this.dt.rows.remove(e), this.closeMenu();
}
updateMenu() {
const t =
window.scrollX ||
window.pageXOffset,
e =
window.scrollY ||
window.pageYOffset;
(this.rect =
this.wrapperDOM.getBoundingClientRect()),
(this.limits = {
x:
window.innerWidth +
t -
this.rect.width,
y:
window.innerHeight +
e -
this.rect.height,
});
}
dismissMenu(t) {
const e = t.target;
if (
!(e instanceof Element) ||
this.wrapperDOM.contains(e)
)
return;
let s = !0;
if (this.editing) {
const t = l(this.options.classes.input);
s = !e.matches(`input${t}[type=text]`);
}
s && this.closeMenu();
}
openMenu() {
if (
this.editing &&
this.data &&
this.editingCell
) {
const t = l(this.options.classes.input),
e = this.modalDOM
? this.modalDOM.querySelector(
`input${t}[type=text]`
)
: this.dt.wrapperDOM.querySelector(
`input${t}[type=text]`
);
this.saveCell(e.value);
}
document.body.appendChild(
this.containerDOM
),
(this.menuOpen = !0),
this.dt.emit("editable.context.open");
}
closeMenu() {
this.menuOpen &&
((this.menuOpen = !1),
document.body.removeChild(
this.containerDOM
),
this.dt.emit("editable.context.close"));
}
destroy() {
this.dt.dom.removeEventListener(
this.options.clickEvent,
this.events.click
),
this.dt.dom.removeEventListener(
"contextmenu",
this.events.context
),
document.removeEventListener(
"click",
this.events.dismissMenu
),
document.removeEventListener(
"keydown",
this.events.keydown
),
window.removeEventListener(
"resize",
this.events.reset
),
window.removeEventListener(
"scroll",
this.events.reset
),
document.body.contains(
this.containerDOM
) &&
document.body.removeChild(
this.containerDOM
),
this.options.inline &&
(this.dt.options.rowRender =
this.originalRowRender),
(this.initialized = !1);
}
rowRender(t, e, s) {
if (!this.data || this.data.rowIndex !== s)
return e;
if (this.editingCell) {
e.childNodes[
(function (t, e) {
let s = t,
i = 0;
for (; i < t; )
e[i].hidden && (s -= 1),
i++;
return s;
})(
this.data.columnIndex,
this.dt.columns.settings
)
].childNodes = [
{
nodeName: "INPUT",
attributes: {
type: "text",
value: this.data.content,
class: this.options.classes
.input,
},
},
];
} else
e.childNodes.forEach((s, i) => {
const n = o(
i,
this.dt.columns.settings
),
r = t[n];
if (
!this.options.excludeColumns.includes(
n
)
) {
e.childNodes[i].childNodes = [
{
nodeName: "INPUT",
attributes: {
type: "text",
value: a(
r.text ||
String(
r.data
) ||
""
),
class: this.options
.classes.input,
},
},
];
}
});
return e;
}
}
const at = {
classes: {
button: "datatable-column-filter-button",
menu: "datatable-column-filter-menu",
container:
"datatable-column-filter-container",
wrapper: "datatable-column-filter-wrapper",
},
labels: {
button: "Filter columns within the table",
},
hiddenColumns: [],
};
class ot {
constructor(t, e = {}) {
(this.dt = t),
(this.options = { ...at, ...e });
}
init() {
if (this.initialized) return;
const t = l(this.options.classes.button);
let e = this.dt.wrapperDOM.querySelector(t);
if (!e) {
e = s("button", {
class: this.options.classes.button,
html: "▦",
});
const t = l(
this.dt.options.classes.search
),
i =
this.dt.wrapperDOM.querySelector(
t
);
i
? i.appendChild(e)
: this.dt.wrapperDOM.appendChild(e),
(this.addedButtonDOM = !0);
}
(this.buttonDOM = e),
(this.containerDOM = s("div", {
id: this.options.classes.container,
})),
(this.wrapperDOM = s("div", {
class: this.options.classes.wrapper,
})),
(this.menuDOM = s("ul", {
class: this.options.classes.menu,
html: this.dt.data.headings
.map((t, e) => {
const s =
this.dt.columns
.settings[e];
return this.options.hiddenColumns.includes(
e
)
? ""
: `<li data-column="${e}">\n <input type="checkbox" value="${
t.text || t.data
}" ${
s.hidden
? ""
: "checked=''"
}>\n <label>\n ${
t.text || t.data
}\n </label>\n </li>`;
})
.join(""),
})),
this.wrapperDOM.appendChild(
this.menuDOM
),
this.containerDOM.appendChild(
this.wrapperDOM
),
this._measureSpace(),
this._bind(),
(this.initialized = !0);
}
dismiss() {
this.addedButtonDOM &&
this.buttonDOM.parentElement &&
this.buttonDOM.parentElement.removeChild(
this.buttonDOM
),
document.removeEventListener(
"click",
this.events.click
);
}
_bind() {
(this.events = {
click: this._click.bind(this),
}),
document.addEventListener(
"click",
this.events.click
);
}
_openMenu() {
document.body.appendChild(
this.containerDOM
),
this._measureSpace(),
(this.menuOpen = !0),
this.dt.emit("columnFilter.menu.open");
}
_closeMenu() {
this.menuOpen &&
((this.menuOpen = !1),
document.body.removeChild(
this.containerDOM
),
this.dt.emit(
"columnFilter.menu.close"
));
}
_measureSpace() {
const t =
window.scrollX ||
window.pageXOffset,
e =
window.scrollY ||
window.pageYOffset;
(this.rect =
this.wrapperDOM.getBoundingClientRect()),
(this.limits = {
x:
window.innerWidth +
t -
this.rect.width,
y:
window.innerHeight +
e -
this.rect.height,
});
}
_click(t) {
const e = t.target;
if (e instanceof Element)
if (
((this.event = t),
this.buttonDOM.contains(e))
) {
if (
(t.preventDefault(),
this.menuOpen)
)
return void this._closeMenu();
this._openMenu();
let e = t.pageX,
s = t.pageY;
e > this.limits.x &&
(e -= this.rect.width),
s > this.limits.y &&
(s -= this.rect.height),
(this.wrapperDOM.style.top = `${s}px`),
(this.wrapperDOM.style.left = `${e}px`);
} else if (this.menuDOM.contains(e)) {
const t = l(
this.options.classes.menu
),
s = e.closest(`${t} > li`);
if (!s) return;
const i = s.querySelector(
"input[type=checkbox]"
);
i.contains(e) ||
(i.checked = !i.checked);
const n = Number(s.dataset.column);
i.checked
? this.dt.columns.show([n])
: this.dt.columns.hide([n]);
} else
this.menuOpen && this._closeMenu();
}
}
(exports.DataTable = class {
constructor(t, e = {}) {
const s =
"string" == typeof t
? document.querySelector(t)
: t;
s instanceof HTMLTableElement
? (this.dom = s)
: ((this.dom =
document.createElement("table")),
s.appendChild(this.dom));
const i = {
...tt.diffDomOptions,
...e.diffDomOptions,
},
n = { ...tt.labels, ...e.labels },
a = { ...tt.classes, ...e.classes };
(this.options = {
...tt,
...e,
diffDomOptions: i,
labels: n,
classes: a,
}),
(this._initialInnerHTML = this.options
.destroyable
? this.dom.innerHTML
: ""),
this.options.tabIndex
? (this.dom.tabIndex =
this.options.tabIndex)
: this.options.rowNavigation &&
-1 === this.dom.tabIndex &&
(this.dom.tabIndex = 0),
(this._listeners = {
onResize: () => this._onResize(),
}),
(this._dd = new Y(
this.options.diffDomOptions || {}
)),
(this.initialized = !1),
(this._events = {}),
(this._currentPage = 0),
(this.onFirstPage = !0),
(this.hasHeadings = !1),
(this.hasRows = !1),
(this._searchQueries = []),
this.init();
}
init() {
if (
this.initialized ||
d(this.dom, this.options.classes.table)
)
return !1;
(this._virtualDOM = S(
this.dom,
this.options.diffDomOptions || {}
)),
(this._tableAttributes = {
...this._virtualDOM.attributes,
}),
(this._tableFooters =
this._virtualDOM.childNodes?.filter(
(t) => "TFOOT" === t.nodeName
) ?? []),
(this._tableCaptions =
this._virtualDOM.childNodes?.filter(
(t) => "CAPTION" === t.nodeName
) ?? []),
void 0 !== this.options.caption &&
this._tableCaptions.push({
nodeName: "CAPTION",
childNodes: [
{
nodeName: "#text",
data: this.options
.caption,
},
],
}),
(this.rows = new G(this)),
(this.columns = new K(this)),
(this.data = Z(
this.options.data,
this.dom,
this.columns.settings,
this.options.type,
this.options.format
)),
this._render(),
setTimeout(() => {
this.emit("datatable.init"),
(this.initialized = !0);
}, 10);
}
_render() {
(this.wrapperDOM = s("div", {
class: `${this.options.classes.wrapper} ${this.options.classes.loading}`,
})),
(this.wrapperDOM.innerHTML =
this.options.template(
this.options,
this.dom
));
const t = l(this.options.classes.selector),
e = this.wrapperDOM.querySelector(
`select${t}`
);
e &&
this.options.paging &&
this.options.perPageSelect
? this.options.perPageSelect.forEach(
(t) => {
const [s, i] = Array.isArray(
t
)
? [t[0], t[1]]
: [String(t), t],
n =
i ===
this.options.perPage,
a = new Option(
s,
String(i),
n,
n
);
e.appendChild(a);
}
)
: e && e.parentElement.removeChild(e);
const i = l(this.options.classes.container);
(this.containerDOM =
this.wrapperDOM.querySelector(i)),
(this._pagerDOMs = []);
const n = l(
this.options.classes.pagination
);
Array.from(
this.wrapperDOM.querySelectorAll(n)
).forEach((t) => {
t instanceof HTMLElement &&
((t.innerHTML = `<ul class="${this.options.classes.paginationList}"></ul>`),
this._pagerDOMs.push(
t.firstElementChild
));
}),
(this._virtualPagerDOM = {
nodeName: "UL",
attributes: {
class: this.options.classes
.paginationList,
},
});
const a = l(this.options.classes.info);
(this._label =
this.wrapperDOM.querySelector(a)),
this.dom.parentElement.replaceChild(
this.wrapperDOM,
this.dom
),
this.containerDOM.appendChild(this.dom),
(this._rect =
this.dom.getBoundingClientRect()),
this._fixHeight(),
this.options.header ||
this.wrapperDOM.classList.add(
"no-header"
),
this.options.footer ||
this.wrapperDOM.classList.add(
"no-footer"
),
this.options.sortable &&
this.wrapperDOM.classList.add(
"sortable"
),
this.options.searchable &&
this.wrapperDOM.classList.add(
"searchable"
),
this.options.fixedHeight &&
this.wrapperDOM.classList.add(
"fixed-height"
),
this.options.fixedColumns &&
this.wrapperDOM.classList.add(
"fixed-columns"
),
this._bindEvents(),
this.columns._state.sort &&
this.columns.sort(
this.columns._state.sort.column,
this.columns._state.sort.dir,
!0
),
this.update(!0);
}
_renderTable(t = {}) {
let e;
e =
(this.options.paging ||
this._searchQueries.length ||
this.columns._state.filters
.length) &&
this._currentPage &&
this.pages.length &&
!t.noPaging
? this.pages[this._currentPage - 1]
: this.data.data.map((t, e) => ({
row: t,
index: e,
}));
let s = q(
this._tableAttributes,
this.data.headings,
e,
this.columns.settings,
this.columns._state,
this.rows.cursor,
this.options,
t,
this._tableFooters,
this._tableCaptions
);
if (this.options.tableRender) {
const t = this.options.tableRender(
this.data,
s,
"main"
);
t && (s = t);
}
const i = this._dd.diff(
this._virtualDOM,
s
);
this._dd.apply(this.dom, i),
(this._virtualDOM = s);
}
_renderPage(t = !1) {
this.hasRows && this.totalPages
? (this._currentPage >
this.totalPages &&
(this._currentPage = 1),
this._renderTable(),
(this.onFirstPage =
1 === this._currentPage),
(this.onLastPage =
this._currentPage ===
this.lastPage))
: this.setMessage(
this.options.labels.noRows
);
let e,
s = 0,
i = 0,
n = 0;
if (
(this.totalPages &&
((s = this._currentPage - 1),
(i = s * this.options.perPage),
(n = i + this.pages[s].length),
(i += 1),
(e = this._searchQueries.length
? this._searchData.length
: this.data.data.length)),
this._label &&
this.options.labels.info.length)
) {
const t = this.options.labels.info
.replace("{start}", String(i))
.replace("{end}", String(n))
.replace(
"{page}",
String(this._currentPage)
)
.replace(
"{pages}",
String(this.totalPages)
)
.replace("{rows}", String(e));
this._label.innerHTML = e ? t : "";
}
if (
(1 == this._currentPage &&
this._fixHeight(),
this.options.rowNavigation &&
this._currentPage &&
(!this.rows.cursor ||
!this.pages[
this._currentPage - 1
].find(
(t) =>
t.index ===
this.rows.cursor
)))
) {
const e =
this.pages[this._currentPage - 1];
e.length &&
(t
? this.rows.setCursor(
e[e.length - 1].index
)
: this.rows.setCursor(
e[0].index
));
}
}
_renderPagers() {
if (!this.options.paging) return;
let t = st(
this.onFirstPage,
this.onLastPage,
this._currentPage,
this.totalPages,
this.options
);
if (this.options.pagerRender) {
const e = this.options.pagerRender(
[
this.onFirstPage,
this.onLastPage,
this._currentPage,
this.totalPages,
],
t
);
e && (t = e);
}
const e = this._dd.diff(
this._virtualPagerDOM,
t
);
this._pagerDOMs.forEach((t) => {
this._dd.apply(t, e);
}),
(this._virtualPagerDOM = t);
}
_renderSeparateHeader() {
const t = this.dom.parentElement;
this.headerDOM ||
((this.headerDOM =
document.createElement("div")),
(this._virtualHeaderDOM = {
nodeName: "DIV",
})),
t.parentElement.insertBefore(
this.headerDOM,
t
);
let e = {
nodeName: "TABLE",
attributes: this._tableAttributes,
childNodes: [
{
nodeName: "THEAD",
childNodes: [
j(
this.data.headings,
this.columns.settings,
this.columns._state,
this.options,
{ unhideHeader: !0 }
),
],
},
],
};
if (
((e.attributes.class = c(
e.attributes.class,
this.options.classes.table
)),
this.options.tableRender)
) {
const t = this.options.tableRender(
this.data,
e,
"header"
);
t && (e = t);
}
const s = {
nodeName: "DIV",
attributes: {
class: this.options.classes
.headercontainer,
},
childNodes: [e],
},
i = this._dd.diff(
this._virtualHeaderDOM,
s
);
this._dd.apply(this.headerDOM, i),
(this._virtualHeaderDOM = s);
const n =
this.headerDOM.firstElementChild
.clientWidth - this.dom.clientWidth;
if (n) {
const t = structuredClone(
this._virtualHeaderDOM
);
t.attributes.style = `padding-right: ${n}px;`;
const e = this._dd.diff(
this._virtualHeaderDOM,
t
);
this._dd.apply(this.headerDOM, e),
(this._virtualHeaderDOM = t);
}
t.scrollHeight > t.clientHeight &&
(t.style.overflowY = "scroll");
}
_bindEvents() {
if (this.options.perPageSelect) {
const t = l(
this.options.classes.selector
),
e =
this.wrapperDOM.querySelector(
t
);
e &&
e instanceof HTMLSelectElement &&
e.addEventListener(
"change",
() => {
(this.options.perPage =
parseInt(e.value, 10)),
this.update(),
this._fixHeight(),
this.emit(
"datatable.perpage",
this.options.perPage
);
},
!1
);
}
this.options.searchable &&
this.wrapperDOM.addEventListener(
"input",
(t) => {
const e = l(
this.options.classes
.input
),
s = t.target;
if (
!(
s instanceof
HTMLInputElement &&
s.matches(e)
)
)
return;
t.preventDefault();
const i = [];
if (
(Array.from(
this.wrapperDOM.querySelectorAll(
e
)
)
.filter(
(t) =>
t.value.length
)
.forEach((t) => {
const e =
t.dataset
.and ||
this.options
.searchAnd,
s =
t.dataset
.querySeparator ||
this.options
.searchQuerySeparator
? t.value.split(
this
.options
.searchQuerySeparator
)
: [
t.value,
];
e
? s.forEach(
(e) => {
t
.dataset
.columns
? i.push(
{
terms: [
e,
],
columns:
JSON.parse(
t
.dataset
.columns
),
}
)
: i.push(
{
terms: [
e,
],
columns:
void 0,
}
);
}
)
: t.dataset
.columns
? i.push({
terms: s,
columns:
JSON.parse(
t
.dataset
.columns
),
})
: i.push({
terms: s,
columns:
void 0,
});
}),
1 === i.length &&
1 === i[0].terms.length)
) {
const t = i[0];
this.search(
t.terms[0],
t.columns
);
} else this.multiSearch(i);
}
),
this.wrapperDOM.addEventListener(
"click",
(t) => {
const e =
t.target.closest(
"a, button"
);
if (e)
if (
e.hasAttribute(
"data-page"
)
)
this.page(
parseInt(
e.getAttribute(
"data-page"
),
10
)
),
t.preventDefault();
else if (
d(
e,
this.options.classes
.sorter
)
) {
const s = Array.from(
e.parentElement
.parentElement
.children
).indexOf(
e.parentElement
),
i = o(
s,
this.columns
.settings
);
this.columns.sort(i),
t.preventDefault();
} else if (
d(
e,
this.options.classes
.filter
)
) {
const s = Array.from(
e.parentElement
.parentElement
.children
).indexOf(
e.parentElement
),
i = o(
s,
this.columns
.settings
);
this.columns.filter(i),
t.preventDefault();
}
},
!1
),
this.options.rowNavigation
? (this.dom.addEventListener(
"keydown",
(t) => {
if ("ArrowUp" === t.key) {
let e;
t.preventDefault(),
t.stopPropagation(),
this.pages[
this
._currentPage -
1
].find(
(t) =>
t.index ===
this
.rows
.cursor ||
((e = t),
!1)
),
e
? this.rows.setCursor(
e.index
)
: this
.onFirstPage ||
this.page(
this
._currentPage -
1,
!0
);
} else if (
"ArrowDown" === t.key
) {
let e;
t.preventDefault(),
t.stopPropagation();
const s = this.pages[
this
._currentPage -
1
].find(
(t) =>
!!e ||
(t.index ===
this.rows
.cursor &&
(e = !0),
!1)
);
s
? this.rows.setCursor(
s.index
)
: this
.onLastPage ||
this.page(
this
._currentPage +
1
);
} else
[
"Enter",
" ",
].includes(t.key) &&
this.emit(
"datatable.selectrow",
this.rows
.cursor,
t
);
}
),
this.dom.addEventListener(
"mousedown",
(t) => {
const e = t.target;
if (
e instanceof
Element &&
this.dom.matches(
":focus"
)
) {
const s = Array.from(
this.dom.querySelectorAll(
"tbody > tr"
)
).find((t) =>
t.contains(e)
);
s &&
s instanceof
HTMLElement &&
this.emit(
"datatable.selectrow",
parseInt(
s.dataset
.index,
10
),
t
);
}
}
))
: this.dom.addEventListener(
"mousedown",
(t) => {
const e = t.target;
if (
!(
e instanceof
Element
)
)
return;
const s = Array.from(
this.dom.querySelectorAll(
"tbody > tr"
)
).find((t) =>
t.contains(e)
);
s &&
s instanceof
HTMLElement &&
this.emit(
"datatable.selectrow",
parseInt(
s.dataset
.index,
10
),
t
);
}
),
window.addEventListener(
"resize",
this._listeners.onResize
);
}
_onResize() {
(this._rect =
this.containerDOM.getBoundingClientRect()),
this._rect.width && this.update(!0);
}
destroy() {
this.options.destroyable &&
((this.dom.innerHTML =
this._initialInnerHTML),
this.options.classes.table
?.split(" ")
.forEach((t) =>
this.wrapperDOM.classList.remove(
t
)
),
this.wrapperDOM.parentElement &&
this.wrapperDOM.parentElement.replaceChild(
this.dom,
this.wrapperDOM
),
(this.initialized = !1),
window.removeEventListener(
"resize",
this._listeners.onResize
));
}
update(t = !1) {
t &&
(this.columns._measureWidths(),
(this.hasRows = Boolean(
this.data.data.length
)),
(this.hasHeadings = Boolean(
this.data.headings.length
))),
this.options.classes.empty
?.split(" ")
.forEach((t) =>
this.wrapperDOM.classList.remove(
t
)
),
this._paginate(),
this._renderPage(),
this._renderPagers(),
this.options.scrollY.length &&
this._renderSeparateHeader(),
this.emit("datatable.update");
}
_paginate() {
let t = this.data.data.map((t, e) => ({
row: t,
index: e,
}));
return (
this._searchQueries.length &&
((t = []),
this._searchData.forEach((e) =>
t.push({
index: e,
row: this.data.data[e],
})
)),
this.columns._state.filters.length &&
this.columns._state.filters.forEach(
(e, s) => {
e &&
(t = t.filter((t) => {
const i =
t.row.cells[s];
return "function" ==
typeof e
? e(i.data)
: n(i) === e;
}));
}
),
this.options.paging &&
this.options.perPage > 0
? (this.pages = t
.map((e, s) =>
s %
this.options
.perPage ==
0
? t.slice(
s,
s +
this.options
.perPage
)
: null
)
.filter((t) => t))
: (this.pages = [t]),
(this.totalPages = this.lastPage =
this.pages.length),
this._currentPage ||
(this._currentPage = 1),
this.totalPages
);
}
_fixHeight() {
this.options.fixedHeight &&
((this.containerDOM.style.height =
null),
(this._rect =
this.containerDOM.getBoundingClientRect()),
(this.containerDOM.style.height = `${this._rect.height}px`));
}
search(t, e = void 0) {
if (!t.length)
return (
(this._currentPage = 1),
(this._searchQueries = []),
(this._searchData = []),
this.update(),
this.emit(
"datatable.search",
"",
[]
),
this.wrapperDOM.classList.remove(
"search-results"
),
!1
);
this.multiSearch([
{ terms: [t], columns: e || void 0 },
]),
this.emit(
"datatable.search",
t,
this._searchData
);
}
multiSearch(t) {
if (!this.hasRows) return !1;
(this._currentPage = 1),
(this._searchData = []);
const e = t
.map((t) => ({
columns: t.columns,
terms: t.terms
.map((t) => t.trim())
.filter((t) => t),
}))
.filter((t) => t.terms.length);
if (((this._searchQueries = e), !e.length))
return (
this.update(),
this.emit(
"datatable.multisearch",
e,
this._searchData
),
this.wrapperDOM.classList.remove(
"search-results"
),
!1
);
const s = e.map((t) =>
this.columns.settings.map((e, s) => {
if (
e.hidden ||
!e.searchable ||
(t.columns &&
!t.columns.includes(s))
)
return !1;
let i = t.terms;
const n =
e.sensitivity ||
this.options.sensitivity;
["base", "accent"].includes(n) &&
(i = i.map((t) =>
t.toLowerCase()
)),
["base", "case"].includes(n) &&
(i = i.map((t) =>
t
.normalize("NFD")
.replace(
/\p{Diacritic}/gu,
""
)
));
return (
(e.ignorePunctuation ??
this.options
.ignorePunctuation) &&
(i = i.map((t) =>
t.replace(
/[.,/#!$%^&*;:{}=-_`~()]/g,
""
)
)),
i
);
})
);
this.data.data.forEach((t, e) => {
const i = t.cells.map((t, e) => {
let s = n(t).trim();
const i = this.columns.settings[e];
if (s.length) {
const t =
i.sensitivity ||
this.options.sensitivity;
["base", "accent"].includes(
t
) && (s = s.toLowerCase()),
["base", "case"].includes(
t
) &&
(s = s
.normalize("NFD")
.replace(
/\p{Diacritic}/gu,
""
));
(i.ignorePunctuation ??
this.options
.ignorePunctuation) &&
(s = s.replace(
/[.,/#!$%^&*;:{}=-_`~()]/g,
""
));
}
const a =
i.searchItemSeparator ||
this.options
.searchItemSeparator;
return a ? s.split(a) : [s];
});
s.every((t) =>
t.find(
(t, e) =>
!!t &&
t.find((t) =>
i[e].find((e) =>
e.includes(t)
)
)
)
) && this._searchData.push(e);
}),
this.wrapperDOM.classList.add(
"search-results"
),
this._searchData.length
? this.update()
: (this.wrapperDOM.classList.remove(
"search-results"
),
this.setMessage(
this.options.labels.noResults
)),
this.emit(
"datatable.multisearch",
e,
this._searchData
);
}
page(t, e = !1) {
return (
t !== this._currentPage &&
(isNaN(t) || (this._currentPage = t),
!(t > this.pages.length || t < 0) &&
(this._renderPage(e),
this._renderPagers(),
void this.emit(
"datatable.page",
t
)))
);
}
insert(e) {
let s = [];
if (Array.isArray(e)) {
const t = this.data.headings.map(
(t) => t.text ?? String(t.data)
);
e.forEach((e, i) => {
const n = [];
Object.entries(e).forEach(
([e, s]) => {
const a = t.indexOf(e);
a > -1
? (n[a] = Q(
s,
this.columns
.settings[a]
))
: this.hasHeadings ||
this.hasRows ||
0 !== i ||
((n[t.length] = Q(
s,
this.columns
.settings[
t.length
]
)),
t.push(e),
this.data.headings.push(
X(e)
));
}
),
s.push({ cells: n });
});
} else
t(e) &&
(!e.headings ||
this.hasHeadings ||
this.hasRows
? e.data &&
Array.isArray(e.data) &&
(s = e.data.map((t) => {
let e, s;
return (
Array.isArray(t)
? ((e = {}),
(s = t))
: ((e =
t.attributes),
(s = t.cells)),
{
attributes: e,
cells: s.map(
(t, e) =>
Q(
t,
this
.columns
.settings[
e
]
)
),
}
);
}))
: (this.data = Z(
e,
void 0,
this.columns.settings,
this.options.type,
this.options.format
)));
s.length &&
s.forEach((t) =>
this.data.data.push(t)
),
(this.hasHeadings = Boolean(
this.data.headings.length
)),
this.columns._state.sort &&
this.columns.sort(
this.columns._state.sort.column,
this.columns._state.sort.dir,
!0
),
this.update(!0);
}
refresh() {
if (this.options.searchable) {
const t = l(this.options.classes.input);
Array.from(
this.wrapperDOM.querySelectorAll(t)
).forEach((t) => (t.value = "")),
(this._searchQueries = []);
}
(this._currentPage = 1),
(this.onFirstPage = !0),
this.update(!0),
this.emit("datatable.refresh");
}
print() {
const t = s("table");
let e = q(
this._tableAttributes,
this.data.headings,
this.data.data.map((t, e) => ({
row: t,
index: e,
})),
this.columns.settings,
this.columns._state,
!1,
this.options,
{
noColumnWidths: !0,
unhideHeader: !0,
},
this._tableFooters,
this._tableCaptions
);
if (this.options.tableRender) {
const t = this.options.tableRender(
this.data,
e,
"print"
);
t && (e = t);
}
const i = this._dd.diff(
{ nodeName: "TABLE" },
e
);
this._dd.apply(t, i);
const n = window.open();
n.document.body.appendChild(t), n.print();
}
setMessage(t) {
const e =
this.data.headings.filter(
(t, e) =>
!this.columns.settings[e]
?.hidden
).length || 1;
this.options.classes.empty
?.split(" ")
.forEach((t) =>
this.wrapperDOM.classList.add(t)
),
this._label &&
(this._label.innerHTML = ""),
(this.totalPages = 0),
this._renderPagers();
let s = {
nodeName: "TABLE",
attributes: this._tableAttributes,
childNodes: [
{
nodeName: "THEAD",
childNodes: [
j(
this.data.headings,
this.columns.settings,
this.columns._state,
this.options,
{}
),
],
},
{
nodeName: "TBODY",
childNodes: [
{
nodeName: "TR",
childNodes: [
{
nodeName: "TD",
attributes: {
class: this
.options
.classes
.empty,
colspan:
String(
e
),
},
childNodes: [
{
nodeName:
"#text",
data: t,
},
],
},
],
},
],
},
],
};
if (
(this._tableFooters.forEach((t) =>
s.childNodes.push(t)
),
this._tableCaptions.forEach((t) =>
s.childNodes.push(t)
),
(s.attributes.class = c(
s.attributes.class,
this.options.classes.table
)),
this.options.tableRender)
) {
const t = this.options.tableRender(
this.data,
s,
"message"
);
t && (s = t);
}
const i = this._dd.diff(
this._virtualDOM,
s
);
this._dd.apply(this.dom, i),
(this._virtualDOM = s);
}
on(t, e) {
(this._events[t] = this._events[t] || []),
this._events[t].push(e);
}
off(t, e) {
t in this._events != !1 &&
this._events[t].splice(
this._events[t].indexOf(e),
1
);
}
emit(t, ...e) {
if (t in this._events != !1)
for (
let s = 0;
s < this._events[t].length;
s++
)
this._events[t][s](...e);
}
}),
(exports.addColumnFilter = function (
t,
e = {}
) {
const s = new ot(t, e);
return (
t.initialized
? s.init()
: t.on("datatable.init", () =>
s.init()
),
s
);
}),
(exports.convertCSV = function (e) {
let s;
if (!t(e)) return !1;
const i = {
lineDelimiter: "\n",
columnDelimiter: ",",
removeDoubleQuotes: !1,
...e,
};
if (i.data.length) {
s = { data: [] };
const t = i.data.split(i.lineDelimiter);
if (
(t.length &&
(i.headings &&
((s.headings = t[0].split(
i.columnDelimiter
)),
i.removeDoubleQuotes &&
(s.headings =
s.headings.map(
(t) =>
t
.trim()
.replace(
/(^"|"$)/g,
""
)
)),
t.shift()),
t.forEach((t, e) => {
s.data[e] = [];
const n = t.split(
i.columnDelimiter
);
n.length &&
n.forEach((t) => {
i.removeDoubleQuotes &&
(t = t
.trim()
.replace(
/(^"|"$)/g,
""
)),
s.data[e].push(
t
);
});
})),
s)
)
return s;
}
return !1;
}),
(exports.convertJSON = function (s) {
let i;
if (!t(s)) return !1;
const n = { data: "", ...s };
if (n.data.length || t(n.data)) {
const t =
!!e(n.data) && JSON.parse(n.data);
if (
(t
? ((i = {
headings: [],
data: [],
}),
t.forEach((t, e) => {
(i.data[e] = []),
Object.entries(
t
).forEach(
([t, s]) => {
i.headings.includes(
t
) ||
i.headings.push(
t
),
i.data[
e
].push(s);
}
);
}))
: console.warn(
"That's not valid JSON!"
),
i)
)
return i;
}
return !1;
}),
(exports.createElement = s),
(exports.exportCSV = function (e, s = {}) {
if (!e.hasHeadings && !e.hasRows) return !1;
if (!t(s)) return !1;
const i = {
download: !0,
skipColumn: [],
lineDelimiter: "\n",
columnDelimiter: ",",
...s,
},
a = (t) =>
!i.skipColumn.includes(t) &&
!e.columns.settings[t]?.hidden,
o = e.data.headings
.filter((t, e) => a(e))
.map((t) => t.text ?? t.data);
let r;
if (i.selection)
if (Array.isArray(i.selection)) {
r = [];
for (
let t = 0;
t < i.selection.length;
t++
)
r = r.concat(
e.pages[
i.selection[t] - 1
].map((t) => t.row)
);
} else
r = e.pages[i.selection - 1].map(
(t) => t.row
);
else r = e.data.data;
let l = [];
if (
((l[0] = o),
(l = l.concat(
r.map((t) =>
t.cells
.filter((t, e) => a(e))
.map((t) => n(t))
)
)),
l.length)
) {
let t = "";
if (
(l.forEach((e) => {
e.forEach((e) => {
"string" == typeof e &&
(e = (e = (e = (e = (e =
e.trim()).replace(
/\s{2,}/g,
" "
)).replace(
/\n/g,
" "
)).replace(
/"/g,
'""'
)).replace(
/#/g,
"%23"
)).includes(",") &&
(e = `"${e}"`),
(t +=
e +
i.columnDelimiter);
}),
(t = t
.trim()
.substring(
0,
t.length - 1
)),
(t += i.lineDelimiter);
}),
(t = t
.trim()
.substring(0, t.length - 1)),
i.download)
) {
const e =
document.createElement("a");
(e.href = encodeURI(
`data:text/csv;charset=utf-8,${t}`
)),
(e.download = `${
i.filename ||
"datatable_export"
}.csv`),
document.body.appendChild(e),
e.click(),
document.body.removeChild(e);
}
return t;
}
return !1;
}),
(exports.exportJSON = function (e, s = {}) {
if (!e.hasHeadings && !e.hasRows) return !1;
if (!t(s)) return !1;
const i = {
download: !0,
skipColumn: [],
replacer: null,
space: 4,
...s,
},
a = (t) =>
!i.skipColumn.includes(t) &&
!e.columns.settings[t]?.hidden;
let o;
if (i.selection)
if (Array.isArray(i.selection)) {
o = [];
for (
let t = 0;
t < i.selection.length;
t++
)
o = o.concat(
e.pages[
i.selection[t] - 1
].map((t) => t.row)
);
} else
o = e.pages[i.selection - 1].map(
(t) => t.row
);
else o = e.data.data;
const r = o.map((t) =>
t.cells
.filter((t, e) => a(e))
.map((t) => n(t))
),
l = e.data.headings
.filter((t, e) => a(e))
.map(
(t) => t.text ?? String(t.data)
);
if (r.length) {
const t = [];
r.forEach((e, s) => {
(t[s] = t[s] || {}),
e.forEach((e, i) => {
t[s][l[i]] = e;
});
});
const e = JSON.stringify(
t,
i.replacer,
i.space
);
if (i.download) {
const t = new Blob([e], {
type: "data:application/json;charset=utf-8",
}),
s = URL.createObjectURL(t),
n = document.createElement("a");
(n.href = s),
(n.download = `${
i.filename ||
"datatable_export"
}.json`),
document.body.appendChild(n),
n.click(),
document.body.removeChild(n),
URL.revokeObjectURL(s);
}
return e;
}
return !1;
}),
(exports.exportSQL = function (e, s = {}) {
if (!e.hasHeadings && !e.hasRows) return !1;
if (!t(s)) return !1;
const i = {
download: !0,
skipColumn: [],
tableName: "myTable",
...s,
},
a = (t) =>
!i.skipColumn.includes(t) &&
!e.columns.settings[t]?.hidden;
let o = [];
if (i.selection)
if (Array.isArray(i.selection))
for (
let t = 0;
t < i.selection.length;
t++
)
o = o.concat(
e.pages[
i.selection[t] - 1
].map((t) => t.row)
);
else
o = e.pages[i.selection - 1].map(
(t) => t.row
);
else o = e.data.data;
const r = o.map((t) =>
t.cells
.filter((t, e) => a(e))
.map((t) => n(t))
),
l = e.data.headings
.filter((t, e) => a(e))
.map(
(t) => t.text ?? String(t.data)
);
if (r.length) {
let t = `INSERT INTO \`${i.tableName}\` (`;
if (
(l.forEach((e) => {
t += `\`${e}\`,`;
}),
(t = t
.trim()
.substring(0, t.length - 1)),
(t += ") VALUES "),
r.forEach((e) => {
(t += "("),
e.forEach((e) => {
t +=
"string" == typeof e
? `"${e}",`
: `${e},`;
}),
(t = t
.trim()
.substring(
0,
t.length - 1
)),
(t += "),");
}),
(t = t
.trim()
.substring(0, t.length - 1)),
(t += ";"),
i.download &&
(t = `data:application/sql;charset=utf-8,${t}`),
i.download)
) {
const e =
document.createElement("a");
(e.href = encodeURI(t)),
(e.download = `${
i.filename ||
"datatable_export"
}.sql`),
document.body.appendChild(e),
e.click(),
document.body.removeChild(e);
}
return t;
}
return !1;
}),
(exports.exportTXT = function (e, s = {}) {
if (!e.hasHeadings && !e.hasRows) return !1;
if (!t(s)) return !1;
const i = {
download: !0,
skipColumn: [],
lineDelimiter: "\n",
columnDelimiter: ",",
...s,
},
a = (t) =>
!i.skipColumn.includes(t) &&
!e.columns.settings[t]?.hidden,
o = e.data.headings
.filter((t, e) => a(e))
.map((t) => t.text ?? t.data);
let r;
if (i.selection)
if (Array.isArray(i.selection)) {
r = [];
for (
let t = 0;
t < i.selection.length;
t++
)
r = r.concat(
e.pages[
i.selection[t] - 1
].map((t) => t.row)
);
} else
r = e.pages[i.selection - 1].map(
(t) => t.row
);
else r = e.data.data;
let l = [];
if (
((l[0] = o),
(l = l.concat(
r.map((t) =>
t.cells
.filter((t, e) => a(e))
.map((t) => n(t))
)
)),
l.length)
) {
let t = "";
if (
(l.forEach((e) => {
e.forEach((e) => {
"string" == typeof e &&
(e = (e = (e = (e = (e =
e.trim()).replace(
/\s{2,}/g,
" "
)).replace(
/\n/g,
" "
)).replace(
/"/g,
'""'
)).replace(
/#/g,
"%23"
)).includes(",") &&
(e = `"${e}"`),
(t +=
e +
i.columnDelimiter);
}),
(t = t
.trim()
.substring(
0,
t.length - 1
)),
(t += i.lineDelimiter);
}),
(t = t
.trim()
.substring(0, t.length - 1)),
i.download &&
(t = `data:text/csv;charset=utf-8,${t}`),
i.download)
) {
const e =
document.createElement("a");
(e.href = encodeURI(t)),
(e.download = `${
i.filename ||
"datatable_export"
}.txt`),
document.body.appendChild(e),
e.click(),
document.body.removeChild(e);
}
return t;
}
return !1;
}),
(exports.isJson = e),
(exports.isObject = t),
(exports.makeEditable = function (t, e = {}) {
const s = new nt(t, e);
return (
t.initialized
? s.init()
: t.on("datatable.init", () =>
s.init()
),
s
);
});
}).call(this);
}).call(
this,
typeof global !== "undefined"
? global
: typeof self !== "undefined"
? self
: typeof window !== "undefined"
? window
: {}
);
},
{},
],
},
{},
[1]
)(1);
});