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 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** — `![alt](url)` 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, k) => k in vars ? String(vars[k]) : 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 (`![alt](url)` 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 k = keyOf(status);
3179
- const resolvedTone = tone || map && map[k] || STATUS_TONE[k] || "neutral";
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 k = (e) => {
3405
+ const k2 = (e) => {
3305
3406
  if (e.key === "Escape") setSizeOpen(false);
3306
3407
  };
3307
3408
  document.addEventListener("mousedown", h);
3308
- document.addEventListener("keydown", k);
3409
+ document.addEventListener("keydown", k2);
3309
3410
  return () => {
3310
3411
  document.removeEventListener("mousedown", h);
3311
- document.removeEventListener("keydown", k);
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 k = (e) => {
3530
+ const k2 = (e) => {
3430
3531
  if (e.key === "Escape") onClose();
3431
3532
  };
3432
3533
  document.addEventListener("mousedown", close);
3433
- document.addEventListener("keydown", k);
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", k);
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 k = (e) => {
3591
+ const k2 = (e) => {
3491
3592
  if (e.key === "Escape") setOpen(false);
3492
3593
  };
3493
3594
  document.addEventListener("mousedown", h);
3494
- document.addEventListener("keydown", k);
3595
+ document.addEventListener("keydown", k2);
3495
3596
  return () => {
3496
3597
  document.removeEventListener("mousedown", h);
3497
- document.removeEventListener("keydown", k);
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 k = (e) => {
3738
+ const k2 = (e) => {
3638
3739
  if (e.key === "Escape") setOpen(false);
3639
3740
  };
3640
3741
  document.addEventListener("mousedown", h);
3641
- document.addEventListener("keydown", k);
3742
+ document.addEventListener("keydown", k2);
3642
3743
  return () => {
3643
3744
  document.removeEventListener("mousedown", h);
3644
- document.removeEventListener("keydown", k);
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((k) => {
4285
- const col = columns.find((c) => c.key === k);
4286
- const vals = activeFilters[k];
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[k]);
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((k) => k !== key) : [...exp, key]);
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((k) => checkedKeys.includes(k)).length;
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((k) => !all.includes(k));
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 k = (e) => {
5972
+ const k2 = (e) => {
5872
5973
  if (e.key === "Escape") setOpen(false);
5873
5974
  };
5874
5975
  document.addEventListener("mousedown", h);
5875
- document.addEventListener("keydown", k);
5976
+ document.addEventListener("keydown", k2);
5876
5977
  return () => {
5877
5978
  document.removeEventListener("mousedown", h);
5878
- document.removeEventListener("keydown", k);
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 (inline) {
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 (inline) {
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 (inline) {
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 k of toPath(name)) {
7558
+ for (const k2 of toPath(name)) {
7458
7559
  if (cur == null) return void 0;
7459
- cur = cur[k];
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 k = path[i];
7569
+ const k2 = path[i];
7469
7570
  const nextKeyIsIndex = typeof path[i + 1] === "number";
7470
- const existing = cur[k];
7471
- cur[k] = existing == null ? nextKeyIsIndex ? [] : {} : Array.isArray(existing) ? existing.slice() : { ...existing };
7472
- cur = cur[k];
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(([k, v]) => {
7580
- n[pathKey(k)] = v;
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((k) => {
7587
- n[pathKey(k)] = true;
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, [k]) => (a[k] = true, 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 k = keysRef.current;
7876
+ const k2 = keysRef.current;
7776
7877
  const [m] = a.splice(from, 1);
7777
7878
  a.splice(to, 0, m);
7778
- const [mk] = k.splice(from, 1);
7779
- k.splice(to, 0, mk);
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 k = (e) => {
8486
+ const k2 = (e) => {
8386
8487
  if (e.key === "Escape") setOpen(false);
8387
8488
  };
8388
8489
  document.addEventListener("mousedown", h);
8389
- document.addEventListener("keydown", k);
8490
+ document.addEventListener("keydown", k2);
8390
8491
  return () => {
8391
8492
  document.removeEventListener("mousedown", h);
8392
- document.removeEventListener("keydown", k);
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, k) => v === next[k]) ? prev : next
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 = (k) => setOpenKeys((s) => {
9527
+ const toggleOpen = (k2) => setOpenKeys((s) => {
9427
9528
  const n = new Set(s);
9428
- if (n.has(k)) n.delete(k);
9429
- else n.add(k);
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 k = (e) => {
10315
+ const k2 = (e) => {
10215
10316
  if (e.key === "Escape") setOpen(false);
10216
10317
  };
10217
10318
  document.addEventListener("mousedown", h);
10218
- document.addEventListener("keydown", k);
10319
+ document.addEventListener("keydown", k2);
10219
10320
  return () => {
10220
10321
  document.removeEventListener("mousedown", h);
10221
- document.removeEventListener("keydown", k);
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 k = (e) => {
10683
+ const k2 = (e) => {
10583
10684
  if (e.key === "Escape") setOpen(false);
10584
10685
  };
10585
10686
  document.addEventListener("mousedown", h);
10586
- document.addEventListener("keydown", k);
10687
+ document.addEventListener("keydown", k2);
10587
10688
  return () => {
10588
10689
  document.removeEventListener("mousedown", h);
10589
- document.removeEventListener("keydown", k);
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-O2CR4NDQ.js.map
10724
- //# sourceMappingURL=chunk-O2CR4NDQ.js.map
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