@oneflowui/ui 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { ref as y, onUnmounted as L, readonly as b } from "vue";
|
|
2
|
+
import S from "../workers/tableWorkerSource.js";
|
|
3
|
+
const h = 5e3;
|
|
4
|
+
function d(p = {}) {
|
|
5
|
+
const i = y(!1);
|
|
6
|
+
let n = null, a = null;
|
|
7
|
+
function c() {
|
|
7
8
|
if (n) return n;
|
|
8
9
|
try {
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
), {
|
|
10
|
+
return a = URL.createObjectURL(
|
|
11
|
+
new Blob([S], {
|
|
12
|
+
type: "text/javascript;charset=utf-8"
|
|
13
|
+
})
|
|
14
|
+
), n = new Worker(a, {
|
|
14
15
|
type: "module"
|
|
15
16
|
}), n;
|
|
16
17
|
} catch {
|
|
@@ -19,41 +20,41 @@ function d(c = {}) {
|
|
|
19
20
|
}
|
|
20
21
|
function m(e) {
|
|
21
22
|
var s;
|
|
22
|
-
return ((s =
|
|
23
|
+
return ((s = p.enabled) == null ? void 0 : s.value) === !1 ? !1 : e >= h;
|
|
23
24
|
}
|
|
24
|
-
function
|
|
25
|
+
function v(e, s, f) {
|
|
25
26
|
if (!m(e.length))
|
|
26
27
|
return Promise.resolve(
|
|
27
|
-
[...e].sort((o,
|
|
28
|
-
const r = o[s],
|
|
29
|
-
return r == null &&
|
|
28
|
+
[...e].sort((o, l) => {
|
|
29
|
+
const r = o[s], u = l[s];
|
|
30
|
+
return r == null && u == null ? 0 : r == null ? 1 : u == null ? -1 : typeof r == "number" && typeof u == "number" ? f === "asc" ? r - u : u - r : f === "asc" ? String(r).localeCompare(String(u)) : String(u).localeCompare(String(r));
|
|
30
31
|
})
|
|
31
32
|
);
|
|
32
|
-
const t =
|
|
33
|
+
const t = c();
|
|
33
34
|
return t ? (i.value = !0, new Promise((o) => {
|
|
34
|
-
const
|
|
35
|
-
t.removeEventListener("message",
|
|
35
|
+
const l = (r) => {
|
|
36
|
+
t.removeEventListener("message", l), i.value = !1, r.data.type === "sort-result" ? o(r.data.data) : o([...e]);
|
|
36
37
|
};
|
|
37
|
-
t.addEventListener("message",
|
|
38
|
+
t.addEventListener("message", l), t.postMessage({ type: "sort", data: e, field: s, order: f });
|
|
38
39
|
})) : Promise.resolve([...e]);
|
|
39
40
|
}
|
|
40
|
-
function g(e, s,
|
|
41
|
+
function g(e, s, f = "and") {
|
|
41
42
|
if (!m(e.length))
|
|
42
43
|
return Promise.resolve(e);
|
|
43
|
-
const t =
|
|
44
|
+
const t = c();
|
|
44
45
|
return t ? (i.value = !0, new Promise((o) => {
|
|
45
|
-
const
|
|
46
|
-
t.removeEventListener("message",
|
|
46
|
+
const l = (r) => {
|
|
47
|
+
t.removeEventListener("message", l), i.value = !1, r.data.type === "filter-result" ? o(r.data.data) : o(e);
|
|
47
48
|
};
|
|
48
|
-
t.addEventListener("message",
|
|
49
|
+
t.addEventListener("message", l), t.postMessage({ type: "filter", data: e, conditions: s, logic: f });
|
|
49
50
|
})) : Promise.resolve(e);
|
|
50
51
|
}
|
|
51
|
-
return
|
|
52
|
-
n == null || n.terminate(), n = null;
|
|
52
|
+
return L(() => {
|
|
53
|
+
n == null || n.terminate(), n = null, a && (URL.revokeObjectURL(a), a = null);
|
|
53
54
|
}), {
|
|
54
|
-
requestSort:
|
|
55
|
+
requestSort: v,
|
|
55
56
|
requestFilter: g,
|
|
56
|
-
processing:
|
|
57
|
+
processing: b(i)
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
export {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const n = `function sortData(data, field, order) {
|
|
2
|
+
return [...data].sort((a, b) => {
|
|
3
|
+
const av = a[field];
|
|
4
|
+
const bv = b[field];
|
|
5
|
+
if (av == null && bv == null) return 0;
|
|
6
|
+
if (av == null) return 1;
|
|
7
|
+
if (bv == null) return -1;
|
|
8
|
+
if (typeof av === "number" && typeof bv === "number") {
|
|
9
|
+
return order === "asc" ? av - bv : bv - av;
|
|
10
|
+
}
|
|
11
|
+
const as = String(av);
|
|
12
|
+
const bs = String(bv);
|
|
13
|
+
return order === "asc" ? as.localeCompare(bs) : bs.localeCompare(as);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function applyCondition(value, cond) {
|
|
18
|
+
const strVal = String(value ?? "").toLowerCase();
|
|
19
|
+
const condVal = cond.value.toLowerCase();
|
|
20
|
+
switch (cond.operator) {
|
|
21
|
+
case "equals":
|
|
22
|
+
return strVal === condVal;
|
|
23
|
+
case "not_equals":
|
|
24
|
+
return strVal !== condVal;
|
|
25
|
+
case "contains":
|
|
26
|
+
return strVal.includes(condVal);
|
|
27
|
+
case "not_contains":
|
|
28
|
+
return !strVal.includes(condVal);
|
|
29
|
+
case "starts_with":
|
|
30
|
+
return strVal.startsWith(condVal);
|
|
31
|
+
case "ends_with":
|
|
32
|
+
return strVal.endsWith(condVal);
|
|
33
|
+
case "is_empty":
|
|
34
|
+
return strVal === "" || value == null;
|
|
35
|
+
case "is_not_empty":
|
|
36
|
+
return strVal !== "" && value != null;
|
|
37
|
+
case "gt":
|
|
38
|
+
return Number(value) > Number(cond.value);
|
|
39
|
+
case "gte":
|
|
40
|
+
return Number(value) >= Number(cond.value);
|
|
41
|
+
case "lt":
|
|
42
|
+
return Number(value) < Number(cond.value);
|
|
43
|
+
case "lte":
|
|
44
|
+
return Number(value) <= Number(cond.value);
|
|
45
|
+
default:
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function filterData(data, conditions, logic) {
|
|
51
|
+
if (conditions.length === 0) return data;
|
|
52
|
+
return data.filter((row) => {
|
|
53
|
+
const results = conditions.map((cond) => {
|
|
54
|
+
if (!cond.field) return true;
|
|
55
|
+
return applyCondition(row[cond.field], cond);
|
|
56
|
+
});
|
|
57
|
+
return logic === "and" ? results.every(Boolean) : results.some(Boolean);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
self.onmessage = (e) => {
|
|
62
|
+
try {
|
|
63
|
+
const req = e.data;
|
|
64
|
+
if (req.type === "sort") {
|
|
65
|
+
self.postMessage({ type: "sort-result", data: sortData(req.data, req.field, req.order) });
|
|
66
|
+
} else if (req.type === "filter") {
|
|
67
|
+
self.postMessage({ type: "filter-result", data: filterData(req.data, req.conditions, req.logic) });
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
self.postMessage({
|
|
71
|
+
type: "error",
|
|
72
|
+
message: err instanceof Error ? err.message : String(err),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
`;
|
|
77
|
+
export {
|
|
78
|
+
n as default
|
|
79
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(){"use strict";function i(r,e,t){return[...r].sort((s,u)=>{const n=s[e],a=u[e];if(n==null&&a==null)return 0;if(n==null)return 1;if(a==null)return-1;if(typeof n=="number"&&typeof a=="number")return t==="asc"?n-a:a-n;const l=String(n),o=String(a);return t==="asc"?l.localeCompare(o):o.localeCompare(l)})}function c(r,e){const t=String(r??"").toLowerCase(),s=e.value.toLowerCase();switch(e.operator){case"equals":return t===s;case"not_equals":return t!==s;case"contains":return t.includes(s);case"not_contains":return!t.includes(s);case"starts_with":return t.startsWith(s);case"ends_with":return t.endsWith(s);case"is_empty":return t===""||r==null;case"is_not_empty":return t!==""&&r!=null;case"gt":return Number(r)>Number(e.value);case"gte":return Number(r)>=Number(e.value);case"lt":return Number(r)<Number(e.value);case"lte":return Number(r)<=Number(e.value);default:return!0}}function f(r,e,t){return e.length===0?r:r.filter(s=>{const u=e.map(n=>n.field?c(s[n.field],n):!0);return t==="and"?u.every(Boolean):u.some(Boolean)})}self.onmessage=r=>{try{const e=r.data;if(e.type==="sort"){const t=i(e.data,e.field,e.order);self.postMessage({type:"sort-result",data:t})}else if(e.type==="filter"){const t=f(e.data,e.conditions,e.logic);self.postMessage({type:"filter-result",data:t})}}catch(e){self.postMessage({type:"error",message:e instanceof Error?e.message:String(e)})}}})();
|