@marimo-team/islands 0.16.4 → 0.16.5

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.
Files changed (65) hide show
  1. package/dist/{ConnectedDataExplorerComponent-CCjhPKMy.js → ConnectedDataExplorerComponent-D96i9G-X.js} +3 -3
  2. package/dist/assets/__vite-browser-external-Dv_SHu1h.js +1 -0
  3. package/dist/assets/{worker-DnuXpGWN.js → worker-DVOR9oZG.js} +2 -2
  4. package/dist/{formats-D5C6JAJf.js → formats-ChrNdVdJ.js} +1 -1
  5. package/dist/{glide-data-editor-CYfKmSNp.js → glide-data-editor-D_kEsT07.js} +68 -68
  6. package/dist/main.js +84 -213
  7. package/dist/{mermaid-BlJDcO4M.js → mermaid-MWiyXDcI.js} +2 -2
  8. package/dist/style.css +1 -1
  9. package/dist/{types-Dcb1hf55.js → types-1X1uZB4y.js} +323 -179
  10. package/dist/{useAsyncData-DAtPzJzP.js → useAsyncData-C4IqQK0g.js} +1 -1
  11. package/dist/{useDateFormatter-CiUlIu7v.js → useDateFormatter-BCsBqetx.js} +1 -1
  12. package/dist/{useTheme-CmsvrO5o.js → useTheme-C2pgJzDH.js} +1 -0
  13. package/dist/{vega-component-B3LA6qbm.js → vega-component-Cv4J8CHz.js} +3 -3
  14. package/package.json +1 -1
  15. package/src/__tests__/chat-history.test.ts +123 -0
  16. package/src/components/app-config/ai-config.tsx +23 -0
  17. package/src/components/app-config/mcp-config.tsx +42 -2
  18. package/src/components/app-config/user-config-form.tsx +0 -24
  19. package/src/components/chat/acp/__tests__/context-utils.test.ts +1 -1
  20. package/src/components/chat/acp/agent-panel.tsx +1 -1
  21. package/src/components/chat/acp/blocks.tsx +46 -53
  22. package/src/components/chat/acp/common.tsx +1 -1
  23. package/src/components/chat/acp/context-utils.ts +1 -1
  24. package/src/components/chat/acp/session-tabs.tsx +1 -1
  25. package/src/components/chat/chat-history-popover.tsx +125 -0
  26. package/src/components/chat/chat-history-utils.ts +69 -0
  27. package/src/components/chat/chat-panel.tsx +9 -57
  28. package/src/components/editor/__tests__/data-attributes.test.tsx +1 -1
  29. package/src/components/editor/actions/useNotebookActions.tsx +2 -4
  30. package/src/components/editor/ai/__tests__/completion-utils.test.ts +23 -31
  31. package/src/components/editor/cell/CreateCellButton.tsx +14 -2
  32. package/src/components/editor/cell/code/cell-editor.tsx +1 -0
  33. package/src/components/editor/database/schemas.ts +2 -10
  34. package/src/components/editor/{Cell.tsx → notebook-cell.tsx} +5 -1
  35. package/src/components/editor/output/MarimoErrorOutput.tsx +4 -34
  36. package/src/components/editor/renderers/{CellArray.tsx → cell-array.tsx} +1 -1
  37. package/src/components/forms/__tests__/form-utils.test.ts +2 -2
  38. package/src/components/mcp/hooks.ts +48 -0
  39. package/src/components/mcp/mcp-status-indicator.tsx +144 -0
  40. package/src/components/ui/number-field.tsx +4 -1
  41. package/src/core/ai/context/providers/__tests__/__snapshots__/tables.test.ts.snap +13 -19
  42. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +0 -1
  43. package/src/core/ai/context/providers/__tests__/datasource.test.ts +5 -6
  44. package/src/core/ai/context/providers/__tests__/error.test.ts +24 -15
  45. package/src/core/ai/context/providers/cell-output.ts +5 -5
  46. package/src/core/ai/context/providers/common.ts +13 -4
  47. package/src/core/ai/context/providers/datasource.ts +31 -20
  48. package/src/core/ai/context/providers/error.ts +3 -4
  49. package/src/core/ai/context/providers/file.ts +2 -2
  50. package/src/core/ai/context/providers/tables.ts +36 -8
  51. package/src/core/ai/context/providers/variable.ts +2 -3
  52. package/src/core/cells/__tests__/cells.test.ts +6 -6
  53. package/src/core/cells/cells.ts +12 -13
  54. package/src/core/cells/scrollCellIntoView.ts +1 -1
  55. package/src/core/codemirror/__tests__/setup.test.ts +1 -0
  56. package/src/core/codemirror/cm.ts +3 -2
  57. package/src/core/config/__tests__/config-schema.test.ts +2 -0
  58. package/src/core/config/config-schema.ts +2 -0
  59. package/src/core/config/feature-flag.tsx +0 -2
  60. package/src/core/edit-app.tsx +1 -1
  61. package/src/core/network/CachingRequestRegistry.ts +2 -2
  62. package/src/stories/cell.stories.tsx +1 -1
  63. package/src/stories/layout/vertical/one-column.stories.tsx +1 -1
  64. package/src/utils/numbers.ts +24 -1
  65. package/dist/assets/__vite-browser-external-BeNtI_tJ.js +0 -1
@@ -7,7 +7,7 @@ import { C as menuLabelVariants, F as X, I as ChevronUp, L as ChevronDown, N as
7
7
  import { c as composeRefs, d as cn, f as clsx_default, l as useComposedRefs, o as createSlot, t as Button, u as Events } from "./button-CEcjneWG.js";
8
8
  import { s as Logger } from "./hotkeys-yFrUwyJK.js";
9
9
  import { t as require_react_dom } from "./react-dom-CpBooCbY.js";
10
- import { g as useEvent_default, m as invariant } from "./useTheme-CmsvrO5o.js";
10
+ import { g as useEvent_default, m as invariant } from "./useTheme-C2pgJzDH.js";
11
11
  import { t as toString_default } from "./toString-BvCd3yJc.js";
12
12
  import { r as debounce_default, t as Constants } from "./constants-Cjd_3kwd.js";
13
13
  var ChevronRight = createLucideIcon("chevron-right", [["path", {
@@ -56,6 +56,67 @@ function capitalize(e2) {
56
56
  return upperFirst_default(toString_default(e2).toLowerCase());
57
57
  }
58
58
  var capitalize_default = capitalize;
59
+ function clamp(e2, t, n) {
60
+ return Math.min(Math.max(e2, t), n);
61
+ }
62
+ function arrayDelete(e2, t) {
63
+ let n = [...e2];
64
+ return n.splice(t, 1), n;
65
+ }
66
+ function arrayInsert(e2, t, n) {
67
+ t = clamp(t, 0, e2.length);
68
+ let r = [...e2];
69
+ return r.splice(t, 0, n), r;
70
+ }
71
+ function arrayMove(e2, t, n) {
72
+ let r = [...e2], [i] = r.splice(t, 1);
73
+ return r.splice(n, 0, i), r;
74
+ }
75
+ function arrayInsertMany(e2, t, n) {
76
+ if (e2.length === 0) return n;
77
+ t = clamp(t, 0, e2.length);
78
+ let r = [...e2];
79
+ return r.splice(t, 0, ...n), r;
80
+ }
81
+ function arrayShallowEquals(e2, t) {
82
+ if (e2 === t) return true;
83
+ if (e2.length !== t.length) return false;
84
+ for (let n = 0, r = e2.length; n < r; n++) if (e2[n] !== t[n]) return false;
85
+ return true;
86
+ }
87
+ const Arrays = {
88
+ EMPTY: [],
89
+ zip: (e2, t) => (invariant(e2.length === t.length, "Arrays must be the same length"), e2.map((e3, n) => [e3, t[n]]))
90
+ };
91
+ function uniqueBy(e2, t) {
92
+ let n = [], r = /* @__PURE__ */ new Set();
93
+ for (let i of e2) {
94
+ let e3 = t(i);
95
+ r.has(e3) || (r.add(e3), n.push(i));
96
+ }
97
+ return n;
98
+ }
99
+ function once(e2) {
100
+ let t, n = false;
101
+ return function(...r) {
102
+ return n || (n = true, t = e2.apply(this, r)), t;
103
+ };
104
+ }
105
+ function memoizeLastValue(e2) {
106
+ let t, n, r, i = false;
107
+ return function(...a) {
108
+ if (n === void 0 || !arrayShallowEquals(a, n)) {
109
+ try {
110
+ t = e2.apply(this, a), i = false, r = void 0;
111
+ } catch (e3) {
112
+ i = true, r = e3;
113
+ }
114
+ n = a;
115
+ }
116
+ if (i) throw r;
117
+ return t;
118
+ };
119
+ }
59
120
  function assertNever(e2) {
60
121
  invariant(false, `Unexpected object: ${e2}`);
61
122
  }
@@ -2472,7 +2533,7 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2472
2533
  } }), P = $a916eb452884faea$export$b7a616150fdb9f44(p), F = (0, import_react.useMemo)(() => P.resolvedOptions(), [P]), I = $a916eb452884faea$export$b7a616150fdb9f44({
2473
2534
  ...p,
2474
2535
  currencySign: void 0
2475
- }), L = (0, import_react.useMemo)(() => isNaN(D) ? "" : I.format(D), [I, D]), { spinButtonProps: z, incrementButtonProps: B, decrementButtonProps: wl } = $d2e8511e6f209edf$export$e908e06f4b8e3402({
2536
+ }), L = (0, import_react.useMemo)(() => isNaN(D) ? "" : I.format(D), [I, D]), { spinButtonProps: z, incrementButtonProps: B, decrementButtonProps: Bl } = $d2e8511e6f209edf$export$e908e06f4b8e3402({
2476
2537
  isDisabled: o,
2477
2538
  isReadOnly: s,
2478
2539
  isRequired: c,
@@ -2484,25 +2545,25 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2484
2545
  onDecrementToMin: E,
2485
2546
  value: D,
2486
2547
  textValue: L
2487
- }), [Tl, El] = (0, import_react.useState)(false), { focusWithinProps: Dl } = $9ab94262bd0047c7$export$420e68273165f4ec({
2548
+ }), [Vl, Hl] = (0, import_react.useState)(false), { focusWithinProps: Ul } = $9ab94262bd0047c7$export$420e68273165f4ec({
2488
2549
  isDisabled: o,
2489
- onFocusWithinChange: El
2490
- }), Ol = (0, import_react.useCallback)((e3) => {
2550
+ onFocusWithinChange: Hl
2551
+ }), Wl = (0, import_react.useCallback)((e3) => {
2491
2552
  Math.abs(e3.deltaY) <= Math.abs(e3.deltaX) || (e3.deltaY > 0 ? C() : e3.deltaY < 0 && T());
2492
2553
  }, [T, C]);
2493
2554
  $7d0a636d7a4dcefd$export$2123ff2b87c81ca({
2494
- onScroll: Ol,
2495
- isDisabled: x || o || s || !Tl
2555
+ onScroll: Wl,
2556
+ isDisabled: x || o || s || !Vl
2496
2557
  }, n);
2497
2558
  let V = (F.maximumFractionDigits ?? 0) > 0, H = t.minValue === void 0 || isNaN(t.minValue) || t.minValue < 0, U = "numeric";
2498
2559
  $c87311424ea30a05$export$186c6964ca17d99() ? H ? U = "text" : V && (U = "decimal") : $c87311424ea30a05$export$a11b0059900ceec8() && (H ? U = "numeric" : V && (U = "decimal"));
2499
- let kl = (e3) => {
2560
+ let Gl = (e3) => {
2500
2561
  t.validate(e3) && t.setInputValue(e3);
2501
- }, Al = $65484d02dcb7eb3e$export$457c3d6518dd4c6f(e2), W = (0, import_react.useCallback)((e3) => {
2562
+ }, Kl = $65484d02dcb7eb3e$export$457c3d6518dd4c6f(e2), W = (0, import_react.useCallback)((e3) => {
2502
2563
  e3.nativeEvent.isComposing || (e3.key === "Enter" ? (k(), A()) : e3.continuePropagation());
2503
- }, [k, A]), { isInvalid: G, validationErrors: jl, validationDetails: Ml } = t.displayValidation, { labelProps: K, inputProps: Nl, descriptionProps: Pl, errorMessageProps: Fl } = $d841c8010a73d545$export$4f384c9210e583c3({
2564
+ }, [k, A]), { isInvalid: G, validationErrors: ql, validationDetails: Jl } = t.displayValidation, { labelProps: K, inputProps: Yl, descriptionProps: Xl, errorMessageProps: Zl } = $d841c8010a73d545$export$4f384c9210e583c3({
2504
2565
  ...S,
2505
- ...Al,
2566
+ ...Kl,
2506
2567
  name: void 0,
2507
2568
  form: void 0,
2508
2569
  label: f,
@@ -2520,7 +2581,7 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2520
2581
  id: M,
2521
2582
  type: "text",
2522
2583
  inputMode: U,
2523
- onChange: kl,
2584
+ onChange: Gl,
2524
2585
  onBlur: m,
2525
2586
  onFocus: h,
2526
2587
  onFocusChange: g,
@@ -2530,7 +2591,7 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2530
2591
  errorMessage: b
2531
2592
  }, t, n);
2532
2593
  $99facab73266f662$export$5add1d006293d136(n, t.defaultNumberValue, t.setNumberValue);
2533
- let q = $3ef42575df84b30b$export$9d1611c77c2fe928(z, N, Nl, {
2594
+ let q = $3ef42575df84b30b$export$9d1611c77c2fe928(z, N, Yl, {
2534
2595
  role: null,
2535
2596
  "aria-roledescription": $c87311424ea30a05$export$fedb369cb70207f1() ? null : j.format("numberField"),
2536
2597
  "aria-valuemax": null,
@@ -2546,7 +2607,7 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2546
2607
  document.activeElement !== n.current && (e3.pointerType === "mouse" ? (t2 = n.current) == null || t2.focus() : e3.target.focus());
2547
2608
  }, Y = e2["aria-label"] || (typeof e2.label == "string" ? e2.label : ""), Z;
2548
2609
  Y || (Z = e2.label == null ? e2["aria-labelledby"] : K.id);
2549
- let Q = $bdb11010cef70236$export$f680877a34711e37(), $ = $bdb11010cef70236$export$f680877a34711e37(), Il = $3ef42575df84b30b$export$9d1611c77c2fe928(B, {
2610
+ let Q = $bdb11010cef70236$export$f680877a34711e37(), $ = $bdb11010cef70236$export$f680877a34711e37(), Ql = $3ef42575df84b30b$export$9d1611c77c2fe928(B, {
2550
2611
  "aria-label": a || j.format("increase", { fieldLabel: Y }).trim(),
2551
2612
  id: Z && !a ? Q : null,
2552
2613
  "aria-labelledby": Z && !a ? `${Q} ${Z}` : null,
@@ -2556,7 +2617,7 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2556
2617
  allowFocusWhenDisabled: true,
2557
2618
  isDisabled: !t.canIncrement,
2558
2619
  onPressStart: J
2559
- }), Ll = $3ef42575df84b30b$export$9d1611c77c2fe928(wl, {
2620
+ }), $l = $3ef42575df84b30b$export$9d1611c77c2fe928(Bl, {
2560
2621
  "aria-label": i || j.format("decrease", { fieldLabel: Y }).trim(),
2561
2622
  id: Z && !i ? $ : null,
2562
2623
  "aria-labelledby": Z && !i ? `${$} ${Z}` : null,
@@ -2569,20 +2630,20 @@ function $81397a9303501bda$export$23f548e970bdf099(e2, t, n) {
2569
2630
  });
2570
2631
  return {
2571
2632
  groupProps: {
2572
- ...Dl,
2633
+ ...Ul,
2573
2634
  role: "group",
2574
2635
  "aria-disabled": o,
2575
2636
  "aria-invalid": G ? "true" : void 0
2576
2637
  },
2577
2638
  labelProps: K,
2578
2639
  inputProps: q,
2579
- incrementButtonProps: Il,
2580
- decrementButtonProps: Ll,
2581
- errorMessageProps: Fl,
2582
- descriptionProps: Pl,
2640
+ incrementButtonProps: Ql,
2641
+ decrementButtonProps: $l,
2642
+ errorMessageProps: Zl,
2643
+ descriptionProps: Xl,
2583
2644
  isInvalid: G,
2584
- validationErrors: jl,
2585
- validationDetails: Ml
2645
+ validationErrors: ql,
2646
+ validationDetails: Jl
2586
2647
  };
2587
2648
  }
2588
2649
  var $01b77f81d0f07f68$export$75b6ee27786ba447 = /* @__PURE__ */ (0, import_react.createContext)({}), $01b77f81d0f07f68$export$b04be29aa201d4f5 = /* @__PURE__ */ $f39a9eba43920ace$export$86427a43e3e48ebb(function(e2, t) {
@@ -3878,76 +3939,146 @@ function useDebouncedCallback(e2, t) {
3878
3939
  let n = (0, import_compiler_runtime$3.c)(3), r = useEvent_default(e2), i;
3879
3940
  return n[0] !== t || n[1] !== r ? (i = debounce_default(r, t), n[0] = t, n[1] = r, n[2] = i) : i = n[2], i;
3880
3941
  }
3942
+ const maxFractionalDigits = memoizeLastValue((e2) => {
3943
+ for (let t of [
3944
+ 100,
3945
+ 20,
3946
+ 2,
3947
+ 0
3948
+ ]) try {
3949
+ return new Intl.NumberFormat(e2, {
3950
+ minimumFractionDigits: 0,
3951
+ maximumFractionDigits: t
3952
+ }).format(1), t;
3953
+ } catch (e3) {
3954
+ Logger.error(e3);
3955
+ }
3956
+ return 0;
3957
+ });
3958
+ function prettyNumber(e2, t) {
3959
+ return e2 == null ? "" : Array.isArray(e2) ? String(e2) : typeof e2 == "string" ? e2 : typeof e2 == "boolean" ? String(e2) : typeof e2 == "number" || typeof e2 == "bigint" ? e2.toLocaleString(t, {
3960
+ minimumFractionDigits: 0,
3961
+ maximumFractionDigits: 2
3962
+ }) : String(e2);
3963
+ }
3964
+ function scientificSpecialCase(e2) {
3965
+ return e2 === 0 ? "0" : Number.isNaN(e2) ? "NaN" : Number.isFinite(e2) ? null : e2 > 0 ? "Infinity" : "-Infinity";
3966
+ }
3967
+ function prettyScientificNumber(e2, t) {
3968
+ let n = scientificSpecialCase(e2);
3969
+ if (n !== null) return n;
3970
+ let r = Math.abs(e2);
3971
+ if (r < 0.01 || r >= 1e6) return new Intl.NumberFormat(t.locale, {
3972
+ minimumFractionDigits: 1,
3973
+ maximumFractionDigits: 1,
3974
+ notation: "scientific"
3975
+ }).format(e2).toLowerCase();
3976
+ let { shouldRound: i, locale: a } = t;
3977
+ return i ? new Intl.NumberFormat(a, {
3978
+ minimumFractionDigits: 0,
3979
+ maximumFractionDigits: 2
3980
+ }).format(e2) : e2.toLocaleString(a, {
3981
+ minimumFractionDigits: 0,
3982
+ maximumFractionDigits: maxFractionalDigits(a)
3983
+ });
3984
+ }
3985
+ var prefixes = {
3986
+ 24: "Y",
3987
+ 21: "Z",
3988
+ 18: "E",
3989
+ 15: "P",
3990
+ 12: "T",
3991
+ 9: "G",
3992
+ 6: "M",
3993
+ 3: "k",
3994
+ 0: "",
3995
+ "-3": "m",
3996
+ "-6": "\xB5",
3997
+ "-9": "n",
3998
+ "-12": "p",
3999
+ "-15": "f",
4000
+ "-18": "a",
4001
+ "-21": "z",
4002
+ "-24": "y"
4003
+ };
4004
+ function prettyEngineeringNumber(e2, t) {
4005
+ let n = scientificSpecialCase(e2);
4006
+ if (n !== null) return n;
4007
+ let [r, i] = new Intl.NumberFormat(t, {
4008
+ notation: "engineering",
4009
+ maximumSignificantDigits: 3
4010
+ }).format(e2).split("E");
4011
+ return i in prefixes ? r + prefixes[i] : `${r}E${i}`;
4012
+ }
3881
4013
  var import_compiler_runtime$2 = /* @__PURE__ */ __toESM(require_compiler_runtime());
3882
4014
  const NumberField = import_react.forwardRef((e2, t) => {
3883
- let n = (0, import_compiler_runtime$2.c)(45), r, i, a, o, s, c, l;
3884
- if (n[0] !== e2) {
3885
- let { placeholder: t2, variant: u2, ...d2 } = e2;
3886
- i = t2, a = d2, l = u2 === void 0 ? "default" : u2, r = $b91743d66a0ed188$export$63c5fa0b2fdccd2e, s = a, n[8] === Symbol.for("react.memo_cache_sentinel") ? (c = {
3887
- minimumFractionDigits: 0,
3888
- maximumFractionDigits: 100
3889
- }, n[8] = c) : c = n[8], o = cn("shadow-xs-solid hover:shadow-sm-solid hover:focus-within:shadow-md-solid", "flex overflow-hidden rounded-sm border border-input bg-background text-sm font-code ring-offset-background", "disabled:cursor-not-allowed disabled:opacity-50 disabled:shadow-xs-solid", "focus-within:shadow-md-solid focus-within:outline-hidden focus-within:ring-1 focus-within:ring-ring focus-within:border-primary", l === "default" ? "h-6 w-full mb-1" : "h-4 w-full mb-0.5", l === "xs" && "text-xs", a.className), n[0] = e2, n[1] = r, n[2] = i, n[3] = a, n[4] = o, n[5] = s, n[6] = c, n[7] = l;
3890
- } else r = n[1], i = n[2], a = n[3], o = n[4], s = n[5], c = n[6], l = n[7];
3891
- let u = a.isDisabled, d = l === "default" ? "px-1.5" : "px-1", f;
3892
- n[9] === d ? f = n[10] : (f = cn("flex-1", "w-full", "placeholder:text-muted-foreground", "outline-hidden", "disabled:cursor-not-allowed disabled:opacity-50", d), n[9] = d, n[10] = f);
3893
- let p;
3894
- n[11] !== i || n[12] !== a.isDisabled || n[13] !== t || n[14] !== f ? (p = /* @__PURE__ */ (0, import_jsx_runtime.jsx)($3985021b0ad6602f$export$f5b8910cec6cf069, {
4015
+ let n = (0, import_compiler_runtime$2.c)(40), { placeholder: r, variant: i, ...a } = e2, o = i === void 0 ? "default" : i, { locale: s } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), c = $b91743d66a0ed188$export$63c5fa0b2fdccd2e, l;
4016
+ n[0] === s ? l = n[1] : (l = maxFractionalDigits(s), n[0] = s, n[1] = l);
4017
+ let u;
4018
+ n[2] === l ? u = n[3] : (u = {
4019
+ minimumFractionDigits: 0,
4020
+ maximumFractionDigits: l
4021
+ }, n[2] = l, n[3] = u);
4022
+ let d = cn("shadow-xs-solid hover:shadow-sm-solid hover:focus-within:shadow-md-solid", "flex overflow-hidden rounded-sm border border-input bg-background text-sm font-code ring-offset-background", "disabled:cursor-not-allowed disabled:opacity-50 disabled:shadow-xs-solid", "focus-within:shadow-md-solid focus-within:outline-hidden focus-within:ring-1 focus-within:ring-ring focus-within:border-primary", o === "default" ? "h-6 w-full mb-1" : "h-4 w-full mb-0.5", o === "xs" && "text-xs", a.className), f = a.isDisabled, p = o === "default" ? "px-1.5" : "px-1", m;
4023
+ n[4] === p ? m = n[5] : (m = cn("flex-1", "w-full", "placeholder:text-muted-foreground", "outline-hidden", "disabled:cursor-not-allowed disabled:opacity-50", p), n[4] = p, n[5] = m);
4024
+ let h;
4025
+ n[6] !== r || n[7] !== a.isDisabled || n[8] !== t || n[9] !== m ? (h = /* @__PURE__ */ (0, import_jsx_runtime.jsx)($3985021b0ad6602f$export$f5b8910cec6cf069, {
3895
4026
  ref: t,
3896
- disabled: u,
3897
- placeholder: i,
4027
+ disabled: f,
4028
+ placeholder: r,
3898
4029
  onKeyDown: _temp,
3899
- className: f
3900
- }), n[11] = i, n[12] = a.isDisabled, n[13] = t, n[14] = f, n[15] = p) : p = n[15];
3901
- let m = a.isDisabled, h = l === "xs" && "w-2 h-2", g;
3902
- n[16] === h ? g = n[17] : (g = cn("w-3 h-3 -mb-px", h), n[16] = h, n[17] = g);
3903
- let _;
3904
- n[18] === g ? _ = n[19] : (_ = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronUp, {
4030
+ className: m
4031
+ }), n[6] = r, n[7] = a.isDisabled, n[8] = t, n[9] = m, n[10] = h) : h = n[10];
4032
+ let g = a.isDisabled, _ = o === "xs" && "w-2 h-2", v;
4033
+ n[11] === _ ? v = n[12] : (v = cn("w-3 h-3 -mb-px", _), n[11] = _, n[12] = v);
4034
+ let y;
4035
+ n[13] === v ? y = n[14] : (y = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronUp, {
3905
4036
  "aria-hidden": true,
3906
- className: g
3907
- }), n[18] = g, n[19] = _);
3908
- let v;
3909
- n[20] !== a.isDisabled || n[21] !== _ || n[22] !== l ? (v = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepperButton, {
4037
+ className: v
4038
+ }), n[13] = v, n[14] = y);
4039
+ let b;
4040
+ n[15] !== a.isDisabled || n[16] !== y || n[17] !== o ? (b = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepperButton, {
3910
4041
  slot: "increment",
3911
- isDisabled: m,
3912
- variant: l,
3913
- children: _
3914
- }), n[20] = a.isDisabled, n[21] = _, n[22] = l, n[23] = v) : v = n[23];
3915
- let y;
3916
- n[24] === Symbol.for("react.memo_cache_sentinel") ? (y = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px shrink-0 divider bg-border z-10" }), n[24] = y) : y = n[24];
3917
- let b = a.isDisabled, x = l === "xs" && "w-2 h-2", S;
3918
- n[25] === x ? S = n[26] : (S = cn("w-3 h-3 -mt-px", x), n[25] = x, n[26] = S);
3919
- let C;
3920
- n[27] === S ? C = n[28] : (C = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronDown, {
4042
+ isDisabled: g,
4043
+ variant: o,
4044
+ children: y
4045
+ }), n[15] = a.isDisabled, n[16] = y, n[17] = o, n[18] = b) : b = n[18];
4046
+ let x;
4047
+ n[19] === Symbol.for("react.memo_cache_sentinel") ? (x = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px shrink-0 divider bg-border z-10" }), n[19] = x) : x = n[19];
4048
+ let S = a.isDisabled, C = o === "xs" && "w-2 h-2", w;
4049
+ n[20] === C ? w = n[21] : (w = cn("w-3 h-3 -mt-px", C), n[20] = C, n[21] = w);
4050
+ let T;
4051
+ n[22] === w ? T = n[23] : (T = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronDown, {
3921
4052
  "aria-hidden": true,
3922
- className: S
3923
- }), n[27] = S, n[28] = C);
3924
- let w;
3925
- n[29] !== a.isDisabled || n[30] !== C || n[31] !== l ? (w = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepperButton, {
4053
+ className: w
4054
+ }), n[22] = w, n[23] = T);
4055
+ let E;
4056
+ n[24] !== a.isDisabled || n[25] !== T || n[26] !== o ? (E = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StepperButton, {
3926
4057
  slot: "decrement",
3927
- isDisabled: b,
3928
- variant: l,
3929
- children: C
3930
- }), n[29] = a.isDisabled, n[30] = C, n[31] = l, n[32] = w) : w = n[32];
3931
- let T;
3932
- n[33] !== v || n[34] !== w ? (T = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
4058
+ isDisabled: S,
4059
+ variant: o,
4060
+ children: T
4061
+ }), n[24] = a.isDisabled, n[25] = T, n[26] = o, n[27] = E) : E = n[27];
4062
+ let D;
4063
+ n[28] !== b || n[29] !== E ? (D = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3933
4064
  className: "flex flex-col border-s-2",
3934
4065
  children: [
3935
- v,
3936
- y,
3937
- w
4066
+ b,
4067
+ x,
4068
+ E
3938
4069
  ]
3939
- }), n[33] = v, n[34] = w, n[35] = T) : T = n[35];
3940
- let E;
3941
- n[36] !== o || n[37] !== T || n[38] !== p ? (E = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
3942
- className: o,
3943
- children: [p, T]
3944
- }), n[36] = o, n[37] = T, n[38] = p, n[39] = E) : E = n[39];
3945
- let D;
3946
- return n[40] !== r || n[41] !== s || n[42] !== E || n[43] !== c ? (D = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(r, {
3947
- ...s,
3948
- formatOptions: c,
3949
- children: E
3950
- }), n[40] = r, n[41] = s, n[42] = E, n[43] = c, n[44] = D) : D = n[44], D;
4070
+ }), n[28] = b, n[29] = E, n[30] = D) : D = n[30];
4071
+ let O;
4072
+ n[31] !== D || n[32] !== d || n[33] !== h ? (O = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
4073
+ className: d,
4074
+ children: [h, D]
4075
+ }), n[31] = D, n[32] = d, n[33] = h, n[34] = O) : O = n[34];
4076
+ let j;
4077
+ return n[35] !== c || n[36] !== a || n[37] !== O || n[38] !== u ? (j = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(c, {
4078
+ ...a,
4079
+ formatOptions: u,
4080
+ children: O
4081
+ }), n[35] = c, n[36] = a, n[37] = O, n[38] = u, n[39] = j) : j = n[39], j;
3951
4082
  });
3952
4083
  NumberField.displayName = "NumberField";
3953
4084
  var StepperButton = (e2) => {
@@ -4231,109 +4362,122 @@ const BulkEdit = {
4231
4362
  Rename: "rename"
4232
4363
  };
4233
4364
  export {
4234
- $ae1eeba8b9eafd08$export$5165eccb35aaadb5 as $,
4235
- $ee014567cb39d3f0$export$ff05c3ac10437e03 as A,
4236
- $3ef42575df84b30b$export$9d1611c77c2fe928 as At,
4237
- $e93e671b31057976$export$b8473d3665f3a75a as B,
4238
- $8ae05eaa5c114e9c$export$7f54fc3180508a52 as Bt,
4239
- createRovingFocusGroupScope as C,
4240
- $c87311424ea30a05$export$6446a186d09e379e as Ct,
4241
- $a049562f99e7db0e$export$f9c6924e160136d1 as D,
4242
- $c87311424ea30a05$export$fedb369cb70207f1 as Dt,
4243
- $a049562f99e7db0e$export$eb2fcfdbd7ba97d4 as E,
4244
- $c87311424ea30a05$export$a11b0059900ceec8 as Et,
4245
- $01b77f81d0f07f68$export$75b6ee27786ba447 as F,
4246
- $431fbd86ca7dc216$export$b204af158042fbac as Ft,
4247
- $e5be200c675c3b3a$export$fc1a364ae1f3ff10 as G,
4248
- capitalize_default as Gt,
4249
- $e5be200c675c3b3a$export$a763b9476acd3eb as H,
4250
- useNonce as Ht,
4251
- $01b77f81d0f07f68$export$b04be29aa201d4f5 as I,
4252
- $431fbd86ca7dc216$export$f21a1ffae260145a as It,
4253
- $6179b936705e76d3$export$ae780daf29e6d456 as J,
4254
- Plus as Jt,
4255
- $2baaea4c71418dea$export$294aa081a6c6f55d as K,
4256
- Trash as Kt,
4257
- $d2e8511e6f209edf$export$e908e06f4b8e3402 as L,
4258
- $ff5963eb1fccf552$export$e08e3b67e392101e as Lt,
4259
- $514c0188e459b4c0$export$9afb8bc826b033ea as M,
4260
- $d4ee10de306f2510$export$cd4e5573fbe2b576 as Mt,
4261
- $d2b4bc8c273e7be6$export$24d547caef80ccd1 as N,
4262
- $d4ee10de306f2510$export$e58f029f0fbfdb29 as Nt,
4263
- $d3e0e05bdfcf66bd$export$c24727297075ec6a as O,
4264
- $7215afc6de606d6b$export$de79e2c695e052f3 as Ot,
4265
- $d2b4bc8c273e7be6$export$353f5b6fc5456de1 as P,
4266
- $f4e2df6bd15f8569$export$98658e8c59125e6a as Pt,
4267
- $f6c31cce2adf654f$export$45712eceda6fad21 as Q,
4268
- $701a24aa0da5b062$export$ea18c227d4417cc3 as R,
4269
- $bdb11010cef70236$export$b4cc09c592e8fdb8 as Rt,
4270
- Root as S,
4271
- $313b98861ee5dd6c$export$d6875122194c7b44 as St,
4272
- $3985021b0ad6602f$export$f5b8910cec6cf069 as T,
4273
- $c87311424ea30a05$export$9ac100e40613ea10 as Tt,
4274
- $e5be200c675c3b3a$export$aca958c65c314e6c as U,
4275
- assertNever as Ut,
4276
- $e5be200c675c3b3a$export$75ee7c75d68f5b0e as V,
4277
- $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as Vt,
4278
- $e5be200c675c3b3a$export$dad6ae84456c676a as W,
4279
- logNever as Wt,
4280
- $3ad3f6e1647bc98d$export$80f3e147d781571c as X,
4281
- Circle as Xt,
4282
- $9ab94262bd0047c7$export$420e68273165f4ec as Y,
4283
- Pencil as Yt,
4284
- $507fabe10e71c6fb$export$630ff653c5ada6a9 as Z,
4285
- ChevronRight as Zt,
4286
- DropdownMenuSub as _,
4287
- $b4b717babfbb907b$export$4c063cf1350e6fed as _t,
4365
+ $3ad3f6e1647bc98d$export$80f3e147d781571c as $,
4366
+ arrayInsertMany as $t,
4367
+ $a049562f99e7db0e$export$f9c6924e160136d1 as A,
4368
+ $c87311424ea30a05$export$fedb369cb70207f1 as At,
4369
+ $d2e8511e6f209edf$export$e908e06f4b8e3402 as B,
4370
+ $ff5963eb1fccf552$export$e08e3b67e392101e as Bt,
4371
+ DropdownMenuTrigger as C,
4372
+ $e9faafb641e167db$export$90fc3a17d93f704c as Ct,
4373
+ $3985021b0ad6602f$export$37fb8590cf2c088c as D,
4374
+ $c87311424ea30a05$export$78551043582a6a98 as Dt,
4375
+ createRovingFocusGroupScope as E,
4376
+ $c87311424ea30a05$export$6446a186d09e379e as Et,
4377
+ $514c0188e459b4c0$export$9afb8bc826b033ea as F,
4378
+ $d4ee10de306f2510$export$cd4e5573fbe2b576 as Ft,
4379
+ $e5be200c675c3b3a$export$a763b9476acd3eb as G,
4380
+ useNonce as Gt,
4381
+ $f39a9eba43920ace$export$b5d7cc18bb8d2b59 as H,
4382
+ $bdb11010cef70236$export$f680877a34711e37 as Ht,
4383
+ $d2b4bc8c273e7be6$export$24d547caef80ccd1 as I,
4384
+ $d4ee10de306f2510$export$e58f029f0fbfdb29 as It,
4385
+ $e5be200c675c3b3a$export$fc1a364ae1f3ff10 as J,
4386
+ memoizeLastValue as Jt,
4387
+ $e5be200c675c3b3a$export$aca958c65c314e6c as K,
4388
+ assertNever as Kt,
4389
+ $d2b4bc8c273e7be6$export$353f5b6fc5456de1 as L,
4390
+ $f4e2df6bd15f8569$export$98658e8c59125e6a as Lt,
4391
+ $ee014567cb39d3f0$export$f551688fc98f2e09 as M,
4392
+ $65484d02dcb7eb3e$export$457c3d6518dd4c6f as Mt,
4393
+ $ee014567cb39d3f0$export$ff05c3ac10437e03 as N,
4394
+ $3ef42575df84b30b$export$9d1611c77c2fe928 as Nt,
4395
+ $3985021b0ad6602f$export$f5b8910cec6cf069 as O,
4396
+ $c87311424ea30a05$export$9ac100e40613ea10 as Ot,
4397
+ $514c0188e459b4c0$export$5f1af8db9871e1d6 as P,
4398
+ $d4ee10de306f2510$export$4282f70798064fe0 as Pt,
4399
+ $9ab94262bd0047c7$export$420e68273165f4ec as Q,
4400
+ arrayInsert as Qt,
4401
+ $01b77f81d0f07f68$export$75b6ee27786ba447 as R,
4402
+ $431fbd86ca7dc216$export$b204af158042fbac as Rt,
4403
+ DropdownMenuSubTrigger as S,
4404
+ $99facab73266f662$export$5add1d006293d136 as St,
4405
+ Root as T,
4406
+ $313b98861ee5dd6c$export$d6875122194c7b44 as Tt,
4407
+ $e93e671b31057976$export$b8473d3665f3a75a as U,
4408
+ $8ae05eaa5c114e9c$export$7f54fc3180508a52 as Ut,
4409
+ $701a24aa0da5b062$export$ea18c227d4417cc3 as V,
4410
+ $bdb11010cef70236$export$b4cc09c592e8fdb8 as Vt,
4411
+ $e5be200c675c3b3a$export$75ee7c75d68f5b0e as W,
4412
+ $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as Wt,
4413
+ $f7dceffc5ad7768b$export$4e328f61c538687f as X,
4414
+ Arrays as Xt,
4415
+ $2baaea4c71418dea$export$294aa081a6c6f55d as Y,
4416
+ once as Yt,
4417
+ $6179b936705e76d3$export$ae780daf29e6d456 as Z,
4418
+ arrayDelete as Zt,
4419
+ DropdownMenuLabel as _,
4420
+ $64fa3d84918910a7$export$fabf2dc03a41866e as _t,
4288
4421
  Input as a,
4289
- $5b160d28a433310d$export$c17fa47878dc55b6 as at,
4290
- DropdownMenuTrigger as b,
4291
- $e9faafb641e167db$export$90fc3a17d93f704c as bt,
4292
- useDebounceControlledState as c,
4293
- $64fa3d84918910a7$export$29f1550f4b0d4415 as ct,
4294
- DropdownMenuContent as d,
4295
- $64fa3d84918910a7$export$c245e6201fed2f75 as dt,
4296
- $6c7bd7858deea686$export$cd11ab140839f11d as et,
4297
- DropdownMenuGroup as f,
4298
- $64fa3d84918910a7$export$c62b8e45d58ddad9 as ft,
4299
- DropdownMenuSeparator as g,
4300
- $458b0a5536c1a7cf$export$40bfa8c7b0832715 as gt,
4301
- DropdownMenuPortal as h,
4302
- $9446cca9a3875146$export$7d15b64cf5a3a4c4 as ht,
4422
+ Trash as an,
4423
+ $fca6afa0e843324b$export$87b761675e8eaa10 as at,
4424
+ DropdownMenuSub as b,
4425
+ $b4b717babfbb907b$export$4c063cf1350e6fed as bt,
4426
+ prettyEngineeringNumber as c,
4427
+ Pencil as cn,
4428
+ $5b160d28a433310d$export$c17fa47878dc55b6 as ct,
4429
+ useDebounceControlledState as d,
4430
+ $64fa3d84918910a7$export$29f1550f4b0d4415 as dt,
4431
+ arrayMove as en,
4432
+ $507fabe10e71c6fb$export$630ff653c5ada6a9 as et,
4433
+ useDebouncedCallback as f,
4434
+ $64fa3d84918910a7$export$4d86445c2cf5e3 as ft,
4435
+ DropdownMenuItem as g,
4436
+ $64fa3d84918910a7$export$ef03459518577ad4 as gt,
4437
+ DropdownMenuGroup as h,
4438
+ $64fa3d84918910a7$export$c62b8e45d58ddad9 as ht,
4303
4439
  DebouncedNumberInput as i,
4304
- $6db58dc88e78b024$export$2f817fcdc4b89ae0 as it,
4305
- $514c0188e459b4c0$export$5f1af8db9871e1d6 as j,
4306
- $d4ee10de306f2510$export$4282f70798064fe0 as jt,
4307
- $ee014567cb39d3f0$export$f551688fc98f2e09 as k,
4308
- $65484d02dcb7eb3e$export$457c3d6518dd4c6f as kt,
4309
- useDebouncedCallback as l,
4310
- $64fa3d84918910a7$export$4d86445c2cf5e3 as lt,
4311
- DropdownMenuLabel as m,
4312
- $64fa3d84918910a7$export$fabf2dc03a41866e as mt,
4440
+ capitalize_default as in,
4441
+ _class_private_field_init as it,
4442
+ $d3e0e05bdfcf66bd$export$c24727297075ec6a as j,
4443
+ $7215afc6de606d6b$export$de79e2c695e052f3 as jt,
4444
+ $a049562f99e7db0e$export$eb2fcfdbd7ba97d4 as k,
4445
+ $c87311424ea30a05$export$a11b0059900ceec8 as kt,
4446
+ prettyNumber as l,
4447
+ Circle as ln,
4448
+ $319e236875307eab$export$a9b970dcc4ae71a9 as lt,
4449
+ DropdownMenuContent as m,
4450
+ $64fa3d84918910a7$export$c245e6201fed2f75 as mt,
4313
4451
  ErrorBoundary$1 as n,
4314
- $fca6afa0e843324b$export$87b761675e8eaa10 as nt,
4452
+ uniqueBy as nn,
4453
+ $ae1eeba8b9eafd08$export$5165eccb35aaadb5 as nt,
4315
4454
  OnBlurredInput as o,
4316
- $319e236875307eab$export$a9b970dcc4ae71a9 as ot,
4317
- DropdownMenuItem as p,
4318
- $64fa3d84918910a7$export$ef03459518577ad4 as pt,
4319
- $f7dceffc5ad7768b$export$4e328f61c538687f as q,
4320
- Search as qt,
4455
+ Search as on,
4456
+ $fca6afa0e843324b$export$f12b703ca79dfbb1 as ot,
4457
+ DropdownMenu as p,
4458
+ $64fa3d84918910a7$export$9d4c57ee4c6ffdd8 as pt,
4459
+ $e5be200c675c3b3a$export$dad6ae84456c676a as q,
4460
+ logNever as qt,
4321
4461
  DebouncedInput as r,
4322
- $fca6afa0e843324b$export$f12b703ca79dfbb1 as rt,
4462
+ clamp as rn,
4463
+ $6c7bd7858deea686$export$cd11ab140839f11d as rt,
4323
4464
  NumberField as s,
4324
- $64fa3d84918910a7$export$2881499e37b75b9a as st,
4465
+ Plus as sn,
4466
+ $6db58dc88e78b024$export$2f817fcdc4b89ae0 as st,
4325
4467
  BulkEdit as t,
4326
- _class_private_field_init as tt,
4327
- DropdownMenu as u,
4328
- $64fa3d84918910a7$export$9d4c57ee4c6ffdd8 as ut,
4329
- DropdownMenuSubContent as v,
4330
- $b4b717babfbb907b$export$bebd5a1431fec25d as vt,
4331
- $3985021b0ad6602f$export$37fb8590cf2c088c as w,
4332
- $c87311424ea30a05$export$78551043582a6a98 as wt,
4333
- Item as x,
4334
- $df56164dff5785e2$export$4338b53315abf666 as xt,
4335
- DropdownMenuSubTrigger as y,
4336
- $99facab73266f662$export$5add1d006293d136 as yt,
4337
- $f39a9eba43920ace$export$b5d7cc18bb8d2b59 as z,
4338
- $bdb11010cef70236$export$f680877a34711e37 as zt
4468
+ arrayShallowEquals as tn,
4469
+ $f6c31cce2adf654f$export$45712eceda6fad21 as tt,
4470
+ prettyScientificNumber as u,
4471
+ ChevronRight as un,
4472
+ $64fa3d84918910a7$export$2881499e37b75b9a as ut,
4473
+ DropdownMenuPortal as v,
4474
+ $9446cca9a3875146$export$7d15b64cf5a3a4c4 as vt,
4475
+ Item as w,
4476
+ $df56164dff5785e2$export$4338b53315abf666 as wt,
4477
+ DropdownMenuSubContent as x,
4478
+ $b4b717babfbb907b$export$bebd5a1431fec25d as xt,
4479
+ DropdownMenuSeparator as y,
4480
+ $458b0a5536c1a7cf$export$40bfa8c7b0832715 as yt,
4481
+ $01b77f81d0f07f68$export$b04be29aa201d4f5 as z,
4482
+ $431fbd86ca7dc216$export$f21a1ffae260145a as zt
4339
4483
  };
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-DgPTj83v.js";
2
2
  import { t as require_react } from "./react-DHL_F5hS.js";
3
3
  import { n as require_compiler_runtime } from "./jsx-runtime-DZyWJV5b.js";
4
- import { g as useEvent_default, m as invariant } from "./useTheme-CmsvrO5o.js";
4
+ import { g as useEvent_default, m as invariant } from "./useTheme-C2pgJzDH.js";
5
5
  var import_compiler_runtime = /* @__PURE__ */ __toESM(require_compiler_runtime()), import_react = /* @__PURE__ */ __toESM(require_react()), Result = {
6
6
  error(e, s) {
7
7
  return {
@@ -5,7 +5,7 @@ import { D as createLucideIcon } from "./fullscreen-D1yTiBlu.js";
5
5
  import { i as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, j as upperFirst_default } from "./label-BinTsX-u.js";
6
6
  import { d as cn, i as cva } from "./button-CEcjneWG.js";
7
7
  import { s as Logger } from "./hotkeys-yFrUwyJK.js";
8
- import { S as atom, b as useSetAtom } from "./useTheme-CmsvrO5o.js";
8
+ import { S as atom, b as useSetAtom } from "./useTheme-C2pgJzDH.js";
9
9
  import { t as toString_default } from "./toString-BvCd3yJc.js";
10
10
  import { t as _arrayReduce_default } from "./_arrayReduce-CVwxyrBP.js";
11
11
  var Calendar = createLucideIcon("calendar", [
@@ -508,6 +508,7 @@ const UserConfigSchema = looseObject({
508
508
  ai: looseObject({
509
509
  rules: string().prefault(""),
510
510
  mode: _enum(["manual", "ask"]).prefault("manual"),
511
+ inline_tooltip: boolean().prefault(false),
511
512
  open_ai: AiConfigSchema.optional(),
512
513
  anthropic: AiConfigSchema.optional(),
513
514
  google: AiConfigSchema.optional(),