intable 0.0.47 → 0.0.49

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.js CHANGED
@@ -302,15 +302,20 @@ function BasePlugin() {
302
302
  } }));
303
303
  },
304
304
  Td: ({ Td: _ = $ }, { store: K }) => (K) => {
305
- let { props: J } = useContext(Ctx), Y = combineProps(K, {
305
+ let { props: J } = useContext(Ctx), Y = mergeProps$1(K, {
306
306
  get class() {
307
- return [unFn(J.cellClass, K), K.col.class].filter(Boolean).join(" ");
307
+ return [
308
+ unFn(J.cellClass, K),
309
+ K.col.class,
310
+ K.class
311
+ ].filter(Boolean).join(" ");
308
312
  },
309
313
  get style() {
310
314
  return [
311
315
  unFn(J.cellStyle, K),
312
316
  K.col.style,
313
- K.col.width && `width: ${K.col.width}px; max-width: ${K.col.width}px`
317
+ K.col.width && `width: ${K.col.width}px; max-width: ${K.col.width}px`,
318
+ K.style
314
319
  ].filter(Boolean).join(";");
315
320
  }
316
321
  });
@@ -404,7 +409,7 @@ const defaultsPlugins = [
404
409
  return createEffect(on(() => [K.width, _.props.columns.map((_) => _.width)], async () => {
405
410
  if (!K.width || J) return;
406
411
  q.length = 0, J = !0, await Promise.resolve();
407
- let Y = (K.width - _.table.getBoundingClientRect().width) / _.props.columns.filter((_) => !_.width).length, X = _.props.columns.map((K, q) => K.width ? null : { width: Math.max((_.ths[q]?.getBoundingClientRect().width || 0) + Y, 80) });
412
+ let Y = Math.max((K.width - _.table.getBoundingClientRect().width) / _.props.columns.filter((_) => !_.width).length, 0), X = _.props.columns.map((K, q) => K.width ? null : { width: Math.max((_.ths[q]?.getBoundingClientRect().width || 0) + Y, 80) });
408
413
  q.push(...X), J = !1;
409
414
  })), {
410
415
  name: "fit-col-width",
@@ -1,6 +1,7 @@
1
1
  import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
2
2
  import { createComponent } from "solid-js/web";
3
3
  import { Show, createMemo } from "solid-js";
4
+ import { createLazyMemo } from "@solid-primitives/memo";
4
5
  function buildMergeMap(e, t, n) {
5
6
  let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
6
7
  for (let a = 0; a < e.length; a++) for (let o = 0; o < t.length; o++) {
@@ -26,15 +27,16 @@ function buildMergeMap(e, t, n) {
26
27
  }
27
28
  const CellMergePlugin = {
28
29
  name: "cell-merge",
30
+ store: (e) => ({ hasMergeCell: createLazyMemo(() => e.props.merge || e.props.columns.some((e) => e.mergeRow)) }),
29
31
  rewriteProps: {
30
- Table: ({ Table: e }, { store: n }) => (a) => (n._mergeMap ??= createMemo(() => {
32
+ Table: ({ Table: e }, { store: n }) => (i) => (n._mergeMap ??= createMemo(() => {
31
33
  let { merge: e, data: t, columns: r } = n.props;
32
34
  return !e && !r?.some((e) => e.mergeRow) || !t?.length || !r?.length ? {
33
35
  spans: /* @__PURE__ */ new Map(),
34
36
  covered: /* @__PURE__ */ new Set()
35
37
  } : buildMergeMap(t, r, e);
36
- }), createComponent(e, a)),
37
- Td: ({ Td: r }, { store: i }) => (a) => {
38
+ }), createComponent(e, i)),
39
+ Td: ({ Td: r }, { store: i }) => i.hasMergeCell() ? (a) => {
38
40
  let o = () => `${a.y},${a.x}`, s = () => i._mergeMap?.().covered.has(o()) ?? !1, c = () => i._mergeMap?.().spans.get(o());
39
41
  return createComponent(Show, {
40
42
  get when() {
@@ -51,7 +53,7 @@ const CellMergePlugin = {
51
53
  }));
52
54
  }
53
55
  });
54
- },
56
+ } : r,
55
57
  newRow: ({ newRow: e }, { store: t }) => function(n) {
56
58
  let r = e(n), { data: i, columns: a, merge: o } = t.props;
57
59
  return !i?.length || !a?.length || a.forEach((e, a) => {
@@ -6,7 +6,6 @@ import { Ctx } from "../index.js";
6
6
  import { addEventListener, createComponent, delegateEvents, effect, insert, memo, spread, template, use } from "solid-js/web";
7
7
  import { createEffect, createMemo, createRoot, createSignal, on, onCleanup, useContext } from "solid-js";
8
8
  import { createMutable } from "solid-js/store";
9
- import { combineProps } from "@solid-primitives/props";
10
9
  import { createAsyncMemo } from "@solid-primitives/memo";
11
10
  import { delay } from "es-toolkit";
12
11
  var _tmpl$ = /* @__PURE__ */ template("<div class=in-cell-edit-wrapper tabindex=-1>"), _tmpl$2 = /* @__PURE__ */ template("<span class=cell-validating>"), _tmpl$3 = /* @__PURE__ */ template("<input style=position:absolute;margin-top:1em;width:0;height:0;pointer-events:none;opacity:0>"), _tmpl$4 = /* @__PURE__ */ template("<input>"), _tmpl$5 = /* @__PURE__ */ template("<label class=\"h-full flex items-center\">"), _tmpl$6 = /* @__PURE__ */ template("<select><option value>-"), _tmpl$7 = /* @__PURE__ */ template("<option>");
@@ -14,106 +13,106 @@ const EditablePlugin = {
14
13
  name: "editable",
15
14
  store: () => ({ editors: { ...editors } }),
16
15
  rewriteProps: {
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];
16
+ editable: ({ editable: e }, { store: m }) => (g) => {
17
+ let _ = [g.col.editable, e].filter((e) => e != null);
18
+ return !!_.length && _.every((e) => unFn(e, g)) && !g.data[m.internal] && !g.col[m.internal];
20
19
  },
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(() => {
23
- if (T()) {
24
- let e = createMemo(() => JSON.stringify(g.selected ?? "{}"));
25
- createEffect(on(e, () => E(!1), { defer: !0 })), R.w = b.getBoundingClientRect().width, R.h = b.getBoundingClientRect().height;
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 = {
27
- props: y.col.editorProps,
28
- col: y.col,
29
- eventKey: O,
30
- data: y.data,
31
- value: v,
20
+ Td: ({ Td: e }, { store: m }) => (_) => {
21
+ let v, { props: y } = useContext(Ctx), [C, w] = createSignal(!1), E = "", D = () => unFn(y.editable, _), k = () => (([e, m]) => _.x == e && _.y == m)(m.selected.start || []), A = () => k() && D() && !C(), [j, M] = createSignal(!1), N = createAsyncMemo(() => {
22
+ if (C()) {
23
+ let e = createMemo(() => JSON.stringify(m.selected ?? "{}"));
24
+ createEffect(on(e, () => w(!1), { defer: !0 })), I.w = v.getBoundingClientRect().width, I.h = v.getBoundingClientRect().height;
25
+ let h = !1, g = _.data[_.col.id], b = ((e) => typeof e == "string" ? m.editors[e] : e)(_.col.editor ?? _.col.type ?? (_.col.enum ? "select" : "text")), x = {
26
+ props: _.col.editorProps,
27
+ col: _.col,
28
+ eventKey: E,
29
+ data: _.data,
30
+ value: g,
32
31
  ok: async () => {
33
- await I(w.getValue()), E(!1);
32
+ await P(S.getValue()), w(!1);
34
33
  },
35
- cancel: () => (_ = !0, E(!1)),
36
- onChange: (e) => T() && I(e).catch(() => {})
37
- }, w = S(C);
38
- return queueMicrotask(() => w.focus?.()), onCleanup(() => {
39
- !_ && w.getValue() !== v && g.commands.rowChange({
40
- ...x.data[y.y],
41
- [y.col.id]: w.getValue()
42
- }), _ || I(w.getValue()).catch(() => {}), O = "", w.destroy();
43
- }), [C, w];
34
+ cancel: () => (h = !0, w(!1)),
35
+ onChange: (e) => C() && P(e).catch(() => {})
36
+ }, S = b(x);
37
+ return queueMicrotask(() => S.focus?.()), onCleanup(() => {
38
+ !h && S.getValue() !== g && m.commands.rowChange({
39
+ ...y.data[_.y],
40
+ [_.col.id]: S.getValue()
41
+ }), h || P(S.getValue()).catch(() => {}), E = "", S.destroy();
42
+ }), [x, S];
44
43
  }
45
44
  });
46
- async function I(e) {
45
+ async function P(e) {
47
46
  try {
48
- P(!0), await g.validateCell(e, y.data, y.col);
47
+ M(!0), await m.validateCell(e, _.data, _.col);
49
48
  } finally {
50
- P(!1);
49
+ M(!1);
51
50
  }
52
51
  }
53
- let L, R = createMutable({
52
+ let F, I = createMutable({
54
53
  w: 0,
55
54
  h: 0
56
- });
57
- return y = combineProps(y, {
58
- ref: (e) => b = e,
55
+ }), L = mergeProps$2(_, {
56
+ ref: (e) => (v = e, _.ref?.(e)),
59
57
  get class() {
60
- return T() ? "is-editing" : "";
58
+ return [C() ? "is-editing" : "", _.class].filter(Boolean).join(" ");
61
59
  },
62
60
  get style() {
63
- return T() ? `width: ${R.w}px; height: ${R.h}px; padding: 0; ` : "";
61
+ return [C() ? `width: ${I.w}px; height: ${I.h}px; padding: 0; ` : "", _.style].filter(Boolean).join(" ");
64
62
  },
65
- onClick: () => L?.focus?.(),
66
- onDblClick: () => E(k()),
67
- onKeyDown: (e) => e.key == "Escape" && F()?.[0].cancel()
68
- }), createComponent(e, mergeProps$2(y, { get children() {
69
- return [memo(() => memo(() => !!F()?.[1]?.el)() ? (() => {
63
+ onClick: (e) => (F?.focus?.(), _.onClick?.(e)),
64
+ onDblClick: (e) => (w(D()), _.onDblClick?.(e)),
65
+ onKeyDown: (e) => (e.key == "Escape" && N()?.[0].cancel(), _.onKeyDown?.(e))
66
+ });
67
+ return createComponent(e, mergeProps$2(L, { get children() {
68
+ return [memo(() => memo(() => !!N()?.[1]?.el)() ? (() => {
70
69
  var e = _tmpl$();
71
70
  return addEventListener(e, "keydown", (e) => {
72
- e.stopPropagation(), e.key == "Enter" && !e.shiftKey && (F()?.[0].ok(), e.preventDefault()), e.key == "Escape" && F()?.[0].cancel();
73
- }), addEventListener(e, "pointerdown", (e) => e.stopPropagation()), insert(e, () => F()?.[1]?.el, null), insert(e, (() => {
74
- var e = memo(() => !!N());
71
+ e.stopPropagation(), e.key == "Enter" && !e.shiftKey && (N()?.[0].ok(), e.preventDefault()), e.key == "Escape" && N()?.[0].cancel();
72
+ }), addEventListener(e, "pointerdown", (e) => e.stopPropagation()), insert(e, () => N()?.[1]?.el, null), insert(e, (() => {
73
+ var e = memo(() => !!j());
75
74
  return () => e() && _tmpl$2();
76
75
  })(), null), e;
77
- })() : y.children), memo(() => memo(() => !!M())() && (() => {
76
+ })() : _.children), memo(() => memo(() => !!A())() && (() => {
78
77
  var e = _tmpl$3();
79
78
  return e.addEventListener("compositionend", () => {
80
- E(!0);
79
+ w(!0);
81
80
  }), e.$$input = (e) => {
82
- O = e.target.value, E(!e.isComposing);
81
+ E = e.target.value, w(!e.isComposing);
83
82
  }, e.$$keydown = (e) => {
84
83
  e.key == " " && e.preventDefault();
85
84
  }, use((e) => {
86
- L = e, delay(0).then(() => e.focus({ preventScroll: !0 }));
85
+ F = e, delay(0).then(() => e.focus({ preventScroll: !0 }));
87
86
  }, e), e;
88
87
  })())];
89
88
  } }));
90
89
  }
91
90
  }
92
91
  };
93
- var createEditor = (e, _, y) => ({ eventKey: b, value: x, col: S, ok: C, cancel: T, props: E, onChange: D }) => createRoot((T) => {
94
- let [O, k] = createSignal(b || x), A;
92
+ var createEditor = (e, h, _) => ({ eventKey: v, value: y, col: b, ok: x, cancel: C, props: w, onChange: T }) => createRoot((C) => {
93
+ let [E, D] = createSignal(v || y), O;
95
94
  return createComponent(e, mergeProps$2({
96
- ref: (e) => A = e,
95
+ ref: (e) => O = e,
97
96
  class: "relative block px-2 size-full z-9 box-border resize-none outline-0",
98
97
  get value() {
99
- return O();
98
+ return E();
100
99
  },
101
- onInput: (e) => (k(e instanceof Event ? e.target.value : e), D?.(O())),
102
- onChange: (e) => (k(e instanceof Event ? e.target.value : e), D?.(O()), y && C()),
100
+ onInput: (e) => (D(e instanceof Event ? e.target.value : e), T?.(E())),
101
+ onChange: (e) => (D(e instanceof Event ? e.target.value : e), T?.(E()), _ && x()),
103
102
  get options() {
104
- return memo(() => !!S.enum)() ? resolveOptions(S.enum ?? []) : void 0;
103
+ return memo(() => !!b.enum)() ? resolveOptions(b.enum ?? []) : void 0;
105
104
  }
106
- }, _, E)), setTimeout(() => {
107
- y && A?.showPicker?.();
105
+ }, h, w)), setTimeout(() => {
106
+ _ && O?.showPicker?.();
108
107
  }, 0), {
109
- el: A,
110
- getValue: O,
111
- focus: () => A.focus(),
112
- destroy: T
108
+ el: O,
109
+ getValue: E,
110
+ focus: () => O.focus(),
111
+ destroy: C
113
112
  };
114
113
  }), Input = (e) => (() => {
115
- var g = _tmpl$4();
116
- return spread(g, e, !1, !1), g;
114
+ var m = _tmpl$4();
115
+ return spread(m, e, !1, !1), m;
117
116
  })();
118
117
  const editors = {
119
118
  text: createEditor(Input),
@@ -131,27 +130,27 @@ const editors = {
131
130
  color: createEditor(Input, { type: "color" }),
132
131
  tel: createEditor(Input, { type: "tel" }),
133
132
  password: createEditor(Input, { type: "password" }),
134
- file: createEditor((g) => createComponent(Files, mergeProps$2(g, {
133
+ file: createEditor((m) => createComponent(Files, mergeProps$2(m, {
135
134
  class: "relative z-9 outline-2 outline-blue min-h-a! h-a! p-1 bg-#fff",
136
- onAdd: () => chooseFile({ multiple: !0 }).then((e) => g.onChange([...g.value || [], ...e.map((e) => ({
135
+ onAdd: () => chooseFile({ multiple: !0 }).then((e) => m.onChange([...m.value || [], ...e.map((e) => ({
137
136
  name: e.name,
138
137
  size: e.size
139
138
  }))]))
140
139
  }))),
141
140
  checkbox: createEditor((e) => (() => {
142
- var g = _tmpl$5(), _ = e.ref;
143
- return typeof _ == "function" ? use(_, g) : e.ref = g, insert(g, createComponent(Checkbox, mergeProps$2(e, {
141
+ var m = _tmpl$5(), h = e.ref;
142
+ return typeof h == "function" ? use(h, m) : e.ref = m, insert(m, createComponent(Checkbox, mergeProps$2(e, {
144
143
  ref: () => {},
145
144
  onInput: () => {},
146
145
  class: "mx-3!"
147
- }))), g;
146
+ }))), m;
148
147
  })()),
149
148
  select: createEditor((e) => (() => {
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;
149
+ var m = _tmpl$6();
150
+ return m.firstChild, spread(m, e, !1, !0), insert(m, () => e.options?.map((m) => (() => {
151
+ var h = _tmpl$7();
152
+ return insert(h, () => m.label), effect(() => h.selected = m.value === e.value), effect(() => h.value = m.value), h;
153
+ })()), null), m;
155
154
  })(), {}, !0)
156
155
  };
157
156
  delegateEvents(["keydown", "input"]);
@@ -1,26 +1,29 @@
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
+ import { mergeProps as mergeProps$2 } from "../../mergeProps2.js";
4
4
  import { Checkbox, Files } from "./components.js";
5
5
  import { createComponent, insert, template } from "solid-js/web";
6
+ import { createMemo } from "solid-js";
6
7
  var _tmpl$ = /* @__PURE__ */ template("<div class=\"flex items-center h-full\">");
7
8
  const RenderPlugin = {
8
9
  name: "render",
9
10
  priority: -Infinity,
10
11
  store: () => ({ renders: { ...renders } }),
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);
12
+ rewriteProps: { Td: ({ Td: f }, { store: p }) => (m) => (p.props.cpu && (m = mergeProps$2(() => ({}), m)), createComponent(f, mergeProps$2(m, { get children() {
13
+ return createMemo(() => {
14
+ let f = ((e) => typeof e == "string" ? p.renders[e] : e)(m.col.render ?? m.col.type ?? text);
15
+ return f == text ? text(m) : renderComponent(f, m, p);
16
+ });
14
17
  } }))) }
15
18
  };
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;
19
+ var text = (e) => e.col.enum ? toArr(e.value).map((f) => resolveOptions(e.col.enum).find((e) => e.value == f)?.label ?? f).join(", ") : e.value;
17
20
  const renders = {
18
21
  text,
19
22
  number: text,
20
23
  date: text,
21
24
  checkbox: (e) => (() => {
22
- var d = _tmpl$();
23
- return insert(d, createComponent(Checkbox, {
25
+ var f = _tmpl$();
26
+ return insert(f, createComponent(Checkbox, {
24
27
  class: "",
25
28
  get value() {
26
29
  return e.value;
@@ -28,7 +31,7 @@ const renders = {
28
31
  get onChange() {
29
32
  return e.onChange;
30
33
  }
31
- })), d;
34
+ })), f;
32
35
  })(),
33
36
  file: (e) => createComponent(Files, {
34
37
  get value() {
@@ -3,22 +3,23 @@ import { mergeProps as mergeProps$2 } from "../mergeProps2.js";
3
3
  import { Tooltip } from "../components/Tooltip.js";
4
4
  import { createComponent } from "solid-js/web";
5
5
  import { Show, createSignal } from "solid-js";
6
- import { combineProps } from "@solid-primitives/props";
6
+ import { createLazyMemo } from "@solid-primitives/memo";
7
7
  import { offset } from "floating-ui-solid";
8
8
  const TooltipPlugin = {
9
9
  name: "tooltip",
10
- rewriteProps: { Td: ({ Td: c }, { store: l }) => (u) => {
11
- let d = () => {
12
- let s = u.col.tooltip;
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);
14
- }, [f, p] = createSignal();
15
- return u = combineProps({ ref: p }, u), createComponent(c, mergeProps$2(u, { get children() {
10
+ store: (e) => ({ hasTooltip: createLazyMemo(() => e.props.columns.some((e) => e.tooltip)) }),
11
+ rewriteProps: { Td: ({ Td: s }, { store: c }) => c.hasTooltip() ? (l) => {
12
+ let u = () => {
13
+ let o = l.col.tooltip;
14
+ if (o != null) return typeof o == "boolean" && (o = o && l.value != null ? String(l.value) : void 0), typeof o == "function" && (o = o(l)), renderComponent(o, l, c);
15
+ }, [d, f] = createSignal(), p = mergeProps$2(l, { ref: (e) => (f(e), l.ref?.(e)) });
16
+ return createComponent(s, mergeProps$2(p, { get children() {
16
17
  return createComponent(Show, {
17
18
  get when() {
18
- return d();
19
+ return u();
19
20
  },
20
21
  get fallback() {
21
- return u.children;
22
+ return l.children;
22
23
  },
23
24
  children: (e) => createComponent(Tooltip, {
24
25
  get content() {
@@ -26,17 +27,17 @@ const TooltipPlugin = {
26
27
  },
27
28
  strategy: "fixed",
28
29
  get target() {
29
- return f();
30
+ return d();
30
31
  },
31
32
  get middleware() {
32
33
  return [offset({ mainAxis: 4 })];
33
34
  },
34
35
  get children() {
35
- return u.children;
36
+ return l.children;
36
37
  }
37
38
  })
38
39
  });
39
40
  } }));
40
- } }
41
+ } : s }
41
42
  };
42
43
  export { TooltipPlugin };
package/dist/test.d.ts CHANGED
@@ -1,4 +1 @@
1
- import { type JSX } from 'solid-js';
2
- import 'virtual:uno.css';
3
- import './style.scss';
4
- export declare const TestTable: (props: any) => JSX.Element;
1
+ export declare const TestTable: (props: any) => import("solid-js").JSX.Element;
package/dist/test.js CHANGED
@@ -1,5 +1,3 @@
1
- import './style.css';import './__uno.css';/* empty css */
2
- /* empty css */
3
1
  import { createComponent, effect, insert, setAttribute, template } from "solid-js/web";
4
2
  import { For } from "solid-js";
5
3
  var _tmpl$ = /* @__PURE__ */ template("<table><thead><tr></tr></thead><thead>"), _tmpl$2 = /* @__PURE__ */ template("<th>"), _tmpl$3 = /* @__PURE__ */ template("<tr>"), _tmpl$4 = /* @__PURE__ */ template("<td>");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intable",
3
- "version": "0.0.47",
3
+ "version": "0.0.49",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [