intable 0.0.50 → 0.0.51

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.
@@ -8,111 +8,111 @@ import { createEffect, createMemo, createRoot, createSignal, on, onCleanup, useC
8
8
  import { createMutable } from "solid-js/store";
9
9
  import { createAsyncMemo } from "@solid-primitives/memo";
10
10
  import { delay } from "es-toolkit";
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>");
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>"), _tmpl$7 = /* @__PURE__ */ template("<option value>-"), _tmpl$8 = /* @__PURE__ */ template("<option>");
12
12
  const EditablePlugin = {
13
13
  name: "editable",
14
14
  store: () => ({ editors: { ...editors } }),
15
15
  rewriteProps: {
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];
16
+ editable: ({ editable: e }, { store: h }) => (_) => {
17
+ let v = [_.col.editable, e].filter((e) => e != null);
18
+ return !!v.length && v.every((e) => unFn(e, _)) && !_.data[h.internal] && !_.col[h.internal];
19
19
  },
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,
20
+ Td: ({ Td: e }, { store: h }) => (v) => {
21
+ let y, { props: b } = useContext(Ctx), [w, T] = createSignal(!1), D = "", O = () => unFn(b.editable, v), A = () => (([e, h]) => v.x == e && v.y == h)(h.selected.start || []), j = () => A() && O() && !w(), [M, N] = createSignal(!1), P = createAsyncMemo(() => {
22
+ if (w()) {
23
+ let e = createMemo(() => JSON.stringify(h.selected ?? "{}"));
24
+ createEffect(on(e, () => T(!1), { defer: !0 })), L.w = y.getBoundingClientRect().width, L.h = y.getBoundingClientRect().height;
25
+ let g = !1, _ = v.data[v.col.id], x = ((e) => typeof e == "string" ? h.editors[e] : e)(v.col.editor ?? v.col.type ?? (v.col.enum ? "select" : "text")), S = {
26
+ props: v.col.editorProps,
27
+ col: v.col,
28
+ eventKey: D,
29
+ data: v.data,
30
+ value: _,
31
31
  ok: async () => {
32
- await P(S.getValue()), w(!1);
32
+ await F(C.getValue()), T(!1);
33
33
  },
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];
34
+ cancel: () => (g = !0, T(!1)),
35
+ onChange: (e) => w() && F(e).catch(() => {})
36
+ }, C = x(S);
37
+ return queueMicrotask(() => C.focus?.()), onCleanup(() => {
38
+ !g && C.getValue() !== _ && h.commands.rowChange({
39
+ ...b.data[v.y],
40
+ [v.col.id]: C.getValue()
41
+ }), g || F(C.getValue()).catch(() => {}), D = "", C.destroy();
42
+ }), [S, C];
43
43
  }
44
44
  });
45
- async function P(e) {
45
+ async function F(e) {
46
46
  try {
47
- M(!0), await m.validateCell(e, _.data, _.col);
47
+ N(!0), await h.validateCell(e, v.data, v.col);
48
48
  } finally {
49
- M(!1);
49
+ N(!1);
50
50
  }
51
51
  }
52
- let F, I = createMutable({
52
+ let I, L = createMutable({
53
53
  w: 0,
54
54
  h: 0
55
- }), L = mergeProps$2(_, {
56
- ref: (e) => (v = e, _.ref?.(e)),
55
+ }), R = mergeProps$2(v, {
56
+ ref: (e) => (y = e, v.ref?.(e)),
57
57
  get class() {
58
- return [C() ? "is-editing" : "", _.class].filter(Boolean).join(" ");
58
+ return [w() ? "is-editing" : "", v.class].filter(Boolean).join(" ");
59
59
  },
60
60
  get style() {
61
- return [C() ? `width: ${I.w}px; height: ${I.h}px; padding: 0; ` : "", _.style].filter(Boolean).join(" ");
61
+ return [w() ? `width: ${L.w}px; height: ${L.h}px; padding: 0; ` : "", v.style].filter(Boolean).join(" ");
62
62
  },
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))
63
+ onClick: (e) => (I?.focus?.(), v.onClick?.(e)),
64
+ onDblClick: (e) => (T(O()), v.onDblClick?.(e)),
65
+ onKeyDown: (e) => (e.key == "Escape" && P()?.[0].cancel(), v.onKeyDown?.(e))
66
66
  });
67
- return createComponent(e, mergeProps$2(L, { get children() {
68
- return [memo(() => memo(() => !!N()?.[1]?.el)() ? (() => {
67
+ return createComponent(e, mergeProps$2(R, { get children() {
68
+ return [memo(() => memo(() => !!P()?.[1]?.el)() ? (() => {
69
69
  var e = _tmpl$();
70
70
  return addEventListener(e, "keydown", (e) => {
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());
71
+ e.stopPropagation(), e.key == "Enter" && !e.shiftKey && (P()?.[0].ok(), e.preventDefault()), e.key == "Escape" && P()?.[0].cancel();
72
+ }), addEventListener(e, "pointerdown", (e) => e.stopPropagation()), insert(e, () => P()?.[1]?.el, null), insert(e, (() => {
73
+ var e = memo(() => !!M());
74
74
  return () => e() && _tmpl$2();
75
75
  })(), null), e;
76
- })() : _.children), memo(() => memo(() => !!A())() && (() => {
76
+ })() : v.children), memo(() => memo(() => !!j())() && (() => {
77
77
  var e = _tmpl$3();
78
78
  return e.addEventListener("compositionend", () => {
79
- w(!0);
79
+ T(!0);
80
80
  }), e.$$input = (e) => {
81
- E = e.target.value, w(!e.isComposing);
81
+ D = e.target.value, T(!e.isComposing);
82
82
  }, e.$$keydown = (e) => {
83
83
  e.key == " " && e.preventDefault();
84
84
  }, use((e) => {
85
- F = e, delay(0).then(() => e.focus({ preventScroll: !0 }));
85
+ I = e, delay(0).then(() => e.focus({ preventScroll: !0 }));
86
86
  }, e), e;
87
87
  })())];
88
88
  } }));
89
89
  }
90
90
  }
91
91
  };
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;
92
+ var createEditor = (e, g, v) => ({ eventKey: y, value: b, col: x, ok: S, cancel: w, props: T, onChange: E }) => createRoot((w) => {
93
+ let [D, O] = createSignal(y || b), k;
94
94
  return createComponent(e, mergeProps$2({
95
- ref: (e) => O = e,
95
+ ref: (e) => k = e,
96
96
  class: "relative block px-2 size-full z-9 box-border resize-none outline-0",
97
97
  get value() {
98
- return E();
98
+ return D();
99
99
  },
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()),
100
+ onInput: (e) => (O(e instanceof Event ? e.target.value : e), E?.(D())),
101
+ onChange: (e) => (O(e instanceof Event ? e.target.value : e), E?.(D()), v && S()),
102
102
  get options() {
103
- return memo(() => !!b.enum)() ? resolveOptions(b.enum ?? []) : void 0;
103
+ return memo(() => !!x.enum)() ? resolveOptions(x.enum ?? []) : void 0;
104
104
  }
105
- }, h, w)), setTimeout(() => {
106
- _ && O?.showPicker?.();
105
+ }, g, T)), setTimeout(() => {
106
+ v && k?.showPicker?.();
107
107
  }, 0), {
108
- el: O,
109
- getValue: E,
110
- focus: () => O.focus(),
111
- destroy: C
108
+ el: k,
109
+ getValue: D,
110
+ focus: () => k.focus(),
111
+ destroy: w
112
112
  };
113
113
  }), Input = (e) => (() => {
114
- var m = _tmpl$4();
115
- return spread(m, e, !1, !1), m;
114
+ var h = _tmpl$4();
115
+ return spread(h, e, !1, !1), h;
116
116
  })();
117
117
  const editors = {
118
118
  text: createEditor(Input),
@@ -130,27 +130,30 @@ const editors = {
130
130
  color: createEditor(Input, { type: "color" }),
131
131
  tel: createEditor(Input, { type: "tel" }),
132
132
  password: createEditor(Input, { type: "password" }),
133
- file: createEditor((m) => createComponent(Files, mergeProps$2(m, {
133
+ file: createEditor((h) => createComponent(Files, mergeProps$2(h, {
134
134
  class: "relative z-9 outline-2 outline-blue min-h-a! h-a! p-1 bg-#fff",
135
- onAdd: () => chooseFile({ multiple: !0 }).then((e) => m.onChange([...m.value || [], ...e.map((e) => ({
135
+ onAdd: () => chooseFile({ multiple: !0 }).then((e) => h.onChange([...h.value || [], ...e.map((e) => ({
136
136
  name: e.name,
137
137
  size: e.size
138
138
  }))]))
139
139
  }))),
140
140
  checkbox: createEditor((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, {
141
+ var h = _tmpl$5(), g = e.ref;
142
+ return typeof g == "function" ? use(g, h) : e.ref = h, insert(h, createComponent(Checkbox, mergeProps$2(e, {
143
143
  ref: () => {},
144
144
  onInput: () => {},
145
145
  class: "mx-3!"
146
- }))), m;
146
+ }))), h;
147
147
  })()),
148
148
  select: createEditor((e) => (() => {
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;
149
+ var h = _tmpl$6();
150
+ return spread(h, e, !1, !0), insert(h, (() => {
151
+ var h = memo(() => !e.multiple);
152
+ return () => h() && _tmpl$7();
153
+ })(), null), insert(h, () => e.options?.map((h) => (() => {
154
+ var g = _tmpl$8();
155
+ return insert(g, () => h.label), effect(() => g.selected = h.value === e.value), effect(() => g.value = h.value), g;
156
+ })()), null), h;
154
157
  })(), {}, !0)
155
158
  };
156
159
  delegateEvents(["keydown", "input"]);
@@ -3,3 +3,4 @@ export declare const Files: import("solid-js").Component<Record<string, any>>;
3
3
  export declare const Tags: import("solid-js").Component<Record<string, any>>;
4
4
  export declare const Tag: import("solid-js").Component<Record<string, any>>;
5
5
  export declare const evaluateFormula: (formula: string, data: any) => any;
6
+ export declare const text2colorMap: Record<string, string>;
@@ -5,83 +5,163 @@ import { For, splitProps } from "solid-js";
5
5
  import { combineProps } from "@solid-primitives/props";
6
6
  var _tmpl$ = /* @__PURE__ */ template("<input type=checkbox>"), _tmpl$2 = /* @__PURE__ */ template("<div>");
7
7
  const Checkbox = (e) => {
8
- let f;
9
- return [e, f] = splitProps(e, ["value", "onChange"]), f = combineProps({ get class() {
8
+ let m;
9
+ return [e, m] = splitProps(e, ["value", "onChange"]), m = combineProps({ get class() {
10
10
  return `you-checkbox ${e.value && "checked"}`;
11
- } }, f), (() => {
12
- var p = _tmpl$();
13
- return p.addEventListener("change", (f) => e.onChange?.(f.currentTarget.checked)), spread(p, mergeProps({ get checked() {
11
+ } }, m), (() => {
12
+ var h = _tmpl$();
13
+ return h.addEventListener("change", (m) => e.onChange?.(m.currentTarget.checked)), spread(h, mergeProps({ get checked() {
14
14
  return e.value || !1;
15
- } }, f), !1, !1), p;
15
+ } }, m), !1, !1), h;
16
16
  })();
17
17
  }, Files = (e) => {
18
- let f;
19
- return [e, f] = splitProps(e, []), createComponent(Tags, f);
20
- }, Tags = (f) => {
21
- let h;
22
- [f, h] = splitProps(f, [
18
+ let m;
19
+ return [e, m] = splitProps(e, []), createComponent(Tags, mergeProps(m, { color: "" }));
20
+ }, Tags = (m) => {
21
+ let _;
22
+ [m, _] = splitProps(m, [
23
23
  "value",
24
24
  "children",
25
25
  "disabled",
26
26
  "onChange",
27
- "onAdd"
28
- ]), h = combineProps({ class: "flex flex-wrap items-center gap-2 h-full" }, h);
29
- let g = (e) => Array.isArray(e) ? e : e == null ? [] : [e];
27
+ "onAdd",
28
+ "color"
29
+ ]), _ = combineProps({ class: "flex flex-wrap items-center gap-2 h-full" }, _);
30
+ let v = (e) => Array.isArray(e) ? e : e == null ? [] : [e];
30
31
  return (() => {
31
- var _ = _tmpl$2();
32
- return spread(_, h, !1, !0), insert(_, createComponent(For, {
32
+ var y = _tmpl$2();
33
+ return spread(y, _, !1, !0), insert(y, createComponent(For, {
33
34
  get each() {
34
- return g(f.value);
35
+ return v(m.value);
35
36
  },
36
37
  children: (e) => createComponent(Tag, {
37
- get style() {
38
- return `background: ${e.color}`;
39
- },
40
38
  get disabled() {
41
- return f.disabled;
39
+ return m.disabled;
40
+ },
41
+ get value() {
42
+ return e?.text ?? e?.label ?? e?.name ?? e;
43
+ },
44
+ get color() {
45
+ return m.color ?? e?.color;
42
46
  },
43
- onDel: () => f.onChange(g(f.value).filter((f) => f != e)),
47
+ onDel: () => m.onChange(v(m.value).filter((m) => m != e)),
44
48
  get children() {
45
- return memo(() => !!f.children)() ? f.children(e) : e?.text ?? e?.label ?? e?.name ?? e;
49
+ return memo(() => !!m.children)() ? m.children(e) : e?.text ?? e?.label ?? e?.name ?? e;
46
50
  }
47
51
  })
48
- }), null), insert(_, (() => {
49
- var m = memo(() => !f.disabled);
50
- return () => m() && createComponent(Tag, {
52
+ }), null), insert(y, (() => {
53
+ var g = memo(() => !m.disabled);
54
+ return () => g() && createComponent(Tag, {
51
55
  disabled: !0,
52
56
  get onClick() {
53
- return f.onAdd;
57
+ return m.onAdd;
54
58
  },
55
59
  get children() {
56
60
  return createComponent(plus_default, {});
57
61
  }
58
62
  });
59
- })(), null), _;
63
+ })(), null), y;
60
64
  })();
61
65
  }, Tag = (e) => {
62
- let h;
63
- return [e, h] = splitProps(e, [
66
+ let _;
67
+ [e, _] = splitProps(e, [
64
68
  "disabled",
69
+ "value",
65
70
  "children",
71
+ "color",
66
72
  "onDel"
67
- ]), h = combineProps({ class: "flex items-center px-2 py-1 rd-sm bg-gray/20 text-3.5 lh-[1]" }, h), (() => {
68
- var g = _tmpl$2();
69
- return spread(g, h, !1, !0), insert(g, () => e.children, null), insert(g, (() => {
70
- var m = memo(() => !e.disabled);
71
- return () => m() && createComponent(x_default, {
73
+ ]);
74
+ let v = e.color === void 0 && e.value != null ? stringToColor(String(e.value)) : e.color;
75
+ return _ = combineProps({
76
+ get class() {
77
+ return `flex items-center px-2 py-1 rd-sm text-3.5 lh-[1] ${v ? "" : "bg-gray/20"}`;
78
+ },
79
+ get style() {
80
+ return v ? `background: ${v}` : void 0;
81
+ }
82
+ }, _), (() => {
83
+ var v = _tmpl$2();
84
+ return spread(v, _, !1, !0), insert(v, () => e.children, null), insert(v, (() => {
85
+ var g = memo(() => !e.disabled);
86
+ return () => g() && createComponent(x_default, {
72
87
  class: "icon-clickable flex-shrink-0 size-4! ml-1 mr--1 op-75",
73
88
  get onClick() {
74
89
  return e.onDel;
75
90
  }
76
91
  });
77
- })(), null), g;
92
+ })(), null), v;
78
93
  })();
79
- }, evaluateFormula = (e, f) => {
94
+ }, evaluateFormula = (e, m) => {
80
95
  try {
81
- let p = { data: f };
82
- return Function(...Object.keys(p), "return " + e)(...Object.values(p));
96
+ let h = { data: m };
97
+ return Function(...Object.keys(h), "return " + e)(...Object.values(h));
83
98
  } catch {
84
99
  return "公式错误";
85
100
  }
101
+ }, text2colorMap = {
102
+ 启用: "#10b981",
103
+ 完成: "#10b981",
104
+ 成功: "#10b981",
105
+ success: "#10b981",
106
+ done: "#10b981",
107
+ completed: "#10b981",
108
+ 错误: "#ef4444",
109
+ 失败: "#ef4444",
110
+ 异常: "#ef4444",
111
+ error: "#ef4444",
112
+ fail: "#ef4444",
113
+ failed: "#ef4444",
114
+ 警告: "#f59e0b",
115
+ warning: "#f59e0b",
116
+ warn: "#f59e0b",
117
+ 进行中: "#3b82f6",
118
+ 处理中: "#3b82f6",
119
+ 执行中: "#3b82f6",
120
+ pending: "#3b82f6",
121
+ processing: "#3b82f6",
122
+ running: "#3b82f6",
123
+ in_progress: "#3b82f6",
124
+ info: "#6366f1",
125
+ 暂停: "#f59e0b",
126
+ 已暂停: "#f59e0b",
127
+ paused: "#f59e0b",
128
+ 禁用: "#d1d5db",
129
+ 已禁用: "#d1d5db",
130
+ 取消: "#d1d5db",
131
+ 已取消: "#d1d5db",
132
+ 关闭: "#d1d5db",
133
+ 已关闭: "#d1d5db",
134
+ disabled: "#d1d5db",
135
+ cancelled: "#d1d5db",
136
+ canceled: "#d1d5db",
137
+ closed: "#d1d5db",
138
+ 草稿: "#9ca3af",
139
+ 未开始: "#9ca3af",
140
+ 未启用: "#9ca3af",
141
+ draft: "#9ca3af",
142
+ inactive: "#9ca3af",
143
+ 审核中: "#8b5cf6",
144
+ 审批中: "#8b5cf6",
145
+ 待审批: "#8b5cf6",
146
+ review: "#8b5cf6",
147
+ 已发布: "#10b981",
148
+ 已上线: "#10b981",
149
+ published: "#10b981",
150
+ online: "#10b981",
151
+ active: "#10b981",
152
+ 过期: "#d1d5db",
153
+ 已过期: "#d1d5db",
154
+ 超时: "#ef4444",
155
+ expired: "#d1d5db",
156
+ timeout: "#ef4444",
157
+ 归档: "#9ca3af",
158
+ 已归档: "#9ca3af",
159
+ archived: "#9ca3af"
160
+ };
161
+ var stringToColor = (e) => {
162
+ if (text2colorMap[e]) return text2colorMap[e];
163
+ let m = 0;
164
+ for (let h = 0; h < e.length; h++) m = (m << 5) - m + e.charCodeAt(h) | 0;
165
+ return `hsl(${Math.abs(m * 137) % 360} 60% 88% / 0.75)`;
86
166
  };
87
- export { Checkbox, Files, Tag, Tags, evaluateFormula };
167
+ export { Checkbox, Files, Tag, Tags, evaluateFormula, text2colorMap };
@@ -20,6 +20,7 @@ declare module '../../index' {
20
20
  }
21
21
  export type Render = (props: TDProps) => JSX.Element | any;
22
22
  export declare const RenderPlugin: Plugin;
23
+ export { text2colorMap } from './components';
23
24
  export declare const renders: {
24
25
  text: Render;
25
26
  number: Render;
@@ -1,7 +1,7 @@
1
1
  import { renderComponent, solidComponent } from "../../components/utils.js";
2
- import { resolveOptions, toArr } from "../../utils.js";
2
+ import { getOpt, toArr } from "../../utils.js";
3
3
  import { mergeProps as mergeProps$2 } from "../../mergeProps2.js";
4
- import { Checkbox, Files } from "./components.js";
4
+ import { Checkbox, Files, Tags, text2colorMap } from "./components.js";
5
5
  import { createComponent, insert, template } from "solid-js/web";
6
6
  import { createMemo } from "solid-js";
7
7
  var _tmpl$ = /* @__PURE__ */ template("<div class=\"flex items-center h-full\">");
@@ -9,21 +9,26 @@ const RenderPlugin = {
9
9
  name: "render",
10
10
  priority: -Infinity,
11
11
  store: () => ({ renders: { ...renders } }),
12
- rewriteProps: { Td: ({ Td: f }, { store: p }) => (m) => (p.props.cpu && (m = mergeProps$2(() => ({}), m)), createComponent(f, mergeProps$2(m, { get children() {
12
+ rewriteProps: { Td: ({ Td: m }, { store: h }) => (g) => (h.props.cpu && (g = mergeProps$2(() => ({}), g)), createComponent(m, mergeProps$2(g, { get children() {
13
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);
14
+ let m = ((e) => typeof e == "string" ? h.renders[e] : e)(g.col.render ?? g.col.type ?? text);
15
+ return m == text ? text(g) : renderComponent(m, g, h);
16
16
  });
17
17
  } }))) }
18
18
  };
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;
19
+ var text = (e) => e.col.enum ? createComponent(Tags, {
20
+ disabled: !0,
21
+ get value() {
22
+ return toArr(e.value).map((m) => getOpt(e.col.enum, m)?.label ?? m);
23
+ }
24
+ }) : e.value;
20
25
  const renders = {
21
26
  text,
22
27
  number: text,
23
28
  date: text,
24
29
  checkbox: (e) => (() => {
25
- var f = _tmpl$();
26
- return insert(f, createComponent(Checkbox, {
30
+ var m = _tmpl$();
31
+ return insert(m, createComponent(Checkbox, {
27
32
  class: "",
28
33
  get value() {
29
34
  return e.value;
@@ -31,7 +36,7 @@ const renders = {
31
36
  get onChange() {
32
37
  return e.onChange;
33
38
  }
34
- })), f;
39
+ })), m;
35
40
  })(),
36
41
  file: (e) => createComponent(Files, {
37
42
  get value() {
@@ -44,4 +49,4 @@ const renders = {
44
49
  })
45
50
  };
46
51
  for (let e in renders) renders[e] = solidComponent(renders[e]);
47
- export { RenderPlugin, renders };
52
+ export { RenderPlugin, renders, text2colorMap };
package/dist/utils.d.ts CHANGED
@@ -30,5 +30,6 @@ export declare function resolveOptions(opts: Fnable<Awatable<Record<string, any>
30
30
  label: any;
31
31
  value: any;
32
32
  }[];
33
+ export declare const getOpt: (opts: any, value: any) => any;
33
34
  export declare function throttlePromise(of: any): () => Promise<unknown>;
34
35
  export declare function change2(o1: any, o2: any): any;
package/dist/utils.js CHANGED
@@ -1,64 +1,68 @@
1
1
  import { useMemoAsync } from "./hooks/index.js";
2
2
  import { tree_exports } from "./tree.js";
3
- import { delay, isFunction, isPlainObject, isPromise } from "es-toolkit";
3
+ import { delay, isFunction, isPlainObject, isPromise, keyBy } from "es-toolkit";
4
4
  function file2base64(e) {
5
- return new Promise((S, C) => {
6
- let w = new FileReader();
7
- w.readAsDataURL(e), w.onload = () => S(w.result);
5
+ return new Promise((T, E) => {
6
+ let D = new FileReader();
7
+ D.readAsDataURL(e), D.onload = () => T(D.result);
8
8
  });
9
9
  }
10
10
  function chooseFile(e) {
11
- return new Promise((S, C) => {
12
- let w = document.createElement("input");
13
- w.type = "file", w.accept = e?.accept, w.multiple = e?.multiple, w.onchange = () => {
14
- w.files && w.files.length > 0 && S(w.multiple ? [...w.files] : w.files[0]);
15
- }, w.oncancel = C, w.click();
11
+ return new Promise((T, E) => {
12
+ let D = document.createElement("input");
13
+ D.type = "file", D.accept = e?.accept, D.multiple = e?.multiple, D.onchange = () => {
14
+ D.files && D.files.length > 0 && T(D.multiple ? [...D.files] : D.files[0]);
15
+ }, D.oncancel = E, D.click();
16
16
  });
17
17
  }
18
18
  function chooseImage() {
19
19
  return chooseFile({ accept: "image/*" });
20
20
  }
21
21
  async function print(e) {
22
- let S = document.createElement("iframe");
23
- S.srcdoc = `${[...document.querySelectorAll("style"), ...document.querySelectorAll("link[rel=\"stylesheet\"]")].map((e) => e.outerHTML).join("\n")}\n\n${e}`, Object.assign(S.style, {
22
+ let T = document.createElement("iframe");
23
+ T.srcdoc = `${[...document.querySelectorAll("style"), ...document.querySelectorAll("link[rel=\"stylesheet\"]")].map((e) => e.outerHTML).join("\n")}\n\n${e}`, Object.assign(T.style, {
24
24
  position: "fixed",
25
25
  display: "none"
26
- }), document.body.append(S), await new Promise((e) => S.contentWindow.addEventListener("load", e, { once: !0 })), await delay(300), S.contentWindow.print(), S.remove();
26
+ }), document.body.append(T), await new Promise((e) => T.contentWindow.addEventListener("load", e, { once: !0 })), await delay(300), T.contentWindow.print(), T.remove();
27
27
  }
28
- function mergeRect(e, S) {
28
+ function mergeRect(e, T) {
29
29
  return DOMRect.fromRect({
30
- x: Math.min(e.x, S.x),
31
- y: Math.min(e.y, S.y),
32
- width: Math.max(e.right, S.right) - Math.min(e.x, S.x),
33
- height: Math.max(e.bottom, S.bottom) - Math.min(e.y, S.y)
30
+ x: Math.min(e.x, T.x),
31
+ y: Math.min(e.y, T.y),
32
+ width: Math.max(e.right, T.right) - Math.min(e.x, T.x),
33
+ height: Math.max(e.bottom, T.bottom) - Math.min(e.y, T.y)
34
34
  });
35
35
  }
36
36
  function getStyles(e = document) {
37
37
  return [...e.querySelectorAll("style"), ...e.querySelectorAll("link[rel=\"stylesheet\"]")].map((e) => e.outerHTML).join("\n");
38
38
  }
39
- const unFn = (e, ...S) => typeof e == "function" ? e(...S) : e, log = (...e) => (console.log(...e), e[0]), toArr = (e) => Array.isArray(e) ? e : e == null ? [] : [e], isEmpty = (e) => e == null || e === "" || Array.isArray(e) && e.length === 0 || typeof e == "object" && Object.keys(e).length === 0, parseStyle = (e) => e ? e.split(";").reduce((e, S) => ((([S, C]) => e[S.trim()] = C.trim())(S.split(":")), e), {}) : {};
40
- function findret(e, S) {
41
- for (let C = 0; C < e.length; C++) {
42
- let w = S(e[C], C);
43
- if (w != null) return w;
39
+ const unFn = (e, ...T) => typeof e == "function" ? e(...T) : e, log = (...e) => (console.log(...e), e[0]), toArr = (e) => Array.isArray(e) ? e : e == null ? [] : [e], isEmpty = (e) => e == null || e === "" || Array.isArray(e) && e.length === 0 || typeof e == "object" && Object.keys(e).length === 0, parseStyle = (e) => e ? e.split(";").reduce((e, T) => ((([T, E]) => e[T.trim()] = E.trim())(T.split(":")), e), {}) : {};
40
+ function findret(e, T) {
41
+ for (let E = 0; E < e.length; E++) {
42
+ let D = T(e[E], E);
43
+ if (D != null) return D;
44
44
  }
45
45
  }
46
46
  function emptyObject(e) {
47
- for (let S of Object.keys(e)) delete e[S];
47
+ for (let T of Object.keys(e)) delete e[T];
48
48
  return e;
49
49
  }
50
- async function findAsync(e, S) {
51
- for (let C = 0; C < e.length; C++) if (await S(e[C], C)) return e[C];
50
+ async function findAsync(e, T) {
51
+ for (let E = 0; E < e.length; E++) if (await T(e[E], E)) return e[E];
52
52
  }
53
- var cache = /* @__PURE__ */ new WeakMap();
54
- function resolveOptions(S) {
55
- let C = S;
56
- return isFunction(C) && (C = C()), isPromise(C) ? (cache.has(C) || cache.set(C, useMemoAsync(() => C.then((e) => e.map((e) => resolveOptions(e))))), cache.get(C)()) : (isPlainObject(C) && (C = Object.entries(C).map(([e, S]) => ({
53
+ var cache = /* @__PURE__ */ new WeakMap(), cache2 = /* @__PURE__ */ new WeakMap();
54
+ function resolveOptions(T) {
55
+ let E = T;
56
+ return isFunction(E) && (E = E()), isPromise(E) ? (cache.has(T) || cache.set(T, useMemoAsync(() => E.then((e) => e.map((e) => resolveOptions(e))))), cache.get(T)()) : cache2.has(T) ? cache2.get(T) : (isPlainObject(E) && (E = Object.entries(E).map(([e, T]) => ({
57
57
  value: e,
58
- label: S,
59
- ...S
60
- }))), C?.map((e) => resolveOpt(e)) || []);
58
+ label: T,
59
+ ...T
60
+ }))), E = E?.map((e) => resolveOpt(e)) || [], cache2.set(T, E), E);
61
61
  }
62
+ const getOpt = (() => {
63
+ let e = /* @__PURE__ */ new WeakMap();
64
+ return (T, E) => (e.get(T) ?? e.set(T, keyBy(resolveOptions(T), (e) => e.value)).get(T))[E];
65
+ })();
62
66
  function resolveOpt(e) {
63
67
  return isPlainObject(e) ? e : Array.isArray(e) ? {
64
68
  label: e[0],
@@ -69,18 +73,18 @@ function resolveOpt(e) {
69
73
  };
70
74
  }
71
75
  function throttlePromise(e) {
72
- let S = !1, C;
76
+ let T = !1, E;
73
77
  return () => {
74
- let w = new Promise(function(e) {
75
- C = e;
78
+ let D = new Promise(function(e) {
79
+ E = e;
76
80
  });
77
- return S ? w : (S = !0, e(() => {
78
- C(), S = !1, C = null;
79
- }), w);
81
+ return T ? D : (T = !0, e(() => {
82
+ E(), T = !1, E = null;
83
+ }), D);
80
84
  };
81
85
  }
82
- function change2(e, S) {
83
- for (let C in e) C in S || delete e[C];
84
- return Object.assign(e, S), e;
86
+ function change2(e, T) {
87
+ for (let E in e) E in T || delete e[E];
88
+ return Object.assign(e, T), e;
85
89
  }
86
- export { change2, chooseFile, chooseImage, emptyObject, file2base64, findAsync, findret, getStyles, isEmpty, log, mergeRect, parseStyle, print, resolveOptions, throttlePromise, toArr, tree_exports as tree, unFn };
90
+ export { change2, chooseFile, chooseImage, emptyObject, file2base64, findAsync, findret, getOpt, getStyles, isEmpty, log, mergeRect, parseStyle, print, resolveOptions, throttlePromise, toArr, tree_exports as tree, unFn };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intable",
3
- "version": "0.0.50",
3
+ "version": "0.0.51",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [