klun-ui 0.1.13 → 0.1.15
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/CHANGELOG.md +17 -0
- package/dist/{chunk-O2CR4NDQ.js → chunk-7ZLP6VU5.js} +162 -61
- package/dist/chunk-7ZLP6VU5.js.map +1 -0
- package/dist/{chunk-Y2R5PBYN.cjs → chunk-PAGCE4QH.cjs} +163 -60
- package/dist/chunk-PAGCE4QH.cjs.map +1 -0
- package/dist/index.cjs +157 -149
- package/dist/index.d.cts +16 -1
- package/dist/index.d.ts +16 -1
- package/dist/index.js +1 -1
- package/dist/styles.css +66 -0
- package/dist/templates/index.cjs +89 -89
- package/dist/templates/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-O2CR4NDQ.js.map +0 -1
- package/dist/chunk-Y2R5PBYN.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,23 @@ All notable changes to **klun-ui** are documented here. The format follows
|
|
|
5
5
|
[Semantic Versioning](https://semver.org/) (pre-1.0: minor/patch bumps may carry
|
|
6
6
|
small breaking changes).
|
|
7
7
|
|
|
8
|
+
## [0.1.15] — 2026-06-23
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **`Markdown` now renders images** — `` becomes an `<img class="klun-md-img">`
|
|
12
|
+
(constrained to `max-width: 100%`, rounded, bordered). `url` accepts http(s) and
|
|
13
|
+
`data:` URIs, so pasted/embedded screenshots render inline.
|
|
14
|
+
|
|
15
|
+
## [0.1.14] — 2026-06-23
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **`Markdown` — a dependency-free Markdown → React renderer.** Renders headings,
|
|
19
|
+
`**bold**` / `*italic*` / `~~strike~~` / `` `code` ``, `[links](url)`,
|
|
20
|
+
`> blockquotes`, ordered/unordered lists and ``` fenced code blocks ``` as React
|
|
21
|
+
nodes (never raw HTML, so user text is XSS-safe). Use `<Markdown>{src}</Markdown>`
|
|
22
|
+
(or `source={src}`); the underlying `renderMarkdown(src): ReactNode` function is
|
|
23
|
+
exported too for inline use. Styles are namespaced under `.klun-md`.
|
|
24
|
+
|
|
8
25
|
## [0.1.13] — 2026-06-23
|
|
9
26
|
|
|
10
27
|
### Added
|
|
@@ -164,7 +164,7 @@ var Format = {
|
|
|
164
164
|
|
|
165
165
|
// src/components/config/locales.tsx
|
|
166
166
|
function fmt(template, vars) {
|
|
167
|
-
return template.replace(/\{(\w+)\}/g, (m,
|
|
167
|
+
return template.replace(/\{(\w+)\}/g, (m, k2) => k2 in vars ? String(vars[k2]) : m);
|
|
168
168
|
}
|
|
169
169
|
var enUS = {
|
|
170
170
|
locale: "en-US",
|
|
@@ -2932,6 +2932,107 @@ var ListItem = forwardRef(
|
|
|
2932
2932
|
}
|
|
2933
2933
|
);
|
|
2934
2934
|
ListItem.displayName = "ListItem";
|
|
2935
|
+
var k = 0;
|
|
2936
|
+
function inline(text) {
|
|
2937
|
+
const patterns = [
|
|
2938
|
+
{ re: /`([^`]+)`/, node: (m) => /* @__PURE__ */ jsx("code", { className: "klun-md-code", children: m[1] }, k++) },
|
|
2939
|
+
// image before link (`` starts with `!` + link syntax). url allows
|
|
2940
|
+
// http(s) and data: URIs (base64 has no `)`), so pasted screenshots embed inline.
|
|
2941
|
+
{ re: /!\[([^\]]*)\]\(([^)]+)\)/, node: (m) => /* @__PURE__ */ jsx("img", { className: "klun-md-img", src: m[2], alt: m[1] }, k++) },
|
|
2942
|
+
{ re: /\*\*([^*]+)\*\*/, node: (m) => /* @__PURE__ */ jsx("strong", { children: inline(m[1]) }, k++) },
|
|
2943
|
+
{ re: /~~([^~]+)~~/, node: (m) => /* @__PURE__ */ jsx("del", { children: inline(m[1]) }, k++) },
|
|
2944
|
+
{ re: /\*([^*]+)\*/, node: (m) => /* @__PURE__ */ jsx("em", { children: inline(m[1]) }, k++) },
|
|
2945
|
+
{ re: /<u>([\s\S]*?)<\/u>/, node: (m) => /* @__PURE__ */ jsx("u", { children: inline(m[1]) }, k++) },
|
|
2946
|
+
{
|
|
2947
|
+
re: /\[([^\]]+)\]\(([^)]+)\)/,
|
|
2948
|
+
node: (m) => /* @__PURE__ */ jsx("a", { href: m[2], target: "_blank", rel: "noreferrer", children: m[1] }, k++)
|
|
2949
|
+
}
|
|
2950
|
+
];
|
|
2951
|
+
const out = [];
|
|
2952
|
+
let rest = text;
|
|
2953
|
+
while (rest.length) {
|
|
2954
|
+
let best = null;
|
|
2955
|
+
for (const p of patterns) {
|
|
2956
|
+
const m = p.re.exec(rest);
|
|
2957
|
+
if (m && (best === null || m.index < best.idx)) best = { idx: m.index, len: m[0].length, p, m };
|
|
2958
|
+
}
|
|
2959
|
+
if (!best) {
|
|
2960
|
+
out.push(rest);
|
|
2961
|
+
break;
|
|
2962
|
+
}
|
|
2963
|
+
if (best.idx > 0) out.push(rest.slice(0, best.idx));
|
|
2964
|
+
out.push(best.p.node(best.m));
|
|
2965
|
+
rest = rest.slice(best.idx + best.len);
|
|
2966
|
+
}
|
|
2967
|
+
return out;
|
|
2968
|
+
}
|
|
2969
|
+
var SPECIAL = /^(#{1,6}\s|>\s?|[-*]\s+|\d+\.\s+|```)/;
|
|
2970
|
+
function renderMarkdown(src) {
|
|
2971
|
+
k = 0;
|
|
2972
|
+
const lines = src.replace(/\r\n/g, "\n").split("\n");
|
|
2973
|
+
const blocks = [];
|
|
2974
|
+
let i = 0;
|
|
2975
|
+
while (i < lines.length) {
|
|
2976
|
+
const line = lines[i];
|
|
2977
|
+
if (/^```/.test(line)) {
|
|
2978
|
+
const buf2 = [];
|
|
2979
|
+
i++;
|
|
2980
|
+
while (i < lines.length && !/^```/.test(lines[i])) buf2.push(lines[i++]);
|
|
2981
|
+
i++;
|
|
2982
|
+
blocks.push(
|
|
2983
|
+
/* @__PURE__ */ jsx("pre", { className: "klun-md-pre", children: /* @__PURE__ */ jsx("code", { children: buf2.join("\n") }) }, k++)
|
|
2984
|
+
);
|
|
2985
|
+
continue;
|
|
2986
|
+
}
|
|
2987
|
+
const h = /^(#{1,6})\s+(.*)$/.exec(line);
|
|
2988
|
+
if (h) {
|
|
2989
|
+
const tag = `h${Math.min(h[1].length + 2, 6)}`;
|
|
2990
|
+
blocks.push(createElement(tag, { key: k++, className: "klun-md-h" }, inline(h[2])));
|
|
2991
|
+
i++;
|
|
2992
|
+
continue;
|
|
2993
|
+
}
|
|
2994
|
+
if (/^>\s?/.test(line)) {
|
|
2995
|
+
const buf2 = [];
|
|
2996
|
+
while (i < lines.length && /^>\s?/.test(lines[i])) buf2.push(lines[i++].replace(/^>\s?/, ""));
|
|
2997
|
+
blocks.push(
|
|
2998
|
+
/* @__PURE__ */ jsx("blockquote", { className: "klun-md-quote", children: inline(buf2.join("\n")) }, k++)
|
|
2999
|
+
);
|
|
3000
|
+
continue;
|
|
3001
|
+
}
|
|
3002
|
+
if (/^[-*]\s+/.test(line)) {
|
|
3003
|
+
const items2 = [];
|
|
3004
|
+
while (i < lines.length && /^[-*]\s+/.test(lines[i])) items2.push(lines[i++].replace(/^[-*]\s+/, ""));
|
|
3005
|
+
blocks.push(
|
|
3006
|
+
/* @__PURE__ */ jsx("ul", { className: "klun-md-ul", children: items2.map((it, j) => /* @__PURE__ */ jsx("li", { children: inline(it) }, j)) }, k++)
|
|
3007
|
+
);
|
|
3008
|
+
continue;
|
|
3009
|
+
}
|
|
3010
|
+
if (/^\d+\.\s+/.test(line)) {
|
|
3011
|
+
const items2 = [];
|
|
3012
|
+
while (i < lines.length && /^\d+\.\s+/.test(lines[i])) items2.push(lines[i++].replace(/^\d+\.\s+/, ""));
|
|
3013
|
+
blocks.push(
|
|
3014
|
+
/* @__PURE__ */ jsx("ol", { className: "klun-md-ol", children: items2.map((it, j) => /* @__PURE__ */ jsx("li", { children: inline(it) }, j)) }, k++)
|
|
3015
|
+
);
|
|
3016
|
+
continue;
|
|
3017
|
+
}
|
|
3018
|
+
if (line.trim() === "") {
|
|
3019
|
+
i++;
|
|
3020
|
+
continue;
|
|
3021
|
+
}
|
|
3022
|
+
const buf = [line];
|
|
3023
|
+
i++;
|
|
3024
|
+
while (i < lines.length && lines[i].trim() !== "" && !SPECIAL.test(lines[i])) buf.push(lines[i++]);
|
|
3025
|
+
blocks.push(
|
|
3026
|
+
/* @__PURE__ */ jsx("p", { className: "klun-md-p", children: buf.flatMap((l, j) => j ? [/* @__PURE__ */ jsx("br", {}, `br${j}`), ...inline(l)] : inline(l)) }, k++)
|
|
3027
|
+
);
|
|
3028
|
+
}
|
|
3029
|
+
return /* @__PURE__ */ jsx(Fragment, { children: blocks });
|
|
3030
|
+
}
|
|
3031
|
+
var Markdown = forwardRef(function Markdown2({ children, source, className, ...props }, ref) {
|
|
3032
|
+
const src = source ?? (typeof children === "string" ? children : "") ?? "";
|
|
3033
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cx("klun-md", className), ...props, children: renderMarkdown(src) });
|
|
3034
|
+
});
|
|
3035
|
+
Markdown.displayName = "Markdown";
|
|
2935
3036
|
var Money = forwardRef(function Money2({
|
|
2936
3037
|
value,
|
|
2937
3038
|
cents = false,
|
|
@@ -3175,8 +3276,8 @@ function StatusBadge({
|
|
|
3175
3276
|
className,
|
|
3176
3277
|
...props
|
|
3177
3278
|
}) {
|
|
3178
|
-
const
|
|
3179
|
-
const resolvedTone = tone || map && map[
|
|
3279
|
+
const k2 = keyOf(status);
|
|
3280
|
+
const resolvedTone = tone || map && map[k2] || STATUS_TONE[k2] || "neutral";
|
|
3180
3281
|
const color = TONE_COLOR[resolvedTone] || "gray";
|
|
3181
3282
|
const text = label != null ? label : String(status == null ? "" : status).replace(/[-_]/g, " ");
|
|
3182
3283
|
const display = typeof text === "string" ? text.charAt(0).toUpperCase() + text.slice(1) : text;
|
|
@@ -3301,14 +3402,14 @@ function Pager({
|
|
|
3301
3402
|
const h = (e) => {
|
|
3302
3403
|
if (sizeRef.current && !sizeRef.current.contains(e.target)) setSizeOpen(false);
|
|
3303
3404
|
};
|
|
3304
|
-
const
|
|
3405
|
+
const k2 = (e) => {
|
|
3305
3406
|
if (e.key === "Escape") setSizeOpen(false);
|
|
3306
3407
|
};
|
|
3307
3408
|
document.addEventListener("mousedown", h);
|
|
3308
|
-
document.addEventListener("keydown",
|
|
3409
|
+
document.addEventListener("keydown", k2);
|
|
3309
3410
|
return () => {
|
|
3310
3411
|
document.removeEventListener("mousedown", h);
|
|
3311
|
-
document.removeEventListener("keydown",
|
|
3412
|
+
document.removeEventListener("keydown", k2);
|
|
3312
3413
|
};
|
|
3313
3414
|
}, [sizeOpen]);
|
|
3314
3415
|
const nums = [];
|
|
@@ -3426,16 +3527,16 @@ function ContextMenu({
|
|
|
3426
3527
|
}, [x, y]);
|
|
3427
3528
|
useEffect(() => {
|
|
3428
3529
|
const close = () => onClose();
|
|
3429
|
-
const
|
|
3530
|
+
const k2 = (e) => {
|
|
3430
3531
|
if (e.key === "Escape") onClose();
|
|
3431
3532
|
};
|
|
3432
3533
|
document.addEventListener("mousedown", close);
|
|
3433
|
-
document.addEventListener("keydown",
|
|
3534
|
+
document.addEventListener("keydown", k2);
|
|
3434
3535
|
window.addEventListener("scroll", close, true);
|
|
3435
3536
|
window.addEventListener("resize", close);
|
|
3436
3537
|
return () => {
|
|
3437
3538
|
document.removeEventListener("mousedown", close);
|
|
3438
|
-
document.removeEventListener("keydown",
|
|
3539
|
+
document.removeEventListener("keydown", k2);
|
|
3439
3540
|
window.removeEventListener("scroll", close, true);
|
|
3440
3541
|
window.removeEventListener("resize", close);
|
|
3441
3542
|
};
|
|
@@ -3487,14 +3588,14 @@ function ColumnSettings({
|
|
|
3487
3588
|
const h = (e) => {
|
|
3488
3589
|
if (ref.current && !ref.current.contains(e.target)) setOpen(false);
|
|
3489
3590
|
};
|
|
3490
|
-
const
|
|
3591
|
+
const k2 = (e) => {
|
|
3491
3592
|
if (e.key === "Escape") setOpen(false);
|
|
3492
3593
|
};
|
|
3493
3594
|
document.addEventListener("mousedown", h);
|
|
3494
|
-
document.addEventListener("keydown",
|
|
3595
|
+
document.addEventListener("keydown", k2);
|
|
3495
3596
|
return () => {
|
|
3496
3597
|
document.removeEventListener("mousedown", h);
|
|
3497
|
-
document.removeEventListener("keydown",
|
|
3598
|
+
document.removeEventListener("keydown", k2);
|
|
3498
3599
|
};
|
|
3499
3600
|
}, [open]);
|
|
3500
3601
|
const toggleable = columns.filter((c) => c.header != null && c.header !== "");
|
|
@@ -3634,14 +3735,14 @@ function FilterMenu({
|
|
|
3634
3735
|
const h = (e) => {
|
|
3635
3736
|
if (ref.current && !ref.current.contains(e.target)) setOpen(false);
|
|
3636
3737
|
};
|
|
3637
|
-
const
|
|
3738
|
+
const k2 = (e) => {
|
|
3638
3739
|
if (e.key === "Escape") setOpen(false);
|
|
3639
3740
|
};
|
|
3640
3741
|
document.addEventListener("mousedown", h);
|
|
3641
|
-
document.addEventListener("keydown",
|
|
3742
|
+
document.addEventListener("keydown", k2);
|
|
3642
3743
|
return () => {
|
|
3643
3744
|
document.removeEventListener("mousedown", h);
|
|
3644
|
-
document.removeEventListener("keydown",
|
|
3745
|
+
document.removeEventListener("keydown", k2);
|
|
3645
3746
|
};
|
|
3646
3747
|
}, [open]);
|
|
3647
3748
|
const toggle = (v) => {
|
|
@@ -4281,12 +4382,12 @@ function useTableFilters({
|
|
|
4281
4382
|
const keys = Object.keys(activeFilters);
|
|
4282
4383
|
if (keys.length === 0) return rows;
|
|
4283
4384
|
return rows.filter(
|
|
4284
|
-
(row) => keys.every((
|
|
4285
|
-
const col = columns.find((c) => c.key ===
|
|
4286
|
-
const vals = activeFilters[
|
|
4385
|
+
(row) => keys.every((k2) => {
|
|
4386
|
+
const col = columns.find((c) => c.key === k2);
|
|
4387
|
+
const vals = activeFilters[k2];
|
|
4287
4388
|
if (!vals || vals.length === 0) return true;
|
|
4288
4389
|
if (col && col.onFilter) return vals.some((v) => col.onFilter(v, row));
|
|
4289
|
-
return vals.includes(row[
|
|
4390
|
+
return vals.includes(row[k2]);
|
|
4290
4391
|
})
|
|
4291
4392
|
);
|
|
4292
4393
|
}, [rows, activeFilters, columns, filters]);
|
|
@@ -4885,10 +4986,10 @@ var Tree = forwardRef(function Tree2({
|
|
|
4885
4986
|
};
|
|
4886
4987
|
const rows = [];
|
|
4887
4988
|
flatten(treeData, 0, true, exp, rows);
|
|
4888
|
-
const toggle = (key) => setExp(exp.includes(key) ? exp.filter((
|
|
4989
|
+
const toggle = (key) => setExp(exp.includes(key) ? exp.filter((k2) => k2 !== key) : [...exp, key]);
|
|
4889
4990
|
const checkState = (node) => {
|
|
4890
4991
|
const all = descendantKeys(node, []);
|
|
4891
|
-
const checkedCount = all.filter((
|
|
4992
|
+
const checkedCount = all.filter((k2) => checkedKeys.includes(k2)).length;
|
|
4892
4993
|
if (checkedCount === 0) return "none";
|
|
4893
4994
|
if (checkedCount === all.length) return "all";
|
|
4894
4995
|
return "some";
|
|
@@ -4898,7 +4999,7 @@ var Tree = forwardRef(function Tree2({
|
|
|
4898
4999
|
const all = descendantKeys(node, []);
|
|
4899
5000
|
const state = checkState(node);
|
|
4900
5001
|
let next;
|
|
4901
|
-
if (state === "all") next = checkedKeys.filter((
|
|
5002
|
+
if (state === "all") next = checkedKeys.filter((k2) => !all.includes(k2));
|
|
4902
5003
|
else next = Array.from(/* @__PURE__ */ new Set([...checkedKeys, ...all]));
|
|
4903
5004
|
onCheck(next);
|
|
4904
5005
|
};
|
|
@@ -5868,14 +5969,14 @@ var Cascader = forwardRef(function Cascader2({
|
|
|
5868
5969
|
const h = (e) => {
|
|
5869
5970
|
if (rootRef.current && !rootRef.current.contains(e.target)) setOpen(false);
|
|
5870
5971
|
};
|
|
5871
|
-
const
|
|
5972
|
+
const k2 = (e) => {
|
|
5872
5973
|
if (e.key === "Escape") setOpen(false);
|
|
5873
5974
|
};
|
|
5874
5975
|
document.addEventListener("mousedown", h);
|
|
5875
|
-
document.addEventListener("keydown",
|
|
5976
|
+
document.addEventListener("keydown", k2);
|
|
5876
5977
|
return () => {
|
|
5877
5978
|
document.removeEventListener("mousedown", h);
|
|
5878
|
-
document.removeEventListener("keydown",
|
|
5979
|
+
document.removeEventListener("keydown", k2);
|
|
5879
5980
|
};
|
|
5880
5981
|
}, [open]);
|
|
5881
5982
|
const columns = [];
|
|
@@ -6941,8 +7042,8 @@ var Calendar = forwardRef(function Calendar2({ value, onPick, className, style }
|
|
|
6941
7042
|
] });
|
|
6942
7043
|
});
|
|
6943
7044
|
var DatePicker = forwardRef(
|
|
6944
|
-
function DatePicker2({ value, onChange, inline, placeholder, format = DEFAULT_FORMAT, align = "left", disabled, className, style, ...props }, ref) {
|
|
6945
|
-
if (
|
|
7045
|
+
function DatePicker2({ value, onChange, inline: inline2, placeholder, format = DEFAULT_FORMAT, align = "left", disabled, className, style, ...props }, ref) {
|
|
7046
|
+
if (inline2) {
|
|
6946
7047
|
return /* @__PURE__ */ jsx(Calendar, { ref, value, onPick: (d) => onChange?.(d), className, style });
|
|
6947
7048
|
}
|
|
6948
7049
|
const sel = value ? new Date(value) : null;
|
|
@@ -7207,9 +7308,9 @@ function DateTimePanel({ value, onChange }) {
|
|
|
7207
7308
|
] });
|
|
7208
7309
|
}
|
|
7209
7310
|
var DateTimePicker = forwardRef(
|
|
7210
|
-
function DateTimePicker2({ value, onChange, inline, placeholder, format = DEFAULT_FORMAT2, align = "left", disabled, className, style, ...props }, ref) {
|
|
7311
|
+
function DateTimePicker2({ value, onChange, inline: inline2, placeholder, format = DEFAULT_FORMAT2, align = "left", disabled, className, style, ...props }, ref) {
|
|
7211
7312
|
const date = value ? new Date(value) : null;
|
|
7212
|
-
if (
|
|
7313
|
+
if (inline2) {
|
|
7213
7314
|
return /* @__PURE__ */ jsx("div", { ref, className: cx("klun-date-time-picker", className), style, ...props, children: /* @__PURE__ */ jsx(DateTimePanel, { value: date, onChange: (d) => onChange?.(d) }) });
|
|
7214
7315
|
}
|
|
7215
7316
|
const label = date ? date.toLocaleString(void 0, format) : "";
|
|
@@ -7296,8 +7397,8 @@ var RangeCalendar = forwardRef(function RangeCalendar2({ start, end, onPick, cla
|
|
|
7296
7397
|
] });
|
|
7297
7398
|
});
|
|
7298
7399
|
var DateRangePicker = forwardRef(
|
|
7299
|
-
function DateRangePicker2({ start, end, onChange, inline, placeholder, format = DEFAULT_FORMAT3, align = "left", disabled, className, style, ...props }, ref) {
|
|
7300
|
-
if (
|
|
7400
|
+
function DateRangePicker2({ start, end, onChange, inline: inline2, placeholder, format = DEFAULT_FORMAT3, align = "left", disabled, className, style, ...props }, ref) {
|
|
7401
|
+
if (inline2) {
|
|
7301
7402
|
return /* @__PURE__ */ jsx(
|
|
7302
7403
|
RangeCalendar,
|
|
7303
7404
|
{
|
|
@@ -7454,9 +7555,9 @@ var toPath = (name) => Array.isArray(name) ? name : String(name).split(".").map(
|
|
|
7454
7555
|
var pathKey = (name) => toPath(name).join(".");
|
|
7455
7556
|
function getIn(obj, name) {
|
|
7456
7557
|
let cur = obj;
|
|
7457
|
-
for (const
|
|
7558
|
+
for (const k2 of toPath(name)) {
|
|
7458
7559
|
if (cur == null) return void 0;
|
|
7459
|
-
cur = cur[
|
|
7560
|
+
cur = cur[k2];
|
|
7460
7561
|
}
|
|
7461
7562
|
return cur;
|
|
7462
7563
|
}
|
|
@@ -7465,11 +7566,11 @@ function setIn(obj, name, value) {
|
|
|
7465
7566
|
const root = Array.isArray(obj) ? obj.slice() : { ...obj };
|
|
7466
7567
|
let cur = root;
|
|
7467
7568
|
for (let i = 0; i < path.length - 1; i++) {
|
|
7468
|
-
const
|
|
7569
|
+
const k2 = path[i];
|
|
7469
7570
|
const nextKeyIsIndex = typeof path[i + 1] === "number";
|
|
7470
|
-
const existing = cur[
|
|
7471
|
-
cur[
|
|
7472
|
-
cur = cur[
|
|
7571
|
+
const existing = cur[k2];
|
|
7572
|
+
cur[k2] = existing == null ? nextKeyIsIndex ? [] : {} : Array.isArray(existing) ? existing.slice() : { ...existing };
|
|
7573
|
+
cur = cur[k2];
|
|
7473
7574
|
}
|
|
7474
7575
|
cur[path[path.length - 1]] = value;
|
|
7475
7576
|
return root;
|
|
@@ -7576,15 +7677,15 @@ function useForm(opts = {}) {
|
|
|
7576
7677
|
const setFields = useCallback((map) => {
|
|
7577
7678
|
setErrors((e) => {
|
|
7578
7679
|
const n = { ...e };
|
|
7579
|
-
Object.entries(map).forEach(([
|
|
7580
|
-
n[pathKey(
|
|
7680
|
+
Object.entries(map).forEach(([k2, v]) => {
|
|
7681
|
+
n[pathKey(k2)] = v;
|
|
7581
7682
|
});
|
|
7582
7683
|
return n;
|
|
7583
7684
|
});
|
|
7584
7685
|
setTouched((t) => {
|
|
7585
7686
|
const n = { ...t };
|
|
7586
|
-
Object.keys(map).forEach((
|
|
7587
|
-
n[pathKey(
|
|
7687
|
+
Object.keys(map).forEach((k2) => {
|
|
7688
|
+
n[pathKey(k2)] = true;
|
|
7588
7689
|
});
|
|
7589
7690
|
return n;
|
|
7590
7691
|
});
|
|
@@ -7615,7 +7716,7 @@ function useForm(opts = {}) {
|
|
|
7615
7716
|
}
|
|
7616
7717
|
});
|
|
7617
7718
|
setErrors(errs);
|
|
7618
|
-
setTouched(entries.reduce((a, [
|
|
7719
|
+
setTouched(entries.reduce((a, [k2]) => (a[k2] = true, a), {}));
|
|
7619
7720
|
if (firstBad) scrollToField(firstBad);
|
|
7620
7721
|
return Object.keys(errs).length === 0;
|
|
7621
7722
|
}, [scrollToField]);
|
|
@@ -7772,11 +7873,11 @@ function FormList({ name, children }) {
|
|
|
7772
7873
|
},
|
|
7773
7874
|
move: (from, to) => {
|
|
7774
7875
|
const a = arr.slice();
|
|
7775
|
-
const
|
|
7876
|
+
const k2 = keysRef.current;
|
|
7776
7877
|
const [m] = a.splice(from, 1);
|
|
7777
7878
|
a.splice(to, 0, m);
|
|
7778
|
-
const [mk] =
|
|
7779
|
-
|
|
7879
|
+
const [mk] = k2.splice(from, 1);
|
|
7880
|
+
k2.splice(to, 0, mk);
|
|
7780
7881
|
setArr(a);
|
|
7781
7882
|
}
|
|
7782
7883
|
};
|
|
@@ -8382,14 +8483,14 @@ var SelectMenu = forwardRef(
|
|
|
8382
8483
|
if (rootRef.current && !rootRef.current.contains(e.target))
|
|
8383
8484
|
setOpen(false);
|
|
8384
8485
|
};
|
|
8385
|
-
const
|
|
8486
|
+
const k2 = (e) => {
|
|
8386
8487
|
if (e.key === "Escape") setOpen(false);
|
|
8387
8488
|
};
|
|
8388
8489
|
document.addEventListener("mousedown", h);
|
|
8389
|
-
document.addEventListener("keydown",
|
|
8490
|
+
document.addEventListener("keydown", k2);
|
|
8390
8491
|
return () => {
|
|
8391
8492
|
document.removeEventListener("mousedown", h);
|
|
8392
|
-
document.removeEventListener("keydown",
|
|
8493
|
+
document.removeEventListener("keydown", k2);
|
|
8393
8494
|
};
|
|
8394
8495
|
}, [open]);
|
|
8395
8496
|
const lead = leadingIcon || selected?.icon;
|
|
@@ -8952,7 +9053,7 @@ function Masonry({
|
|
|
8952
9053
|
colHeights[c] += (h > 0 ? h : 1) + gutterV;
|
|
8953
9054
|
}
|
|
8954
9055
|
setPlacement(
|
|
8955
|
-
(prev) => prev.length === next.length && prev.every((v,
|
|
9056
|
+
(prev) => prev.length === next.length && prev.every((v, k2) => v === next[k2]) ? prev : next
|
|
8956
9057
|
);
|
|
8957
9058
|
}, [cols, gutterV]);
|
|
8958
9059
|
useIsomorphicLayoutEffect(() => {
|
|
@@ -9423,10 +9524,10 @@ function containsKey(children, key) {
|
|
|
9423
9524
|
}
|
|
9424
9525
|
var Menu = forwardRef(function Menu2({ items: items2 = [], selectedKey, onSelect, defaultOpenKeys = [], collapsed = false, className, ...props }, ref) {
|
|
9425
9526
|
const [openKeys, setOpenKeys] = useState(() => new Set(defaultOpenKeys));
|
|
9426
|
-
const toggleOpen = (
|
|
9527
|
+
const toggleOpen = (k2) => setOpenKeys((s) => {
|
|
9427
9528
|
const n = new Set(s);
|
|
9428
|
-
if (n.has(
|
|
9429
|
-
else n.add(
|
|
9529
|
+
if (n.has(k2)) n.delete(k2);
|
|
9530
|
+
else n.add(k2);
|
|
9430
9531
|
return n;
|
|
9431
9532
|
});
|
|
9432
9533
|
const Row3 = ({ item, depth }) => {
|
|
@@ -10211,14 +10312,14 @@ var Dropdown = forwardRef(function Dropdown2({ trigger, items: items2 = [], alig
|
|
|
10211
10312
|
const h = (e) => {
|
|
10212
10313
|
if (innerRef.current && !innerRef.current.contains(e.target)) setOpen(false);
|
|
10213
10314
|
};
|
|
10214
|
-
const
|
|
10315
|
+
const k2 = (e) => {
|
|
10215
10316
|
if (e.key === "Escape") setOpen(false);
|
|
10216
10317
|
};
|
|
10217
10318
|
document.addEventListener("mousedown", h);
|
|
10218
|
-
document.addEventListener("keydown",
|
|
10319
|
+
document.addEventListener("keydown", k2);
|
|
10219
10320
|
return () => {
|
|
10220
10321
|
document.removeEventListener("mousedown", h);
|
|
10221
|
-
document.removeEventListener("keydown",
|
|
10322
|
+
document.removeEventListener("keydown", k2);
|
|
10222
10323
|
};
|
|
10223
10324
|
}, [open]);
|
|
10224
10325
|
const setRefs = (node) => {
|
|
@@ -10579,14 +10680,14 @@ var Popconfirm = forwardRef(function Popconfirm2({
|
|
|
10579
10680
|
if (innerRef.current?.contains(t) || bubbleRef.current?.contains(t)) return;
|
|
10580
10681
|
setOpen(false);
|
|
10581
10682
|
};
|
|
10582
|
-
const
|
|
10683
|
+
const k2 = (e) => {
|
|
10583
10684
|
if (e.key === "Escape") setOpen(false);
|
|
10584
10685
|
};
|
|
10585
10686
|
document.addEventListener("mousedown", h);
|
|
10586
|
-
document.addEventListener("keydown",
|
|
10687
|
+
document.addEventListener("keydown", k2);
|
|
10587
10688
|
return () => {
|
|
10588
10689
|
document.removeEventListener("mousedown", h);
|
|
10589
|
-
document.removeEventListener("keydown",
|
|
10690
|
+
document.removeEventListener("keydown", k2);
|
|
10590
10691
|
};
|
|
10591
10692
|
}, [open]);
|
|
10592
10693
|
useLayoutEffect(() => {
|
|
@@ -10719,6 +10820,6 @@ var Popconfirm = forwardRef(function Popconfirm2({
|
|
|
10719
10820
|
});
|
|
10720
10821
|
Popconfirm.displayName = "Popconfirm";
|
|
10721
10822
|
|
|
10722
|
-
export { Accordion, Alert, AutoComplete, Avatar, AvatarGroup, Badge, Banner, Breadcrumb, BulkAction, BulkActionBar, Button, ButtonGroup, Card, Carousel, Cascader, CharacterCounter, ChartLegend, ChartTooltip, Checkbox, CheckboxCard, CheckboxGroup, Chip, CircularProgress, CodeViewer, Col, Collapse, ColorDot, ColorPicker, ColorSlider, CommandMenu, CompactSelect, CompactSelectForInput, ConfigProvider, Confirm, ContentLabel, ContextMenu2 as ContextMenu, CopyButton, CounterInput, DatePicker, DateRangePicker, DateTimePicker, Descriptions, DigitInput, Divider, Drawer, Dropdown, ExpiryCountdown, FileUpload, Flex, Form, FormItem, FormList, Format, GaugeBar, Grid, Hint, HorizontalFilter, ImageUpload, ImageViewer, InlineInput, InlineSelect, Input, Kbd, KeyIcon, Label, Layout, LayoutContent, LayoutFooter, LayoutHeader, LayoutSider, List, ListItem, LiveDot, LogViewer, Masonry, Menu, Message, Modal, Money, Notification, Pagination, PasswordStrength, Popconfirm, Popover, ProgressBar, Radio, RadioCard, RangeSlider, Rating, RelativeTime, RichEditorToolbar, Row, SegmentedControl, SegmentedProgress, Select, SelectMenu, Skeleton, Slider, Space, Spinner2 as Spinner, Splitter2 as Splitter, SplitterPanel, Statistic, StatusBadge, StatusDot, StepIndicator, Switch, Table, Tabs, Tag, Textarea, TimePicker, Timeline, Toast, Toaster, Tooltip, Tree, Wizard, arSA, deDE, enUS, esES, fmt, frFR, idID, itIT, jaJP, koKR, locales, nlNL, plPL, primaryColorVars, ptBR, ruRU, toast, trTR, useBreakpoint, useConfig, useContextMenu, useForm, useLocale, useMappedSize, useMessage, useNotification, useSize, viVN, zhCN, zhTW };
|
|
10723
|
-
//# sourceMappingURL=chunk-
|
|
10724
|
-
//# sourceMappingURL=chunk-
|
|
10823
|
+
export { Accordion, Alert, AutoComplete, Avatar, AvatarGroup, Badge, Banner, Breadcrumb, BulkAction, BulkActionBar, Button, ButtonGroup, Card, Carousel, Cascader, CharacterCounter, ChartLegend, ChartTooltip, Checkbox, CheckboxCard, CheckboxGroup, Chip, CircularProgress, CodeViewer, Col, Collapse, ColorDot, ColorPicker, ColorSlider, CommandMenu, CompactSelect, CompactSelectForInput, ConfigProvider, Confirm, ContentLabel, ContextMenu2 as ContextMenu, CopyButton, CounterInput, DatePicker, DateRangePicker, DateTimePicker, Descriptions, DigitInput, Divider, Drawer, Dropdown, ExpiryCountdown, FileUpload, Flex, Form, FormItem, FormList, Format, GaugeBar, Grid, Hint, HorizontalFilter, ImageUpload, ImageViewer, InlineInput, InlineSelect, Input, Kbd, KeyIcon, Label, Layout, LayoutContent, LayoutFooter, LayoutHeader, LayoutSider, List, ListItem, LiveDot, LogViewer, Markdown, Masonry, Menu, Message, Modal, Money, Notification, Pagination, PasswordStrength, Popconfirm, Popover, ProgressBar, Radio, RadioCard, RangeSlider, Rating, RelativeTime, RichEditorToolbar, Row, SegmentedControl, SegmentedProgress, Select, SelectMenu, Skeleton, Slider, Space, Spinner2 as Spinner, Splitter2 as Splitter, SplitterPanel, Statistic, StatusBadge, StatusDot, StepIndicator, Switch, Table, Tabs, Tag, Textarea, TimePicker, Timeline, Toast, Toaster, Tooltip, Tree, Wizard, arSA, deDE, enUS, esES, fmt, frFR, idID, itIT, jaJP, koKR, locales, nlNL, plPL, primaryColorVars, ptBR, renderMarkdown, ruRU, toast, trTR, useBreakpoint, useConfig, useContextMenu, useForm, useLocale, useMappedSize, useMessage, useNotification, useSize, viVN, zhCN, zhTW };
|
|
10824
|
+
//# sourceMappingURL=chunk-7ZLP6VU5.js.map
|
|
10825
|
+
//# sourceMappingURL=chunk-7ZLP6VU5.js.map
|