intable 0.0.45 → 0.0.47

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.
package/dist/index.d.ts CHANGED
@@ -114,7 +114,7 @@ export type THProps = {
114
114
  colspan?: number;
115
115
  style?: any;
116
116
  };
117
- interface TDProps {
117
+ export interface TDProps {
118
118
  x: number;
119
119
  y: number;
120
120
  data: any;
@@ -0,0 +1,73 @@
1
+ import { $PROXY, createMemo } from "solid-js";
2
+ var SUPPORTS_PROXY = typeof Proxy == "function";
3
+ function trueFn() {
4
+ return !0;
5
+ }
6
+ var propTraps = {
7
+ get(n, r, i) {
8
+ return r === $PROXY ? i : n.get(r);
9
+ },
10
+ has(n, r) {
11
+ return r === $PROXY ? !0 : n.has(r);
12
+ },
13
+ set: trueFn,
14
+ deleteProperty: trueFn,
15
+ getOwnPropertyDescriptor(e, n) {
16
+ return {
17
+ configurable: !0,
18
+ enumerable: !0,
19
+ get() {
20
+ return e.get(n);
21
+ },
22
+ set: trueFn,
23
+ deleteProperty: trueFn
24
+ };
25
+ },
26
+ ownKeys(e) {
27
+ return e.keys();
28
+ }
29
+ };
30
+ function resolveSource(e) {
31
+ return (e = typeof e == "function" ? e() : e) ? e : {};
32
+ }
33
+ function mergeProps$1(...i) {
34
+ let o = !1;
35
+ for (let r = 0; r < i.length; r++) {
36
+ let a = i[r];
37
+ o ||= !!a && $PROXY in a, i[r] = typeof a == "function" ? (o = !0, createMemo(a)) : a;
38
+ }
39
+ if (SUPPORTS_PROXY && o) return new Proxy({
40
+ get(e) {
41
+ for (let n = i.length - 1; n >= 0; n--) {
42
+ let r = resolveSource(i[n])[e];
43
+ if (r !== void 0) return r;
44
+ }
45
+ },
46
+ has(e) {
47
+ for (let n = i.length - 1; n >= 0; n--) if (e in resolveSource(i[n])) return !0;
48
+ return !1;
49
+ },
50
+ keys() {
51
+ let e = [];
52
+ for (let n = 0; n < i.length; n++) e.push(...Object.keys(resolveSource(i[n])));
53
+ return [...new Set(e)];
54
+ }
55
+ }, propTraps);
56
+ let s = Object.create(null);
57
+ for (let e = i.length - 1; e >= 0; e--) {
58
+ let n = i[e];
59
+ if (!n) continue;
60
+ let r = Object.getOwnPropertyDescriptors(n);
61
+ for (let e in r) {
62
+ let n = r[e];
63
+ s[e] || (s[e] = n);
64
+ }
65
+ }
66
+ let c = {}, l = Object.keys(s);
67
+ for (let e = l.length - 1; e >= 0; e--) {
68
+ let n = l[e], r = s[n];
69
+ r && r.get ? Object.defineProperty(c, n, r) : c[n] = r ? r.value : void 0;
70
+ }
71
+ return c;
72
+ }
73
+ export { mergeProps$1 as mergeProps };
@@ -1,4 +1,5 @@
1
- import { createComponent, mergeProps } from "solid-js/web";
1
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
2
+ import { createComponent } from "solid-js/web";
2
3
  import { Show, createMemo } from "solid-js";
3
4
  function buildMergeMap(e, t, n) {
4
5
  let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
@@ -26,13 +27,13 @@ function buildMergeMap(e, t, n) {
26
27
  const CellMergePlugin = {
27
28
  name: "cell-merge",
28
29
  rewriteProps: {
29
- Table: ({ Table: t }, { store: n }) => (a) => (n._mergeMap ??= createMemo(() => {
30
+ Table: ({ Table: e }, { store: n }) => (a) => (n._mergeMap ??= createMemo(() => {
30
31
  let { merge: e, data: t, columns: r } = n.props;
31
32
  return !e && !r?.some((e) => e.mergeRow) || !t?.length || !r?.length ? {
32
33
  spans: /* @__PURE__ */ new Map(),
33
34
  covered: /* @__PURE__ */ new Set()
34
35
  } : buildMergeMap(t, r, e);
35
- }), createComponent(t, a)),
36
+ }), createComponent(e, a)),
36
37
  Td: ({ Td: r }, { store: i }) => (a) => {
37
38
  let o = () => `${a.y},${a.x}`, s = () => i._mergeMap?.().covered.has(o()) ?? !1, c = () => i._mergeMap?.().spans.get(o());
38
39
  return createComponent(Show, {
@@ -40,7 +41,7 @@ const CellMergePlugin = {
40
41
  return !s();
41
42
  },
42
43
  get children() {
43
- return createComponent(r, mergeProps(a, {
44
+ return createComponent(r, mergeProps$2(a, {
44
45
  get rowspan() {
45
46
  return c()?.rowspan;
46
47
  },
@@ -1,6 +1,7 @@
1
1
  import { usePointerDrag } from "../hooks/index.js";
2
2
  import { unFn } from "../utils.js";
3
- import { createComponent, memo, mergeProps, template } from "solid-js/web";
3
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
4
+ import { createComponent, memo, template } from "solid-js/web";
4
5
  import { batch, createMemo } from "solid-js";
5
6
  import { combineProps } from "@solid-primitives/props";
6
7
  import { createLazyMemo } from "@solid-primitives/memo";
@@ -25,39 +26,39 @@ const CellSelectionPlugin = {
25
26
  return e.props.data.slice(s, c + 1);
26
27
  } }),
27
28
  rewriteProps: {
28
- Table: ({ Table: a }, { store: s }) => (c) => (usePointerDrag(() => s.table, {
29
+ Table: ({ Table: a }, { store: o }) => (c) => (usePointerDrag(() => o.table, {
29
30
  preventDefault: !1,
30
- start(e, a, o) {
31
+ start(e, a, s) {
31
32
  batch(() => {
32
- let o = (e) => e.composedPath().find((e) => e.tagName == "TH" || e.tagName == "TD"), c = (e) => [e.getAttribute("x"), e.getAttribute("y")], l = o(e);
33
+ let s = (e) => e.composedPath().find((e) => e.tagName == "TH" || e.tagName == "TD"), c = (e) => [e.getAttribute("x"), e.getAttribute("y")], l = s(e);
33
34
  if (l && !(e.buttons != 1 && l.classList.contains("range-selected"))) {
34
35
  if (l.tagName == "TH") {
35
36
  let [e, u] = c(l);
36
37
  if (e == null) return;
37
- s.selected.start = [+e, 0], s.selected.end = [+e, Infinity], a((e) => {
38
- let a = o(e);
38
+ o.selected.start = [+e, 0], o.selected.end = [+e, Infinity], a((e) => {
39
+ let a = s(e);
39
40
  if (!a) return;
40
41
  let [l, u] = c(a);
41
- l != null && (s.selected.end = [+l, Infinity]);
42
+ l != null && (o.selected.end = [+l, Infinity]);
42
43
  });
43
44
  }
44
45
  if (l.classList.contains("index")) {
45
46
  let [e, u] = c(l);
46
47
  if (e == null || u == null) return;
47
- s.selected.start = [0, +u], s.selected.end = [Infinity, +u], a((e) => {
48
- let a = o(e);
48
+ o.selected.start = [0, +u], o.selected.end = [Infinity, +u], a((e) => {
49
+ let a = s(e);
49
50
  if (!a) return;
50
51
  let [l, u] = c(a);
51
- l == null || u == null || (s.selected.end = [Infinity, +u]);
52
+ l == null || u == null || (o.selected.end = [Infinity, +u]);
52
53
  });
53
54
  } else if (l.tagName == "TD") {
54
55
  let [e, u] = c(l);
55
56
  if (e == null || u == null) return;
56
- s.selected.start = [+e, +u], s.selected.end = [...s.selected.start], a((e) => {
57
- let a = o(e);
57
+ o.selected.start = [+e, +u], o.selected.end = [...o.selected.start], a((e) => {
58
+ let a = s(e);
58
59
  if (!a) return;
59
60
  let [l, u] = c(a);
60
- l == null || u == null || (s.selected.end = [+l, +u]);
61
+ l == null || u == null || (o.selected.end = [+l, +u]);
61
62
  });
62
63
  }
63
64
  }
@@ -69,7 +70,7 @@ const CellSelectionPlugin = {
69
70
  let { start: e, end: o } = a.selected;
70
71
  return inrange(l.x, ...[e[0], o[0]].sort((e, a) => e - a)) ? "col-range-highlight" : "";
71
72
  });
72
- return createComponent(e, mergeProps(l, {
73
+ return createComponent(e, mergeProps$2(l, {
73
74
  get class() {
74
75
  return `${l.class} ${u()}`;
75
76
  },
@@ -83,7 +84,7 @@ const CellSelectionPlugin = {
83
84
  let e = "", { xs: o, ys: s } = a.cellSelectionRect(), c = inrange(l.x, o[0], o[1]), u = inrange(l.y, s[0], s[1]);
84
85
  return c && u && (e += "range-selected ", l.x == o[0] && (e += "range-selected-l "), l.x == o[1] && (e += "range-selected-r "), l.y == s[0] && (e += "range-selected-t "), l.y == s[1] && (e += "range-selected-b ")), l.col.id == a.$index?.id && u && (e += "row-range-highlight "), e;
85
86
  });
86
- return createComponent(e, mergeProps(l, {
87
+ return createComponent(e, mergeProps$2(l, {
87
88
  get class() {
88
89
  return `${l.class} ${u()}`;
89
90
  },
@@ -1,4 +1,5 @@
1
- import { className, createComponent, effect, memo, mergeProps, template } from "solid-js/web";
1
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
2
+ import { className, createComponent, effect, memo, template } from "solid-js/web";
2
3
  import { createMemo } from "solid-js";
3
4
  import { createLazyMemo } from "@solid-primitives/memo";
4
5
  import { isEqual, keyBy } from "es-toolkit";
@@ -53,14 +54,14 @@ const DiffPlugin = {
53
54
  let { diff: e } = f.props, o = p.data[f.props.rowKey];
54
55
  return [p.data[NEW] ? "bg-green!" : p.data[DEL] ? "bg-red!" : p.data[f.internal] ? "" : e.changed && p.data[p.col.id] != f.diffDataKeyed()[o]?.[p.col.id] ? "bg-green!" : ""].join(" ");
55
56
  });
56
- return createComponent(u, mergeProps(p, {
57
+ return createComponent(u, mergeProps$2(p, {
57
58
  get class() {
58
59
  return p.class + (m() ? " relative z-1" : "");
59
60
  },
60
61
  get children() {
61
62
  return [p.children, memo(() => memo(() => !!m())() && (() => {
62
- var o = _tmpl$();
63
- return effect(() => className(o, m() + " absolute inset-0 z--1 op-15 pointer-events-none")), o;
63
+ var e = _tmpl$();
64
+ return effect(() => className(e, m() + " absolute inset-0 z--1 op-15 pointer-events-none")), e;
64
65
  })())];
65
66
  }
66
67
  }));
@@ -1,8 +1,9 @@
1
1
  import { chooseFile, resolveOptions, unFn } from "../utils.js";
2
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
2
3
  import { Checkbox, Files } from "./RenderPlugin/components.js";
3
4
  import Textarea_default from "../components/Textarea.js";
4
5
  import { Ctx } from "../index.js";
5
- import { addEventListener, createComponent, delegateEvents, effect, insert, memo, mergeProps, spread, template, use } from "solid-js/web";
6
+ import { addEventListener, createComponent, delegateEvents, effect, insert, memo, spread, template, use } from "solid-js/web";
6
7
  import { createEffect, createMemo, createRoot, createSignal, on, onCleanup, useContext } from "solid-js";
7
8
  import { createMutable } from "solid-js/store";
8
9
  import { combineProps } from "@solid-primitives/props";
@@ -13,38 +14,38 @@ const EditablePlugin = {
13
14
  name: "editable",
14
15
  store: () => ({ editors: { ...editors } }),
15
16
  rewriteProps: {
16
- editable: ({ editable: e }, { store: _ }) => (y) => {
17
- let b = [y.col.editable, e].filter((e) => e != null);
18
- return !!b.length && b.every((e) => unFn(e, y)) && !y.data[_.internal] && !y.col[_.internal];
17
+ editable: ({ editable: e }, { store: g }) => (v) => {
18
+ let y = [v.col.editable, e].filter((e) => e != null);
19
+ return !!y.length && y.every((e) => unFn(e, v)) && !v.data[g.internal] && !v.col[g.internal];
19
20
  },
20
- Td: ({ Td: e }, { store: _ }) => (y) => {
21
- let b, { props: x } = useContext(Ctx), [T, E] = createSignal(!1), O = "", k = () => unFn(x.editable, y), j = () => (([e, _]) => y.x == e && y.y == _)(_.selected.start || []), M = () => j() && k() && !T(), [N, P] = createSignal(!1), F = createAsyncMemo(() => {
21
+ Td: ({ Td: e }, { store: g }) => (y) => {
22
+ let b, { props: x } = useContext(Ctx), [T, E] = createSignal(!1), O = "", k = () => unFn(x.editable, y), j = () => (([e, g]) => y.x == e && y.y == g)(g.selected.start || []), M = () => j() && k() && !T(), [N, P] = createSignal(!1), F = createAsyncMemo(() => {
22
23
  if (T()) {
23
- let e = createMemo(() => JSON.stringify(_.selected ?? "{}"));
24
+ let e = createMemo(() => JSON.stringify(g.selected ?? "{}"));
24
25
  createEffect(on(e, () => E(!1), { defer: !0 })), R.w = b.getBoundingClientRect().width, R.h = b.getBoundingClientRect().height;
25
- let v = !1, S = y.data[y.col.id], C = ((e) => typeof e == "string" ? _.editors[e] : e)(y.col.editor ?? y.col.type ?? (y.col.enum ? "select" : "text")), w = {
26
+ let _ = !1, v = y.data[y.col.id], S = ((e) => typeof e == "string" ? g.editors[e] : e)(y.col.editor ?? y.col.type ?? (y.col.enum ? "select" : "text")), C = {
26
27
  props: y.col.editorProps,
27
28
  col: y.col,
28
29
  eventKey: O,
29
30
  data: y.data,
30
- value: S,
31
+ value: v,
31
32
  ok: async () => {
32
- await I(D.getValue()), E(!1);
33
+ await I(w.getValue()), E(!1);
33
34
  },
34
- cancel: () => (v = !0, E(!1)),
35
+ cancel: () => (_ = !0, E(!1)),
35
36
  onChange: (e) => T() && I(e).catch(() => {})
36
- }, D = C(w);
37
- return queueMicrotask(() => D.focus?.()), onCleanup(() => {
38
- !v && D.getValue() !== S && _.commands.rowChange({
37
+ }, w = S(C);
38
+ return queueMicrotask(() => w.focus?.()), onCleanup(() => {
39
+ !_ && w.getValue() !== v && g.commands.rowChange({
39
40
  ...x.data[y.y],
40
- [y.col.id]: D.getValue()
41
- }), v || I(D.getValue()).catch(() => {}), O = "", D.destroy();
42
- }), [w, D];
41
+ [y.col.id]: w.getValue()
42
+ }), _ || I(w.getValue()).catch(() => {}), O = "", w.destroy();
43
+ }), [C, w];
43
44
  }
44
45
  });
45
46
  async function I(e) {
46
47
  try {
47
- P(!0), await _.validateCell(e, y.data, y.col);
48
+ P(!0), await g.validateCell(e, y.data, y.col);
48
49
  } finally {
49
50
  P(!1);
50
51
  }
@@ -64,7 +65,7 @@ const EditablePlugin = {
64
65
  onClick: () => L?.focus?.(),
65
66
  onDblClick: () => E(k()),
66
67
  onKeyDown: (e) => e.key == "Escape" && F()?.[0].cancel()
67
- }), createComponent(e, mergeProps(y, { get children() {
68
+ }), createComponent(e, mergeProps$2(y, { get children() {
68
69
  return [memo(() => memo(() => !!F()?.[1]?.el)() ? (() => {
69
70
  var e = _tmpl$();
70
71
  return addEventListener(e, "keydown", (e) => {
@@ -89,9 +90,9 @@ const EditablePlugin = {
89
90
  }
90
91
  }
91
92
  };
92
- var createEditor = (e, v, y) => ({ eventKey: b, value: x, col: S, ok: C, cancel: T, props: E, onChange: D }) => createRoot((T) => {
93
+ var createEditor = (e, _, y) => ({ eventKey: b, value: x, col: S, ok: C, cancel: T, props: E, onChange: D }) => createRoot((T) => {
93
94
  let [O, k] = createSignal(b || x), A;
94
- return createComponent(e, mergeProps({
95
+ return createComponent(e, mergeProps$2({
95
96
  ref: (e) => A = e,
96
97
  class: "relative block px-2 size-full z-9 box-border resize-none outline-0",
97
98
  get value() {
@@ -102,7 +103,7 @@ var createEditor = (e, v, y) => ({ eventKey: b, value: x, col: S, ok: C, cancel:
102
103
  get options() {
103
104
  return memo(() => !!S.enum)() ? resolveOptions(S.enum ?? []) : void 0;
104
105
  }
105
- }, v, E)), setTimeout(() => {
106
+ }, _, E)), setTimeout(() => {
106
107
  y && A?.showPicker?.();
107
108
  }, 0), {
108
109
  el: A,
@@ -111,12 +112,12 @@ var createEditor = (e, v, y) => ({ eventKey: b, value: x, col: S, ok: C, cancel:
111
112
  destroy: T
112
113
  };
113
114
  }), Input = (e) => (() => {
114
- var _ = _tmpl$4();
115
- return spread(_, e, !1, !1), _;
115
+ var g = _tmpl$4();
116
+ return spread(g, e, !1, !1), g;
116
117
  })();
117
118
  const editors = {
118
119
  text: createEditor(Input),
119
- textarea: createEditor((e) => createComponent(Textarea_default, mergeProps({ autosize: {
120
+ textarea: createEditor((e) => createComponent(Textarea_default, mergeProps$2({ autosize: {
120
121
  minRows: 2,
121
122
  maxRows: 3
122
123
  } }, e, { get class() {
@@ -130,27 +131,27 @@ const editors = {
130
131
  color: createEditor(Input, { type: "color" }),
131
132
  tel: createEditor(Input, { type: "tel" }),
132
133
  password: createEditor(Input, { type: "password" }),
133
- file: createEditor((_) => createComponent(Files, mergeProps(_, {
134
+ file: createEditor((g) => createComponent(Files, mergeProps$2(g, {
134
135
  class: "relative z-9 outline-2 outline-blue min-h-a! h-a! p-1 bg-#fff",
135
- onAdd: () => chooseFile({ multiple: !0 }).then((e) => _.onChange([..._.value || [], ...e.map((e) => ({
136
+ onAdd: () => chooseFile({ multiple: !0 }).then((e) => g.onChange([...g.value || [], ...e.map((e) => ({
136
137
  name: e.name,
137
138
  size: e.size
138
139
  }))]))
139
140
  }))),
140
141
  checkbox: createEditor((e) => (() => {
141
- var _ = _tmpl$5(), v = e.ref;
142
- return typeof v == "function" ? use(v, _) : e.ref = _, insert(_, createComponent(Checkbox, mergeProps(e, {
142
+ var g = _tmpl$5(), _ = e.ref;
143
+ return typeof _ == "function" ? use(_, g) : e.ref = g, insert(g, createComponent(Checkbox, mergeProps$2(e, {
143
144
  ref: () => {},
144
145
  onInput: () => {},
145
146
  class: "mx-3!"
146
- }))), _;
147
+ }))), g;
147
148
  })()),
148
149
  select: createEditor((e) => (() => {
149
- var _ = _tmpl$6();
150
- return _.firstChild, spread(_, e, !1, !0), insert(_, () => e.options?.map((_) => (() => {
151
- var v = _tmpl$7();
152
- return insert(v, () => _.label), effect(() => v.selected = _.value === e.value), effect(() => v.value = _.value), v;
153
- })()), null), _;
150
+ var g = _tmpl$6();
151
+ return g.firstChild, spread(g, e, !1, !0), insert(g, () => e.options?.map((g) => (() => {
152
+ var _ = _tmpl$7();
153
+ return insert(_, () => g.label), effect(() => _.selected = g.value === e.value), effect(() => _.value = g.value), _;
154
+ })()), null), g;
154
155
  })(), {}, !0)
155
156
  };
156
157
  delegateEvents(["keydown", "input"]);
@@ -1,8 +1,9 @@
1
1
  import { findret, toArr } from "../utils.js";
2
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
2
3
  import { useControlled } from "../hooks/useControlled.js";
3
4
  import { normalizeType } from "../components/AndOrFields.js";
4
5
  import { Filter, firstRule, isRuleNode } from "../components/Filter.js";
5
- import { createComponent, memo, mergeProps } from "solid-js/web";
6
+ import { createComponent, memo } from "solid-js/web";
6
7
  import { Show, mergeProps as mergeProps$1 } from "solid-js";
7
8
  import { keyBy } from "es-toolkit";
8
9
  function isBlank(e) {
@@ -97,11 +98,11 @@ function evaluateFilterTree(e, m, h) {
97
98
  return g.length ? m.op === "or" ? g.some((m) => evaluateFilterTree(e, m, h)) : g.every((m) => evaluateFilterTree(e, m, h)) : !0;
98
99
  }
99
100
  function passesFilters(e, m, h) {
100
- let _ = keyBy(h, (e) => e.id);
101
+ let g = keyBy(h, (e) => e.id);
101
102
  return evaluateFilterTree(e, {
102
103
  op: "and",
103
104
  children: m
104
- }, (e) => normalizeType(_[e.field]));
105
+ }, (e) => normalizeType(g[e.field]));
105
106
  }
106
107
  const FilterPlugin = {
107
108
  name: "filter",
@@ -136,24 +137,24 @@ const FilterPlugin = {
136
137
  let { columns: h } = m.props, g = m.props.filter;
137
138
  return !g.autoMatch || !g.value.some(hasActiveTree) ? e : e.filter((e) => passesFilters(e, g.value, h));
138
139
  },
139
- Th: ({ Th: m }, { store: h }) => (g) => {
140
- let y = () => !!g.col.filterable && !g.col[h.internal];
141
- return createComponent(m, mergeProps(g, { get children() {
142
- return [memo(() => g.children), createComponent(Show, {
140
+ Th: ({ Th: m }, { store: g }) => (_) => {
141
+ let b = () => !!_.col.filterable && !_.col[g.internal];
142
+ return createComponent(m, mergeProps$2(_, { get children() {
143
+ return [memo(() => _.children), createComponent(Show, {
143
144
  get when() {
144
- return y();
145
+ return b();
145
146
  },
146
147
  get children() {
147
148
  return createComponent(Filter, {
148
149
  get col() {
149
- return g.col;
150
+ return _.col;
150
151
  },
151
152
  get tree() {
152
- return findret(h.props.filter.value, (e) => firstRule(e)?.field === g.col.id ? e : null);
153
+ return findret(g.props.filter.value, (e) => firstRule(e)?.field === _.col.id ? e : null);
153
154
  },
154
155
  setTree: (e) => {
155
- let m = [...h.props.filter.value], _ = m.findIndex((e) => firstRule(e)?.field == g.col.id);
156
- e ? _ > -1 ? m[_] = e : m.push(e) : _ > -1 && m.splice(_, 1), h.props.filter?.onChange?.(m);
156
+ let m = [...g.props.filter.value], h = m.findIndex((e) => firstRule(e)?.field == _.col.id);
157
+ e ? h > -1 ? m[h] = e : m.push(e) : h > -1 && m.splice(h, 1), g.props.filter?.onChange?.(m);
157
158
  }
158
159
  });
159
160
  }
@@ -2,6 +2,7 @@ import { type JSX } from 'solid-js';
2
2
  import { type Plugin, type TDProps } from '../..';
3
3
  declare module '../../index' {
4
4
  interface TableProps {
5
+ cpu?: boolean;
5
6
  }
6
7
  interface TableColumn {
7
8
  type?: string;
@@ -17,10 +18,7 @@ declare module '../../index' {
17
18
  };
18
19
  }
19
20
  }
20
- export type RenderProps = TDProps & {
21
- onChange: (v: any) => void;
22
- };
23
- export type Render = (props: RenderProps) => JSX.Element | any;
21
+ export type Render = (props: TDProps) => JSX.Element | any;
24
22
  export declare const RenderPlugin: Plugin;
25
23
  export declare const renders: {
26
24
  text: Render;
@@ -1,18 +1,17 @@
1
1
  import { renderComponent, solidComponent } from "../../components/utils.js";
2
2
  import { resolveOptions, toArr } from "../../utils.js";
3
+ import { mergeProps as mergeProps$1 } from "../../mergeProps2.js";
3
4
  import { Checkbox, Files } from "./components.js";
4
- import { createComponent, insert, mergeProps, template } from "solid-js/web";
5
+ import { createComponent, insert, template } from "solid-js/web";
5
6
  var _tmpl$ = /* @__PURE__ */ template("<div class=\"flex items-center h-full\">");
6
7
  const RenderPlugin = {
7
8
  name: "render",
8
9
  priority: -Infinity,
9
10
  store: () => ({ renders: { ...renders } }),
10
- rewriteProps: { Td: ({ Td: d }, { store: f }) => (p) => createComponent(d, mergeProps(p, { get children() {
11
- return (() => {
12
- let d = ((e) => typeof e == "string" ? f.renders[e] : e)(p.col.render ?? p.col.type);
13
- return d ? renderComponent(d, p, f) : text(p);
14
- })();
15
- } })) }
11
+ rewriteProps: { Td: ({ Td: d }, { store: f }) => (p) => (f.props.cpu && (p = mergeProps$1(() => ({}), p)), createComponent(d, mergeProps$1(p, { children: () => {
12
+ let d = ((e) => typeof e == "string" ? f.renders[e] : e)(p.col.render ?? p.col.type ?? text);
13
+ return d == text ? text(p) : renderComponent(d, p, f);
14
+ } }))) }
16
15
  };
17
16
  var text = (e) => e.col.enum ? toArr(e.value).map((d) => resolveOptions(e.col.enum).find((e) => e.value == d)?.label ?? d).join(", ") : e.value;
18
17
  const renders = {
@@ -1,7 +1,8 @@
1
1
  import { usePointerDrag } from "../hooks/index.js";
2
2
  import { unFn } from "../utils.js";
3
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
3
4
  import { Ctx } from "../index.js";
4
- import { className, createComponent, delegateEvents, effect, memo, mergeProps, template, use } from "solid-js/web";
5
+ import { className, createComponent, delegateEvents, effect, memo, template, use } from "solid-js/web";
5
6
  import { batch, untrack, useContext } from "solid-js";
6
7
  import { reconcile } from "solid-js/store";
7
8
  import { clamp } from "es-toolkit";
@@ -10,35 +11,35 @@ import { defaultsDeep } from "es-toolkit/compat";
10
11
  var _tmpl$ = /* @__PURE__ */ template("<div>"), COL = Symbol("col_size"), ROW = Symbol("row_size"), findParentEl = (e, m) => {
11
12
  for (; e = e.parentElement;) if (m(e)) return e;
12
13
  }, ColHandle = (m) => {
13
- let { props: _, store: v } = useContext(Ctx), b;
14
- return usePointerDrag(() => b, { start(e, h, g) {
14
+ let { props: h, store: v } = useContext(Ctx), y;
15
+ return usePointerDrag(() => y, { start(e, g, _) {
15
16
  e.stopPropagation();
16
- let y = m.x, { min: x, max: S } = _.resizable.col, C = findParentEl(b, (e) => e.tagName === "TH"), w = C.offsetWidth;
17
- h((e, { ox: h }) => v[COL][m.x] = clamp(w + h, x, S)), g(() => {
18
- let e = _.columns[y], m = [...v.rawProps.columns || []], h = m.findIndex((m) => m[v.ID] === e[v.ID]);
19
- h > -1 && (m[h] = {
20
- ...m[h],
17
+ let b = m.x, { min: x, max: S } = h.resizable.col, C = findParentEl(y, (e) => e.tagName === "TH"), w = C.offsetWidth;
18
+ g((e, { ox: h }) => v[COL][m.x] = clamp(w + h, x, S)), _(() => {
19
+ let e = h.columns[b], m = [...v.rawProps.columns || []], g = m.findIndex((m) => m[v.ID] === e[v.ID]);
20
+ g > -1 && (m[g] = {
21
+ ...m[g],
21
22
  width: C.offsetWidth
22
- }, _.onColumnsChange?.(m)), e.onWidthChange?.(C.offsetWidth);
23
+ }, h.onColumnsChange?.(m)), e.onWidthChange?.(C.offsetWidth);
23
24
  });
24
25
  } }), (() => {
25
26
  var e = _tmpl$();
26
27
  e.$$click = (e) => e.stopPropagation();
27
- var h = b;
28
- return typeof h == "function" ? use(h, e) : b = e, effect(() => className(e, `in-cell__resize-handle absolute top-0 right-0 flex justify-center w-10px! ${m.x == _.columns.length - 1 ? "justify-end!" : "w-10px! translate-x-1/2"} after:w-1 cursor-w-resize z-1`)), e;
28
+ var g = y;
29
+ return typeof g == "function" ? use(g, e) : y = e, effect(() => className(e, `in-cell__resize-handle absolute top-0 right-0 flex justify-center w-10px! ${m.x == h.columns.length - 1 ? "justify-end!" : "w-10px! translate-x-1/2"} after:w-1 cursor-w-resize z-1`)), e;
29
30
  })();
30
31
  }, RowHandle = (m) => {
31
- let { props: _, store: v } = useContext(Ctx), b;
32
- return usePointerDrag(() => b, { start(e, h, g) {
32
+ let { props: h, store: v } = useContext(Ctx), y;
33
+ return usePointerDrag(() => y, { start(e, g, _) {
33
34
  e.stopPropagation();
34
- let y = m.y, { min: x, max: S } = _.resizable.row, C = findParentEl(b, (e) => e.tagName === "TD").offsetHeight;
35
- h((e, { oy: h }) => v[ROW][m.y] = clamp(C + h, x, S)), g(() => {
36
- let e = _.data[y];
35
+ let b = m.y, { min: x, max: S } = h.resizable.row, C = findParentEl(y, (e) => e.tagName === "TD").offsetHeight;
36
+ g((e, { oy: h }) => v[ROW][m.y] = clamp(C + h, x, S)), _(() => {
37
+ let e = h.data[b];
37
38
  [...v.rawProps.data || []].findIndex((m) => m[v.ID] === e[v.ID]);
38
39
  });
39
- } }), createEventListener(() => b, "dblclick", () => m.data[COL] = void 0), (() => {
40
- var e = _tmpl$(), h = b;
41
- return typeof h == "function" ? use(h, e) : b = e, effect(() => className(e, `in-cell__resize-handle absolute bottom-0 left-0 flex flex-col justify-center h-1! ${m.y == _.data.length - 1 ? "justify-end!" : ""} after:h-1 cursor-s-resize z-2`)), e;
40
+ } }), createEventListener(() => y, "dblclick", () => m.data[COL] = void 0), (() => {
41
+ var e = _tmpl$(), g = y;
42
+ return typeof g == "function" ? use(g, e) : y = e, effect(() => className(e, `in-cell__resize-handle absolute bottom-0 left-0 flex flex-col justify-center h-1! ${m.y == h.data.length - 1 ? "justify-end!" : ""} after:h-1 cursor-s-resize z-2`)), e;
42
43
  })();
43
44
  };
44
45
  const ResizePlugin = {
@@ -71,7 +72,7 @@ const ResizePlugin = {
71
72
  ...e,
72
73
  width: m[COL][h]
73
74
  } : e), untrack(() => batch(() => reconcile(e, { key: m.ID })(m.__resize__cols ??= [])))),
74
- Th: ({ Th: e }, { store: m }) => (m) => createComponent(e, mergeProps(m, {
75
+ Th: ({ Th: e }, { store: m }) => (m) => createComponent(e, mergeProps$2(m, {
75
76
  get class() {
76
77
  return `relative ${m.class}`;
77
78
  },
@@ -79,12 +80,12 @@ const ResizePlugin = {
79
80
  return [m.children, memo(() => memo(() => !!m.col.resizable)() && createComponent(ColHandle, m))];
80
81
  }
81
82
  })),
82
- Td: ({ Td: e }, { store: m }) => m.props?.resizable?.row.enable ? (h) => createComponent(e, mergeProps(h, {
83
+ Td: ({ Td: e }, { store: m }) => m.props?.resizable?.row.enable ? (g) => createComponent(e, mergeProps$2(g, {
83
84
  get class() {
84
- return `relative ${h.class}`;
85
+ return `relative ${g.class}`;
85
86
  },
86
87
  get children() {
87
- return [h.children, memo(() => memo(() => !!(h.x == 0 && m.props?.resizable?.row.enable))() && createComponent(RowHandle, h))];
88
+ return [g.children, memo(() => memo(() => !!(g.x == 0 && m.props?.resizable?.row.enable))() && createComponent(RowHandle, g))];
88
89
  }
89
90
  })) : e,
90
91
  cellStyle: ({ cellStyle: e }, { store: h }) => (g) => `${unFn(e, g)};` + (h[ROW][g.y] ? `height: ${h[ROW][g.y]}px` : "")
@@ -1,6 +1,7 @@
1
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
1
2
  import chevron_right_default from "../chevron-right.js";
2
3
  import { Ctx } from "../index.js";
3
- import { createComponent, delegateEvents, effect, insert, memo, mergeProps, style, template } from "solid-js/web";
4
+ import { createComponent, delegateEvents, effect, insert, memo, style, template } from "solid-js/web";
4
5
  import { batch, createMemo, useContext } from "solid-js";
5
6
  import { groupBy, zipObject } from "es-toolkit";
6
7
  import { findLast } from "es-toolkit/compat";
@@ -49,22 +50,22 @@ const RowGroupPlugin = {
49
50
  }
50
51
  return d;
51
52
  },
52
- Td: ({ Td: d }, { store: _ }) => _.props?.rowGroup?.fields ? (v) => {
53
- if (!v.data?.[GROUP]) return d(v);
53
+ Td: ({ Td: f }, { store: _ }) => _.props?.rowGroup?.fields ? (v) => {
54
+ if (!v.data?.[GROUP]) return f(v);
54
55
  let { props: y } = useContext(Ctx), b = createMemo(() => _.rowGroup.isExpand(v.data));
55
- return createComponent(d, mergeProps(v, { get children() {
56
+ return createComponent(f, mergeProps$2(v, { get children() {
56
57
  return memo(() => y.columns?.findIndex((e) => !e[_.internal]) == v.x)() ? (() => {
57
- var l = _tmpl$();
58
- return l.$$dblclick = () => _.rowGroup.toggleExpand(v.data), insert(l, createComponent(chevron_right_default, {
58
+ var e = _tmpl$();
59
+ return e.$$dblclick = () => _.rowGroup.toggleExpand(v.data), insert(e, createComponent(chevron_right_default, {
59
60
  class: "icon-clickable mr-2",
60
61
  get style() {
61
62
  return `transform: rotate(${b() ? 90 : 0}deg); opacity: .6`;
62
63
  },
63
64
  onClick: () => _.rowGroup.toggleExpand(v.data)
64
- }), null), insert(l, () => v.data[GROUP].value, null), effect((e) => style(l, `padding-left: ${(v.data[GROUP].path.length - 1) * 16}px`, e)), l;
65
+ }), null), insert(e, () => v.data[GROUP].value, null), effect((l) => style(e, `padding-left: ${(v.data[GROUP].path.length - 1) * 16}px`, l)), e;
65
66
  })() : v.children;
66
67
  } }));
67
- } : d
68
+ } : f
68
69
  }
69
70
  };
70
71
  var GROUP = Symbol("row-group"), expandData = (e, l, u = []) => {
@@ -1,5 +1,6 @@
1
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
1
2
  import { useControlled } from "../hooks/useControlled.js";
2
- import { createComponent, insert, memo, mergeProps, template } from "solid-js/web";
3
+ import { createComponent, insert, memo, template } from "solid-js/web";
3
4
  import { Show, mergeProps as mergeProps$1 } from "solid-js";
4
5
  import { combineProps } from "@solid-primitives/props";
5
6
  var _tmpl$ = /* @__PURE__ */ template("<svg viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2 class=\"w-3.5 h-3.5 opacity-50 shrink-0 flex-none ml-1\"><path stroke-linecap=round stroke-linejoin=round d=\"M8 9l4-4 4 4M16 15l-4 4-4-4\">"), _tmpl$2 = /* @__PURE__ */ template("<svg viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2.5 class=\"w-3.5 h-3.5 shrink-0 flex-none ml-1\"style=color:var(--c-primary,#6366f1)><path stroke-linecap=round stroke-linejoin=round d=\"M5 15l7-7 7 7\">"), _tmpl$3 = /* @__PURE__ */ template("<svg viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2.5 class=\"w-3.5 h-3.5 shrink-0 flex-none ml-1\"style=color:var(--c-primary,#6366f1)><path stroke-linecap=round stroke-linejoin=round d=\"M19 9l-7 7-7-7\">"), _tmpl$4 = /* @__PURE__ */ template("<div class=\"flex items-center w-full\">");
@@ -32,11 +33,11 @@ const SortPlugin = [{
32
33
  name: "sort",
33
34
  priority: -1,
34
35
  rewriteProps: {
35
- sort: ({ sort: c }, { store: l }) => c ? (c = mergeProps$1({
36
+ sort: ({ sort: e }, { store: l }) => (e = mergeProps$1({
36
37
  multiple: !1,
37
38
  autoSort: !0,
38
39
  initialValue: []
39
- }, c), l.sort ??= useControlled(c, l.owner), l.sort.$setOpt(c), l.sort) : { value: [] },
40
+ }, e), l.sort ??= useControlled(e, l.owner), l.sort.$setOpt(e), l.sort),
40
41
  data: ({ data: e }, { store: c }) => {
41
42
  let l = c.props.sort;
42
43
  if (!l.value?.length || !l.autoSort) return e;
@@ -46,8 +47,8 @@ const SortPlugin = [{
46
47
  }
47
48
  }, {
48
49
  name: "sort-th",
49
- rewriteProps: { Th: ({ Th: e }, { store: f }) => (m) => {
50
- let h = mergeProps$1(() => f.props.sort), g = () => !!m.col.sortable && !m.col[f.internal], _ = () => g() ? h.value.find((e) => e.field === m.col.id) : void 0, v = combineProps(m, {
50
+ rewriteProps: { Th: ({ Th: c }, { store: f }) => (m) => {
51
+ let h = mergeProps$2(() => f.props.sort), g = () => !!m.col.sortable && !m.col[f.internal], _ = () => g() ? h.value.find((e) => e.field === m.col.id) : void 0, v = combineProps(m, {
51
52
  get class() {
52
53
  return g() ? "cursor-pointer select-none" : "";
53
54
  },
@@ -72,7 +73,7 @@ const SortPlugin = [{
72
73
  h.onChange([...d]);
73
74
  }
74
75
  });
75
- return createComponent(e, mergeProps(v, { get children() {
76
+ return createComponent(c, mergeProps$2(v, { get children() {
76
77
  var e = _tmpl$4();
77
78
  return insert(e, () => m.children, null), insert(e, createComponent(Show, {
78
79
  get when() {
@@ -1,6 +1,7 @@
1
1
  import { renderComponent } from "../components/utils.js";
2
+ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
2
3
  import { Tooltip } from "../components/Tooltip.js";
3
- import { createComponent, mergeProps } from "solid-js/web";
4
+ import { createComponent } from "solid-js/web";
4
5
  import { Show, createSignal } from "solid-js";
5
6
  import { combineProps } from "@solid-primitives/props";
6
7
  import { offset } from "floating-ui-solid";
@@ -11,7 +12,7 @@ const TooltipPlugin = {
11
12
  let s = u.col.tooltip;
12
13
  if (s != null) return typeof s == "boolean" && (s = s && u.value != null ? String(u.value) : void 0), typeof s == "function" && (s = s(u)), renderComponent(s, u, l);
13
14
  }, [f, p] = createSignal();
14
- return u = combineProps({ ref: p }, u), createComponent(c, mergeProps(u, { get children() {
15
+ return u = combineProps({ ref: p }, u), createComponent(c, mergeProps$2(u, { get children() {
15
16
  return createComponent(Show, {
16
17
  get when() {
17
18
  return d();
@@ -1,6 +1,7 @@
1
+ import { mergeProps as mergeProps$1 } from "../mergeProps2.js";
1
2
  import { useSelector } from "../hooks/useSelector.js";
2
3
  import chevron_right_default from "../chevron-right.js";
3
- import { createComponent, effect, insert, memo, mergeProps, style, template } from "solid-js/web";
4
+ import { createComponent, effect, insert, memo, style, template } from "solid-js/web";
4
5
  import { createLazyMemo } from "@solid-primitives/memo";
5
6
  var _tmpl$ = /* @__PURE__ */ template("<div class=\"flex items-center\">"), _tmpl$2 = /* @__PURE__ */ template("<span style=display:inline-block;width:16px;flex-shrink:0;margin-right:4px>");
6
7
  function flattenTree(e, t, n, r, i = 0, a = null, o = [], s = /* @__PURE__ */ new Map()) {
@@ -21,7 +22,7 @@ const TreePlugin = (c) => {
21
22
  let p = createLazyMemo(() => c.props.columns?.findIndex((e) => !e[c.internal]) ?? -1);
22
23
  return {
23
24
  name: "tree",
24
- store: (t) => ({
25
+ store: (e) => ({
25
26
  tree: useSelector({ multiple: !0 }),
26
27
  _treeMeta: /* @__PURE__ */ new Map(),
27
28
  _hasChildren: !1
@@ -36,9 +37,9 @@ const TreePlugin = (c) => {
36
37
  let n = t.props.tree.children || "children", r = t.props.rowKey, { flat: i, meta: a } = flattenTree(e, n, r, (e) => t.tree.has(e));
37
38
  return t._treeMeta = a, t._haschildren = Object.values(Object.fromEntries(a)).some((e) => e.hasChildren), i;
38
39
  },
39
- Td: ({ Td: e }, { store: c }) => (l) => {
40
+ Td: ({ Td: t }, { store: c }) => (l) => {
40
41
  let f = () => c.props.rowKey, m = () => c._treeMeta?.get(l.data?.[f()]);
41
- return createComponent(e, mergeProps(l, {
42
+ return createComponent(t, mergeProps$1(l, {
42
43
  onDblClick: (e) => {
43
44
  l.onDblClick?.(e), m()?.hasChildren && c.tree.toggle(l.data?.[f()]);
44
45
  },
@@ -1,5 +1,6 @@
1
1
  import { isEmpty } from "../utils.js";
2
- import { createComponent, insert, memo, mergeProps, template } from "solid-js/web";
2
+ import { mergeProps as mergeProps$1 } from "../mergeProps2.js";
3
+ import { createComponent, insert, memo, template } from "solid-js/web";
3
4
  var _tmpl$ = /* @__PURE__ */ template("<div class=cell-validation-error>"), _tmpl$2 = /* @__PURE__ */ template("<span class=\"mr-1 c-red/75\">*");
4
5
  const ValidatorPlugin = {
5
6
  name: "validator",
@@ -56,7 +57,7 @@ const ValidatorPlugin = {
56
57
  rewriteProps: {
57
58
  Td: ({ Td: e }, { store: a }) => (s) => {
58
59
  let c = () => a.cellValidationErrors[s.data[a.props.rowKey]]?.[s.col.id];
59
- return createComponent(e, mergeProps(s, {
60
+ return createComponent(e, mergeProps$1(s, {
60
61
  get class() {
61
62
  return s.class + " " + (c() == null ? "" : "is-invalid");
62
63
  },
@@ -71,8 +72,8 @@ const ValidatorPlugin = {
71
72
  }
72
73
  }));
73
74
  },
74
- Th: ({ Th: e }, { store: n }) => (n) => createComponent(e, mergeProps(n, { get children() {
75
- return [memo(() => memo(() => !!n.col.required)() && _tmpl$2()), n.children];
75
+ Th: ({ Th: e }, { store: r }) => (r) => createComponent(e, mergeProps$1(r, { get children() {
76
+ return [memo(() => memo(() => !!r.col.required)() && _tmpl$2()), r.children];
76
77
  } }))
77
78
  }
78
79
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intable",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [