@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 v, onUnmounted as y, readonly as P } from "vue";
2
- const S = 5e3;
3
- function d(c = {}) {
4
- const i = v(!1);
5
- let n = null;
6
- function f() {
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 n = new Worker(new URL(
10
- /* @vite-ignore */
11
- "/assets/tableWorker-CTsbCPPP.js",
12
- import.meta.url
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 = c.enabled) == null ? void 0 : s.value) === !1 ? !1 : e >= S;
23
+ return ((s = p.enabled) == null ? void 0 : s.value) === !1 ? !1 : e >= h;
23
24
  }
24
- function p(e, s, a) {
25
+ function v(e, s, f) {
25
26
  if (!m(e.length))
26
27
  return Promise.resolve(
27
- [...e].sort((o, u) => {
28
- const r = o[s], l = u[s];
29
- return r == null && l == null ? 0 : r == null ? 1 : l == null ? -1 : typeof r == "number" && typeof l == "number" ? a === "asc" ? r - l : l - r : a === "asc" ? String(r).localeCompare(String(l)) : String(l).localeCompare(String(r));
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 = f();
33
+ const t = c();
33
34
  return t ? (i.value = !0, new Promise((o) => {
34
- const u = (r) => {
35
- t.removeEventListener("message", u), i.value = !1, r.data.type === "sort-result" ? o(r.data.data) : o([...e]);
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", u), t.postMessage({ type: "sort", data: e, field: s, order: a });
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, a = "and") {
41
+ function g(e, s, f = "and") {
41
42
  if (!m(e.length))
42
43
  return Promise.resolve(e);
43
- const t = f();
44
+ const t = c();
44
45
  return t ? (i.value = !0, new Promise((o) => {
45
- const u = (r) => {
46
- t.removeEventListener("message", u), i.value = !1, r.data.type === "filter-result" ? o(r.data.data) : o(e);
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", u), t.postMessage({ type: "filter", data: e, conditions: s, logic: a });
49
+ t.addEventListener("message", l), t.postMessage({ type: "filter", data: e, conditions: s, logic: f });
49
50
  })) : Promise.resolve(e);
50
51
  }
51
- return y(() => {
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: p,
55
+ requestSort: v,
55
56
  requestFilter: g,
56
- processing: P(i)
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneflowui/ui",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "OneFlow UI Component Library - Vue3 components for task management views",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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)})}}})();