@marimo-team/islands 0.23.4-dev1 → 0.23.4-dev11

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.
@@ -34,7 +34,7 @@ import { n as formats } from "./vega-loader.browser-3_z8GoFC.js";
34
34
  import { a as getContainerWidth, n as vegaLoadData, r as createBatchedLoader, s as tooltipHandler, t as parseCsvData } from "./loader-BvW0-YWZ.js";
35
35
  import { t as useIframeCapabilities } from "./useIframeCapabilities-DbdLoEDm.js";
36
36
  import { t as useAsyncData } from "./useAsyncData-CKYzhCis.js";
37
- let SELECT_COLUMN_ID, slotsController, Expand, NAMELESS_COLUMN_PREFIX, ContextAwarePanelItem, EmotionCacheProvider, contextAwarePanelType, GripHorizontal, contextAwarePanelOwner, TextWrap, TableBody, ChevronsLeft, ColumnChartSpecModel, inferFieldTypes, TableCell, ChevronsDownUp, usePrevious, DelayMount, TableHead, ChevronLeft, Fill, Download, Provider$1, ChevronsUpDown, isCellAwareAtom, Funnel, Table, ChevronsRight, INDEX_COLUMN_NAME, TableHeader, ArrowDownWideNarrow, ComboboxItem, HtmlOutput, contextAwarePanelOpen, isStaticNotebook, renderCellValue, generateColumns, ColumnChartContext, loadTableAndRawData, getPageIndexForRow, loadTableData, Filenames, ChartLoadingState, Slide, CommandEmpty, useInternalStateWithSync, RenderTextWithLinks, JsonOutput, CommandList, DataTable, Tabs, TOO_MANY_ROWS, InstallPackageButton, TabsContent, downloadHTMLAsImage, ChartInfoState, downloadByURL, ChartErrorState, SlideSidebar, Command, Toggle, Ellipsis, SlotNames, EyeOff, OutputArea, CommandSeparator, downloadBlob, TabsTrigger, DEFAULT_SLIDE_TYPE, getMimeValues, RadioGroup, CommandInput, ADD_PRINTING_CLASS, TabsList, useIntersectionObserver, SLIDE_TYPE_OPTIONS_BY_VALUE, filtersToFilterGroup, RadioGroupItem, CommandItem, DEFAULT_DECK_TRANSITION, toFieldTypes, OutputRenderer, Maps, prettifyRowColumnCount, LazyVegaEmbed, PANEL_TYPES, getStaticVirtualFiles, Combobox, Kbd, prettifyRowCount, useOverflowDetection, TableRow;
37
+ let INDEX_COLUMN_NAME, slotsController, Expand, NAMELESS_COLUMN_PREFIX, ContextAwarePanelItem, EmotionCacheProvider, contextAwarePanelType, GripHorizontal, contextAwarePanelOwner, TextWrap, TableBody, ChevronsLeft, ColumnChartSpecModel, inferFieldTypes, TableCell, ChevronsDownUp, usePrevious, DelayMount, TableHead, ChevronLeft, Fill, Download, Provider$1, ChevronsUpDown, isCellAwareAtom, Funnel, Table, ChevronsRight, loadTableData, TableHeader, ArrowDownWideNarrow, ComboboxItem, HtmlOutput, contextAwarePanelOpen, isStaticNotebook, renderCellValue, generateColumns, ColumnChartContext, getPageIndexForRow, filtersToFilterGroup, loadTableAndRawData, Filenames, ChartLoadingState, Slide, CommandEmpty, useInternalStateWithSync, RenderTextWithLinks, JsonOutput, CommandList, DataTable, Tabs, SELECT_COLUMN_ID, InstallPackageButton, TabsContent, downloadHTMLAsImage, ChartInfoState, downloadByURL, ChartErrorState, SlideSidebar, Command, Toggle, Ellipsis, SlotNames, EyeOff, OutputArea, CommandSeparator, downloadBlob, TabsTrigger, DEFAULT_SLIDE_TYPE, toFieldTypes, RadioGroup, CommandInput, ADD_PRINTING_CLASS, TabsList, useIntersectionObserver, SLIDE_TYPE_OPTIONS_BY_VALUE, getMimeValues, RadioGroupItem, CommandItem, DEFAULT_DECK_TRANSITION, TOO_MANY_ROWS, OutputRenderer, Maps, prettifyRowColumnCount, LazyVegaEmbed, PANEL_TYPES, getStaticVirtualFiles, Combobox, Kbd, prettifyRowCount, useOverflowDetection, TableRow;
38
38
  let __tla = Promise.all([
39
39
  (() => {
40
40
  try {
@@ -12521,6 +12521,104 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
12521
12521
  return n;
12522
12522
  }
12523
12523
  };
12524
+ var import_compiler_runtime$31 = require_compiler_runtime();
12525
+ const DraggablePopover = (e) => {
12526
+ let t = (0, import_compiler_runtime$31.c)(25), n, i, a;
12527
+ t[0] === e ? (n = t[1], i = t[2], a = t[3]) : ({ children: n, className: i, ...a } = e, t[0] = e, t[1] = n, t[2] = i, t[3] = a);
12528
+ let o;
12529
+ t[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = {
12530
+ x: 0,
12531
+ y: 0
12532
+ }, t[4] = o) : o = t[4];
12533
+ let [s, c] = (0, import_react.useState)(o), d;
12534
+ t[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (d = {
12535
+ x: 0,
12536
+ y: 0
12537
+ }, t[5] = d) : d = t[5];
12538
+ let f = (0, import_react.useRef)(d), [h, _] = (0, import_react.useState)(false), v;
12539
+ if (t[6] !== s.x || t[7] !== s.y) {
12540
+ v = (t2) => {
12541
+ f.current = {
12542
+ x: t2.clientX - s.x,
12543
+ y: t2.clientY - s.y
12544
+ }, _(true), document.addEventListener("mousemove", e2), document.addEventListener("mouseup", n2);
12545
+ };
12546
+ let e2 = (e3) => {
12547
+ c({
12548
+ x: e3.clientX - f.current.x,
12549
+ y: e3.clientY - f.current.y
12550
+ });
12551
+ }, n2 = () => {
12552
+ _(false), document.removeEventListener("mousemove", e2), document.removeEventListener("mouseup", n2);
12553
+ };
12554
+ t[6] = s.x, t[7] = s.y, t[8] = v;
12555
+ } else v = t[8];
12556
+ let y;
12557
+ t[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (y = (0, import_jsx_runtime.jsx)(PopoverTrigger, {}), t[9] = y) : y = t[9];
12558
+ let S;
12559
+ t[10] !== s.x || t[11] !== s.y ? (S = {
12560
+ position: "fixed",
12561
+ left: s.x,
12562
+ top: s.y
12563
+ }, t[10] = s.x, t[11] = s.y, t[12] = S) : S = t[12];
12564
+ let w = `flex items-center justify-center absolute top-0 left-1/2 -translate-x-1/2 ${h ? "cursor-grabbing" : "cursor-grab"}`, E;
12565
+ t[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (E = (0, import_jsx_runtime.jsx)(GripHorizontal, {
12566
+ className: "h-5 w-5 mt-1 text-muted-foreground/40"
12567
+ }), t[13] = E) : E = t[13];
12568
+ let O;
12569
+ t[14] !== v || t[15] !== w ? (O = (0, import_jsx_runtime.jsx)("div", {
12570
+ onMouseDown: v,
12571
+ className: w,
12572
+ children: E
12573
+ }), t[14] = v, t[15] = w, t[16] = O) : O = t[16];
12574
+ let A;
12575
+ t[17] !== n || t[18] !== i || t[19] !== S || t[20] !== O ? (A = (0, import_jsx_runtime.jsxs)(PopoverContent, {
12576
+ className: i,
12577
+ style: S,
12578
+ children: [
12579
+ O,
12580
+ n
12581
+ ]
12582
+ }), t[17] = n, t[18] = i, t[19] = S, t[20] = O, t[21] = A) : A = t[21];
12583
+ let M;
12584
+ return t[22] !== a || t[23] !== A ? (M = (0, import_jsx_runtime.jsxs)(Popover, {
12585
+ ...a,
12586
+ children: [
12587
+ y,
12588
+ A
12589
+ ]
12590
+ }), t[22] = a, t[23] = A, t[24] = M) : M = t[24], M;
12591
+ }, Sets = {
12592
+ merge(...e) {
12593
+ let t = /* @__PURE__ */ new Set();
12594
+ for (let n of e) for (let e2 of n) t.add(e2);
12595
+ return t;
12596
+ },
12597
+ equals(e, t) {
12598
+ if (e.size !== t.size) return false;
12599
+ for (let n of e) if (!t.has(n)) return false;
12600
+ return true;
12601
+ },
12602
+ toggle(e, t) {
12603
+ let n = new Set(e);
12604
+ return n.has(t) ? n.delete(t) : n.add(t), n;
12605
+ }
12606
+ };
12607
+ function words(e) {
12608
+ return e.toLowerCase().match(/[\da-z]+/g) || [];
12609
+ }
12610
+ function smartMatch(e, t) {
12611
+ let n = words(e);
12612
+ if (n.length === 0) return true;
12613
+ let i = Array.isArray(t) ? t : [
12614
+ t
12615
+ ], a = [];
12616
+ for (let e2 of i) e2 && a.push(...words(e2));
12617
+ return n.every((e2) => a.some((t2) => t2.startsWith(e2)));
12618
+ }
12619
+ function smartMatchFilter(e, t, n) {
12620
+ return smartMatch(t, e) ? 1 : n && smartMatch(t, n) ? 0.8 : 0;
12621
+ }
12524
12622
  var U$1 = 1, Y$1 = 0.9, H = 0.8, J$1 = 0.17, p = 0.1, u = 0.999, $$1 = 0.9999, k$1 = 0.99, m = /[\\\/_+.#"@\[\(\{&]/, B$1 = /[\\\/_+.#"@\[\(\{&]/g, K$2 = /[\s-]/, X$1 = /[\s-]/g;
12525
12623
  function G(e, t, n, i, a, o, s) {
12526
12624
  if (o === t.length) return a === e.length ? U$1 : k$1;
@@ -13103,7 +13201,8 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13103
13201
  ref: t.ref
13104
13202
  }, n(t.props.children)) : n(t);
13105
13203
  }
13106
- var Te = {
13204
+ let Te, import_compiler_runtime$30;
13205
+ Te = {
13107
13206
  position: "absolute",
13108
13207
  width: "1px",
13109
13208
  height: "1px",
@@ -13114,25 +13213,9 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13114
13213
  whiteSpace: "nowrap",
13115
13214
  borderWidth: "0"
13116
13215
  };
13117
- function words(e) {
13118
- return e.toLowerCase().match(/[\da-z]+/g) || [];
13119
- }
13120
- function smartMatch(e, t) {
13121
- let n = words(e);
13122
- if (n.length === 0) return true;
13123
- let i = Array.isArray(t) ? t : [
13124
- t
13125
- ], a = [];
13126
- for (let e2 of i) e2 && a.push(...words(e2));
13127
- return n.every((e2) => a.some((t2) => t2.startsWith(e2)));
13128
- }
13129
- function smartMatchFilter(e, t, n) {
13130
- return smartMatch(t, e) ? 1 : n && smartMatch(t, n) ? 0.8 : 0;
13131
- }
13132
- let import_compiler_runtime$31;
13133
- import_compiler_runtime$31 = require_compiler_runtime();
13216
+ import_compiler_runtime$30 = require_compiler_runtime();
13134
13217
  Command = import_react.forwardRef((e, t) => {
13135
- let n = (0, import_compiler_runtime$31.c)(9), i, o;
13218
+ let n = (0, import_compiler_runtime$30.c)(9), i, o;
13136
13219
  n[0] === e ? (i = n[1], o = n[2]) : ({ className: i, ...o } = e, n[0] = e, n[1] = i, n[2] = o);
13137
13220
  let s;
13138
13221
  n[3] === i ? s = n[4] : (s = cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", i), n[3] = i, n[4] = s);
@@ -13146,7 +13229,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13146
13229
  });
13147
13230
  Command.displayName = _e.displayName;
13148
13231
  CommandInput = import_react.forwardRef((e, t) => {
13149
- let n = (0, import_compiler_runtime$31.c)(19), i, o, s, c;
13232
+ let n = (0, import_compiler_runtime$30.c)(19), i, o, s, c;
13150
13233
  n[0] === e ? (i = n[1], o = n[2], s = n[3], c = n[4]) : ({ className: i, icon: o, rootClassName: c, ...s } = e, n[0] = e, n[1] = i, n[2] = o, n[3] = s, n[4] = c);
13151
13234
  let d;
13152
13235
  n[5] === c ? d = n[6] : (d = cn("flex items-center border-b px-3", c), n[5] = c, n[6] = d);
@@ -13174,7 +13257,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13174
13257
  });
13175
13258
  CommandInput.displayName = _e.Input.displayName;
13176
13259
  CommandList = import_react.forwardRef((e, t) => {
13177
- let n = (0, import_compiler_runtime$31.c)(9), i, o;
13260
+ let n = (0, import_compiler_runtime$30.c)(9), i, o;
13178
13261
  n[0] === e ? (i = n[1], o = n[2]) : ({ className: i, ...o } = e, n[0] = e, n[1] = i, n[2] = o);
13179
13262
  let s;
13180
13263
  n[3] === i ? s = n[4] : (s = cn("max-h-[300px] overflow-y-auto overflow-x-hidden", i), n[3] = i, n[4] = s);
@@ -13187,7 +13270,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13187
13270
  });
13188
13271
  CommandList.displayName = _e.List.displayName;
13189
13272
  CommandEmpty = import_react.forwardRef((e, t) => {
13190
- let n = (0, import_compiler_runtime$31.c)(3), i;
13273
+ let n = (0, import_compiler_runtime$30.c)(3), i;
13191
13274
  return n[0] !== e || n[1] !== t ? (i = (0, import_jsx_runtime.jsx)(_e.Empty, {
13192
13275
  ref: t,
13193
13276
  className: "py-6 text-center text-sm",
@@ -13196,7 +13279,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13196
13279
  });
13197
13280
  CommandEmpty.displayName = _e.Empty.displayName;
13198
13281
  var CommandGroup = import_react.forwardRef((e, t) => {
13199
- let n = (0, import_compiler_runtime$31.c)(9), i, o;
13282
+ let n = (0, import_compiler_runtime$30.c)(9), i, o;
13200
13283
  n[0] === e ? (i = n[1], o = n[2]) : ({ className: i, ...o } = e, n[0] = e, n[1] = i, n[2] = o);
13201
13284
  let s;
13202
13285
  n[3] === i ? s = n[4] : (s = cn("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground", i), n[3] = i, n[4] = s);
@@ -13209,7 +13292,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13209
13292
  });
13210
13293
  CommandGroup.displayName = _e.Group.displayName;
13211
13294
  CommandSeparator = import_react.forwardRef((e, t) => {
13212
- let n = (0, import_compiler_runtime$31.c)(9), i, a;
13295
+ let n = (0, import_compiler_runtime$30.c)(9), i, a;
13213
13296
  n[0] === e ? (i = n[1], a = n[2]) : ({ className: i, ...a } = e, n[0] = e, n[1] = i, n[2] = a);
13214
13297
  let o;
13215
13298
  n[3] === i ? o = n[4] : (o = menuSeparatorVariants({
@@ -13224,7 +13307,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13224
13307
  });
13225
13308
  CommandSeparator.displayName = _e.Separator.displayName;
13226
13309
  CommandItem = import_react.forwardRef((e, t) => {
13227
- let n = (0, import_compiler_runtime$31.c)(17), i, o, s, c, d;
13310
+ let n = (0, import_compiler_runtime$30.c)(17), i, o, s, c, d;
13228
13311
  if (n[0] !== t || n[1] !== e) {
13229
13312
  let { className: f2, variant: h, inset: _, ...v } = e;
13230
13313
  i = _e.Item, o = t, n[7] !== f2 || n[8] !== _ || n[9] !== h ? (s = cn(menuItemVariants({
@@ -13241,112 +13324,487 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13241
13324
  }), n[11] = i, n[12] = o, n[13] = s, n[14] = c, n[15] = d, n[16] = f) : f = n[16], f;
13242
13325
  });
13243
13326
  CommandItem.displayName = _e.Item.displayName;
13244
- var import_compiler_runtime$30 = require_compiler_runtime();
13245
- const DraggablePopover = (e) => {
13246
- let t = (0, import_compiler_runtime$30.c)(25), n, i, a;
13247
- t[0] === e ? (n = t[1], i = t[2], a = t[3]) : ({ children: n, className: i, ...a } = e, t[0] = e, t[1] = n, t[2] = i, t[3] = a);
13248
- let o;
13249
- t[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = {
13250
- x: 0,
13251
- y: 0
13252
- }, t[4] = o) : o = t[4];
13253
- let [s, c] = (0, import_react.useState)(o), d;
13254
- t[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (d = {
13255
- x: 0,
13256
- y: 0
13257
- }, t[5] = d) : d = t[5];
13258
- let f = (0, import_react.useRef)(d), [h, _] = (0, import_react.useState)(false), v;
13259
- if (t[6] !== s.x || t[7] !== s.y) {
13260
- v = (t2) => {
13261
- f.current = {
13262
- x: t2.clientX - s.x,
13263
- y: t2.clientY - s.y
13264
- }, _(true), document.addEventListener("mousemove", e2), document.addEventListener("mouseup", n2);
13265
- };
13266
- let e2 = (e3) => {
13267
- c({
13268
- x: e3.clientX - f.current.x,
13269
- y: e3.clientY - f.current.y
13270
- });
13271
- }, n2 = () => {
13272
- _(false), document.removeEventListener("mousemove", e2), document.removeEventListener("mouseup", n2);
13273
- };
13274
- t[6] = s.x, t[7] = s.y, t[8] = v;
13275
- } else v = t[8];
13276
- let y;
13277
- t[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (y = (0, import_jsx_runtime.jsx)(PopoverTrigger, {}), t[9] = y) : y = t[9];
13278
- let S;
13279
- t[10] !== s.x || t[11] !== s.y ? (S = {
13280
- position: "fixed",
13281
- left: s.x,
13282
- top: s.y
13283
- }, t[10] = s.x, t[11] = s.y, t[12] = S) : S = t[12];
13284
- let w = `flex items-center justify-center absolute top-0 left-1/2 -translate-x-1/2 ${h ? "cursor-grabbing" : "cursor-grab"}`, E;
13285
- t[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (E = (0, import_jsx_runtime.jsx)(GripHorizontal, {
13286
- className: "h-5 w-5 mt-1 text-muted-foreground/40"
13287
- }), t[13] = E) : E = t[13];
13288
- let O;
13289
- t[14] !== v || t[15] !== w ? (O = (0, import_jsx_runtime.jsx)("div", {
13290
- onMouseDown: v,
13291
- className: w,
13292
- children: E
13293
- }), t[14] = v, t[15] = w, t[16] = O) : O = t[16];
13294
- let A;
13295
- t[17] !== n || t[18] !== i || t[19] !== S || t[20] !== O ? (A = (0, import_jsx_runtime.jsxs)(PopoverContent, {
13296
- className: i,
13297
- style: S,
13298
- children: [
13299
- O,
13300
- n
13301
- ]
13302
- }), t[17] = n, t[18] = i, t[19] = S, t[20] = O, t[21] = A) : A = t[21];
13303
- let M;
13304
- return t[22] !== a || t[23] !== A ? (M = (0, import_jsx_runtime.jsxs)(Popover, {
13305
- ...a,
13306
- children: [
13307
- y,
13308
- A
13309
- ]
13310
- }), t[22] = a, t[23] = A, t[24] = M) : M = t[24], M;
13311
- }, Filter = {
13312
- number(e) {
13313
- return {
13314
- type: "number",
13315
- ...e
13316
- };
13327
+ var import_compiler_runtime$29 = require_compiler_runtime(), WHITESPACE_CHARS = {
13328
+ " ": {
13329
+ marker: "\u2423",
13330
+ name: "space"
13317
13331
  },
13318
- text(e) {
13319
- return {
13320
- type: "text",
13321
- ...e
13322
- };
13332
+ " ": {
13333
+ marker: "\\t",
13334
+ name: "tab"
13323
13335
  },
13324
- date(e) {
13325
- return {
13326
- type: "date",
13327
- ...e
13328
- };
13336
+ "\n": {
13337
+ marker: "\\n",
13338
+ name: "newline"
13329
13339
  },
13330
- datetime(e) {
13331
- return {
13332
- type: "datetime",
13333
- ...e
13334
- };
13340
+ "\r": {
13341
+ marker: "\\r",
13342
+ name: "carriage return"
13343
+ }
13344
+ };
13345
+ function renderWhitespaceMarkers(e) {
13346
+ return [
13347
+ ...e
13348
+ ].map((e2, t) => {
13349
+ let n = WHITESPACE_CHARS[e2];
13350
+ return (0, import_jsx_runtime.jsx)("span", {
13351
+ className: "mr-0.5 last:mr-0",
13352
+ children: n ? n.marker : `\\u${(e2.codePointAt(0) ?? 0).toString(16).padStart(4, "0")}`
13353
+ }, t);
13354
+ });
13355
+ }
13356
+ function describeWhitespace(e) {
13357
+ var _a2;
13358
+ let t = {};
13359
+ for (let n of e) {
13360
+ let e2 = ((_a2 = WHITESPACE_CHARS[n]) == null ? void 0 : _a2.name) ?? "unicode whitespace";
13361
+ t[e2] = (t[e2] ?? 0) + 1;
13362
+ }
13363
+ return Object.entries(t).map(([e2, t2]) => `${t2} ${e2}${t2 > 1 ? "s" : ""}`).join(", ");
13364
+ }
13365
+ var SENTINEL_CONFIG = {
13366
+ null: {
13367
+ label: () => "None",
13368
+ tooltip: () => "None",
13369
+ ariaLabel: () => "None"
13335
13370
  },
13336
- time(e) {
13337
- return {
13338
- type: "time",
13339
- ...e
13340
- };
13371
+ "empty-string": {
13372
+ label: () => "<empty>",
13373
+ tooltip: () => "<empty>",
13374
+ ariaLabel: () => "empty string"
13341
13375
  },
13342
- boolean(e) {
13343
- return {
13344
- type: "boolean",
13345
- ...e
13346
- };
13376
+ whitespace: {
13377
+ label: (e) => renderWhitespaceMarkers(String(e)),
13378
+ tooltip: (e) => describeWhitespace(String(e)),
13379
+ ariaLabel: (e) => describeWhitespace(String(e))
13347
13380
  },
13348
- select(e) {
13349
- return {
13381
+ nan: {
13382
+ label: () => "NaN",
13383
+ tooltip: () => "NaN",
13384
+ ariaLabel: () => "NaN"
13385
+ },
13386
+ "positive-infinity": {
13387
+ label: () => "inf",
13388
+ tooltip: () => "Infinity",
13389
+ ariaLabel: () => "infinity"
13390
+ },
13391
+ "negative-infinity": {
13392
+ label: () => "-inf",
13393
+ tooltip: () => "-Infinity",
13394
+ ariaLabel: () => "negative infinity"
13395
+ },
13396
+ nat: {
13397
+ label: () => "NaT",
13398
+ tooltip: () => "NaT (Not a Time)",
13399
+ ariaLabel: () => "Not a Time"
13400
+ }
13401
+ };
13402
+ function WhitespaceMarkers(e) {
13403
+ let t = (0, import_compiler_runtime$29.c)(7), { value: n } = e;
13404
+ if (!n) return null;
13405
+ let i;
13406
+ t[0] === n ? i = t[1] : (i = describeWhitespace(n), t[0] = n, t[1] = i);
13407
+ let a = i, o;
13408
+ t[2] === n ? o = t[3] : (o = renderWhitespaceMarkers(n), t[2] = n, t[3] = o);
13409
+ let s;
13410
+ return t[4] !== a || t[5] !== o ? (s = (0, import_jsx_runtime.jsx)("span", {
13411
+ className: "text-muted-foreground opacity-60",
13412
+ "aria-label": a,
13413
+ title: a,
13414
+ children: o
13415
+ }), t[4] = a, t[5] = o, t[6] = s) : s = t[6], s;
13416
+ }
13417
+ function SentinelCell(e) {
13418
+ let t = (0, import_compiler_runtime$29.c)(15), { sentinel: n } = e, i = SENTINEL_CONFIG[n.type], a;
13419
+ t[0] !== i || t[1] !== n.value ? (a = i.label(n.value), t[0] = i, t[1] = n.value, t[2] = a) : a = t[2];
13420
+ let o = a, s;
13421
+ t[3] !== i || t[4] !== n.value ? (s = i.tooltip(n.value), t[3] = i, t[4] = n.value, t[5] = s) : s = t[5];
13422
+ let c = s, d;
13423
+ t[6] !== i || t[7] !== n.value ? (d = i.ariaLabel(n.value), t[6] = i, t[7] = n.value, t[8] = d) : d = t[8];
13424
+ let f = d, h;
13425
+ t[9] === o ? h = t[10] : (h = (0, import_jsx_runtime.jsx)("span", {
13426
+ className: "opacity-70",
13427
+ children: o
13428
+ }), t[9] = o, t[10] = h);
13429
+ let _;
13430
+ return t[11] !== f || t[12] !== h || t[13] !== c ? (_ = (0, import_jsx_runtime.jsx)("span", {
13431
+ className: "italic text-muted-foreground bg-muted rounded px-1",
13432
+ "aria-label": f,
13433
+ title: c,
13434
+ children: h
13435
+ }), t[11] = f, t[12] = h, t[13] = c, t[14] = _) : _ = t[14], _;
13436
+ }
13437
+ var import_compiler_runtime$28 = require_compiler_runtime();
13438
+ const MimeCell = (e) => {
13439
+ let t = (0, import_compiler_runtime$28.c)(6), { value: n } = e, i;
13440
+ t[0] !== n.data || t[1] !== n.mimetype ? (i = {
13441
+ channel: "output",
13442
+ data: n.data,
13443
+ mimetype: n.mimetype,
13444
+ timestamp: 0
13445
+ }, t[0] = n.data, t[1] = n.mimetype, t[2] = i) : i = t[2];
13446
+ let o = i, s;
13447
+ t[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (s = cn("flex items-center space-x-2"), t[3] = s) : s = t[3];
13448
+ let c;
13449
+ return t[4] === o ? c = t[5] : (c = (0, import_jsx_runtime.jsx)("div", {
13450
+ className: s,
13451
+ children: (0, import_jsx_runtime.jsx)(OutputRenderer, {
13452
+ message: o
13453
+ })
13454
+ }), t[4] = o, t[5] = c), c;
13455
+ };
13456
+ function isMimeValue(e) {
13457
+ return typeof e == "object" && !!e && "mimetype" in e && "data" in e;
13458
+ }
13459
+ getMimeValues = function(e) {
13460
+ if (isMimeValue(e)) return [
13461
+ e
13462
+ ];
13463
+ if (typeof e == "object" && e && ("_serialized_mime_bundle" in e || "serialized_mime_bundle" in e)) {
13464
+ let t = e, n = t._serialized_mime_bundle || t.serialized_mime_bundle;
13465
+ if (isMimeValue(n)) return [
13466
+ n
13467
+ ];
13468
+ }
13469
+ if (Array.isArray(e) && e.every(isMimeValue)) return e.map((e2) => e2);
13470
+ };
13471
+ toFieldTypes = function(e) {
13472
+ return new Map(e.map(([e2, [t]]) => [
13473
+ e2,
13474
+ t
13475
+ ]));
13476
+ };
13477
+ SELECT_COLUMN_ID = "__select__";
13478
+ INDEX_COLUMN_NAME = "_marimo_row_id";
13479
+ TOO_MANY_ROWS = "too_many";
13480
+ function isNumericType(e) {
13481
+ return e === "number" || e === "integer";
13482
+ }
13483
+ function isTemporalType(e) {
13484
+ return e === "date" || e === "datetime" || e === "time";
13485
+ }
13486
+ function extractTimezone(e) {
13487
+ var _a2, _b;
13488
+ if (e) return (_b = (_a2 = /^datetime(?:64)?\[[^,]+,([^,]+)]$/.exec(e)) == null ? void 0 : _a2[1]) == null ? void 0 : _b.trim();
13489
+ }
13490
+ var WHITESPACE_ONLY_RE = /^[\s]+$/, WHITESPACE_CHAR_RE = /\s/, EDGE_WHITESPACE_RE = /^(\s*)([\s\S]*?)(\s*)$/;
13491
+ function splitLeadingTrailingWhitespace(e) {
13492
+ let t = {
13493
+ leading: "",
13494
+ middle: "",
13495
+ trailing: ""
13496
+ };
13497
+ if (e.length === 0) return t;
13498
+ let n = WHITESPACE_CHAR_RE.test(e[0]), i = WHITESPACE_CHAR_RE.test(e[e.length - 1]);
13499
+ if (!n && !i) return t.middle = e, t;
13500
+ let a = EDGE_WHITESPACE_RE.exec(e);
13501
+ return a ? (t.leading = a[1] ?? "", t.middle = a[2] ?? "", t.trailing = a[3] ?? "", t) : (t.middle = e, t);
13502
+ }
13503
+ loadTableData = async function(e) {
13504
+ return Array.isArray(e) ? e : e.startsWith("{") || e.startsWith("[") ? jsonParseWithSpecialChar(e) : (e = await vegaLoadData(e, {
13505
+ type: "json"
13506
+ }, {
13507
+ handleBigIntAndNumberLike: true
13508
+ }), e);
13509
+ };
13510
+ loadTableAndRawData = async function(e, t) {
13511
+ return t ? Promise.all([
13512
+ loadTableData(e),
13513
+ loadTableData(t)
13514
+ ]) : [
13515
+ await loadTableData(e),
13516
+ void 0
13517
+ ];
13518
+ };
13519
+ function getStableRowId(e) {
13520
+ if (e && typeof e == "object" && "_marimo_row_id" in e) return String(e[INDEX_COLUMN_NAME]);
13521
+ }
13522
+ getPageIndexForRow = function(e, t, n) {
13523
+ let i = t * n, a = i + n - 1;
13524
+ return e < i || e > a ? Math.floor(e / n) : null;
13525
+ };
13526
+ var NUMERIC_STRING_SPECIALS = {
13527
+ NaN: "nan",
13528
+ Infinity: "positive-infinity",
13529
+ "-Infinity": "negative-infinity",
13530
+ inf: "positive-infinity",
13531
+ "-inf": "negative-infinity"
13532
+ };
13533
+ function detectSentinel(e, t) {
13534
+ if (e == null) return {
13535
+ type: "null",
13536
+ value: e
13537
+ };
13538
+ if (typeof e == "string") {
13539
+ if (e === "") return {
13540
+ type: "empty-string",
13541
+ value: e
13542
+ };
13543
+ if (WHITESPACE_ONLY_RE.test(e)) return {
13544
+ type: "whitespace",
13545
+ value: e
13546
+ };
13547
+ if (isNumericType(t)) {
13548
+ let t2 = NUMERIC_STRING_SPECIALS[e];
13549
+ if (t2) return {
13550
+ type: t2,
13551
+ value: e
13552
+ };
13553
+ }
13554
+ return isTemporalType(t) && e === "NaT" ? {
13555
+ type: "nat",
13556
+ value: e
13557
+ } : null;
13558
+ }
13559
+ return typeof e == "number" ? Number.isNaN(e) ? {
13560
+ type: "nan",
13561
+ value: e
13562
+ } : e === Infinity ? {
13563
+ type: "positive-infinity",
13564
+ value: e
13565
+ } : e === -Infinity ? {
13566
+ type: "negative-infinity",
13567
+ value: e
13568
+ } : null : null;
13569
+ }
13570
+ function stringifyUnknownValue(e) {
13571
+ let { value: t, nullAsEmptyString: n = false } = e;
13572
+ return typeof t == "object" && t ? JSON.stringify(t) : t === null && n ? "" : String(t);
13573
+ }
13574
+ function stripHtml(e) {
13575
+ let t = document.createElement("div");
13576
+ return t.innerHTML = e, (t.textContent || t.innerText || "").trim() || e;
13577
+ }
13578
+ var HTML_MIMETYPES = /* @__PURE__ */ new Set([
13579
+ "text/html",
13580
+ "text/markdown"
13581
+ ]);
13582
+ function isRecord(e) {
13583
+ return typeof e == "object" && !!e && !Array.isArray(e);
13584
+ }
13585
+ function getClipboardContent(e, t) {
13586
+ let n = typeof t == "object" && t ? getMimeValues(t) : void 0, i;
13587
+ if (n) {
13588
+ let e2 = n.filter((e3) => HTML_MIMETYPES.has(e3.mimetype)).map((e3) => e3.data);
13589
+ i = e2.length > 0 ? e2.join("") : void 0;
13590
+ }
13591
+ let a;
13592
+ return a = e !== void 0 && e !== t ? stringifyUnknownValue({
13593
+ value: e
13594
+ }) : n ? n.map((e2) => HTML_MIMETYPES.has(e2.mimetype) ? stripHtml(e2.data) : e2.data).join(", ") : stringifyUnknownValue({
13595
+ value: t
13596
+ }), {
13597
+ text: a,
13598
+ html: i
13599
+ };
13600
+ }
13601
+ function getRawValue(e, t, n) {
13602
+ var _a2;
13603
+ let i = (_a2 = e.options.meta) == null ? void 0 : _a2.rawData;
13604
+ if (i) {
13605
+ let e2 = i[t];
13606
+ if (isRecord(e2)) return e2[n];
13607
+ }
13608
+ }
13609
+ var TOP_K_ROWS = 30;
13610
+ const FilterByValuesPicker = ({ column: e, calculateTopKRows: t, chosenValues: n, onChange: i }) => {
13611
+ let [o, s] = (0, import_react.useState)(false), c = (0, import_react.useMemo)(() => new Set(n), [
13612
+ n
13613
+ ]), d = (0, import_react.useMemo)(() => c.size === 0 ? "Select values\u2026" : `[${[
13614
+ ...c
13615
+ ].map((e2) => stringifyUnknownValue({
13616
+ value: e2
13617
+ })).join(", ")}]`, [
13618
+ c
13619
+ ]);
13620
+ return (0, import_jsx_runtime.jsxs)(Popover, {
13621
+ open: o,
13622
+ onOpenChange: s,
13623
+ children: [
13624
+ (0, import_jsx_runtime.jsx)(PopoverTrigger, {
13625
+ asChild: true,
13626
+ children: (0, import_jsx_runtime.jsxs)(Button, {
13627
+ variant: "outline",
13628
+ size: "xs",
13629
+ className: "h-6 mb-1 w-full justify-between font-normal",
13630
+ children: [
13631
+ (0, import_jsx_runtime.jsx)("span", {
13632
+ className: cn("truncate", c.size === 0 && "text-muted-foreground"),
13633
+ children: d
13634
+ }),
13635
+ (0, import_jsx_runtime.jsx)(ChevronDown, {
13636
+ className: "h-4 w-4 opacity-50 shrink-0"
13637
+ })
13638
+ ]
13639
+ })
13640
+ }),
13641
+ (0, import_jsx_runtime.jsx)(PopoverContent, {
13642
+ className: "w-80 p-0",
13643
+ children: (0, import_jsx_runtime.jsx)(FilterByValuesList, {
13644
+ column: e,
13645
+ calculateTopKRows: t,
13646
+ chosenValues: c,
13647
+ onChange: i
13648
+ })
13649
+ })
13650
+ ]
13651
+ });
13652
+ }, FilterByValuesList = ({ column: e, calculateTopKRows: t, chosenValues: i, onChange: a }) => {
13653
+ let [o, s] = (0, import_react.useState)(""), { data: c, isPending: d, error: f } = useAsyncData(async () => t ? (await t({
13654
+ column: e.id,
13655
+ k: TOP_K_ROWS
13656
+ })).data : null, [
13657
+ t,
13658
+ e.id
13659
+ ]), h = (0, import_react.useMemo)(() => {
13660
+ if (!c) return [];
13661
+ try {
13662
+ return c.filter(([e2, t2]) => {
13663
+ if (e2 === void 0) return false;
13664
+ let n = String(e2);
13665
+ return smartMatch(o, n) || n.toLowerCase().includes(o.toLowerCase());
13666
+ });
13667
+ } catch (e2) {
13668
+ return Logger.error("Error filtering data", e2), [];
13669
+ }
13670
+ }, [
13671
+ c,
13672
+ o
13673
+ ]), _ = (e2) => {
13674
+ a([
13675
+ ...Sets.toggle(i, e2)
13676
+ ]);
13677
+ }, v = h.length > 0 && h.every(([e2]) => i.has(e2)), y = v ? true : i.size > 0 ? "indeterminate" : false;
13678
+ return d ? (0, import_jsx_runtime.jsx)(Spinner, {
13679
+ size: "medium",
13680
+ className: "mx-auto mt-12 mb-10"
13681
+ }) : f ? (0, import_jsx_runtime.jsx)(ErrorBanner, {
13682
+ error: f,
13683
+ className: "my-10 mx-4"
13684
+ }) : c ? (0, import_jsx_runtime.jsxs)(Command, {
13685
+ className: "text-sm outline-hidden",
13686
+ shouldFilter: false,
13687
+ children: [
13688
+ (0, import_jsx_runtime.jsx)(CommandInput, {
13689
+ placeholder: `Search among the top ${c.length} values`,
13690
+ autoFocus: true,
13691
+ onValueChange: (e2) => s(e2.trim())
13692
+ }),
13693
+ (0, import_jsx_runtime.jsx)(CommandEmpty, {
13694
+ children: "No results found."
13695
+ }),
13696
+ (0, import_jsx_runtime.jsxs)(CommandList, {
13697
+ children: [
13698
+ h.length > 0 && (0, import_jsx_runtime.jsxs)(CommandItem, {
13699
+ value: "__select-all__",
13700
+ className: "border-b rounded-none px-3",
13701
+ onSelect: () => {
13702
+ if (!c) return;
13703
+ let e2 = new Set(i);
13704
+ if (v) for (let [t2] of h) e2.delete(t2);
13705
+ else for (let [t2] of h) e2.add(t2);
13706
+ a([
13707
+ ...e2
13708
+ ]);
13709
+ },
13710
+ children: [
13711
+ (0, import_jsx_runtime.jsx)(Checkbox, {
13712
+ checked: y,
13713
+ "aria-label": "Select all",
13714
+ className: "mr-3 h-3.5 w-3.5"
13715
+ }),
13716
+ (0, import_jsx_runtime.jsx)("span", {
13717
+ className: "font-bold flex-1",
13718
+ children: e.id
13719
+ }),
13720
+ (0, import_jsx_runtime.jsx)("span", {
13721
+ className: "font-bold",
13722
+ children: "Count"
13723
+ })
13724
+ ]
13725
+ }),
13726
+ h.map(([t2, n]) => {
13727
+ var _a2;
13728
+ let a2 = i.has(t2), o2 = stringifyUnknownValue({
13729
+ value: t2
13730
+ }), s2 = detectSentinel(t2, (_a2 = e.columnDef.meta) == null ? void 0 : _a2.dataType);
13731
+ return (0, import_jsx_runtime.jsxs)(CommandItem, {
13732
+ value: o2,
13733
+ className: "not-last:border-b rounded-none px-3",
13734
+ onSelect: () => _(t2),
13735
+ children: [
13736
+ (0, import_jsx_runtime.jsx)(Checkbox, {
13737
+ checked: a2,
13738
+ "aria-label": "Select row",
13739
+ className: "mr-3 h-3.5 w-3.5"
13740
+ }),
13741
+ (0, import_jsx_runtime.jsx)("span", {
13742
+ className: "flex-1 overflow-hidden max-h-20 line-clamp-3",
13743
+ children: s2 ? (0, import_jsx_runtime.jsx)(SentinelCell, {
13744
+ sentinel: s2
13745
+ }) : o2
13746
+ }),
13747
+ (0, import_jsx_runtime.jsx)("span", {
13748
+ className: "ml-3",
13749
+ children: n
13750
+ })
13751
+ ]
13752
+ }, o2);
13753
+ })
13754
+ ]
13755
+ }),
13756
+ c.length === TOP_K_ROWS && (0, import_jsx_runtime.jsxs)("span", {
13757
+ className: "text-xs text-muted-foreground py-1.5 text-center",
13758
+ children: [
13759
+ "Only showing the top ",
13760
+ TOP_K_ROWS,
13761
+ " values"
13762
+ ]
13763
+ })
13764
+ ]
13765
+ }) : (0, import_jsx_runtime.jsx)("div", {
13766
+ className: "py-6 px-4 text-sm text-muted-foreground text-center",
13767
+ children: "No values available"
13768
+ });
13769
+ }, Filter = {
13770
+ number(e) {
13771
+ return {
13772
+ type: "number",
13773
+ ...e
13774
+ };
13775
+ },
13776
+ text(e) {
13777
+ return {
13778
+ type: "text",
13779
+ ...e
13780
+ };
13781
+ },
13782
+ date(e) {
13783
+ return {
13784
+ type: "date",
13785
+ ...e
13786
+ };
13787
+ },
13788
+ datetime(e) {
13789
+ return {
13790
+ type: "datetime",
13791
+ ...e
13792
+ };
13793
+ },
13794
+ time(e) {
13795
+ return {
13796
+ type: "time",
13797
+ ...e
13798
+ };
13799
+ },
13800
+ boolean(e) {
13801
+ return {
13802
+ type: "boolean",
13803
+ ...e
13804
+ };
13805
+ },
13806
+ select(e) {
13807
+ return {
13350
13808
  type: "select",
13351
13809
  ...e
13352
13810
  };
@@ -13449,150 +13907,40 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
13449
13907
  negate: false
13450
13908
  }
13451
13909
  ] : t.value ? [] : [
13452
- {
13453
- column_id: i,
13454
- operator: "is_false",
13455
- value: void 0,
13456
- type: "condition",
13457
- negate: false
13458
- }
13459
- ];
13460
- case "select": {
13461
- let e2 = t.operator;
13462
- return t.operator !== "in" && t.operator !== "not_in" && (Logger.warn("Invalid operator for select filter", {
13463
- operator: t.operator
13464
- }), e2 = "in"), [
13465
- {
13466
- column_id: i,
13467
- operator: e2,
13468
- value: t.options,
13469
- type: "condition",
13470
- negate: false
13471
- }
13472
- ];
13473
- }
13474
- default:
13475
- assertNever(t);
13476
- }
13477
- }
13478
- filtersToFilterGroup = function(e) {
13479
- return {
13480
- type: "group",
13481
- operator: "and",
13482
- children: e.flatMap((e2) => filterToFilterCondition(e2.id, e2.value)),
13483
- negate: false
13484
- };
13485
- };
13486
- var import_compiler_runtime$29 = require_compiler_runtime(), WHITESPACE_CHARS = {
13487
- " ": {
13488
- marker: "\u2423",
13489
- name: "space"
13490
- },
13491
- " ": {
13492
- marker: "\\t",
13493
- name: "tab"
13494
- },
13495
- "\n": {
13496
- marker: "\\n",
13497
- name: "newline"
13498
- },
13499
- "\r": {
13500
- marker: "\\r",
13501
- name: "carriage return"
13502
- }
13503
- };
13504
- function renderWhitespaceMarkers(e) {
13505
- return [
13506
- ...e
13507
- ].map((e2, t) => {
13508
- let n = WHITESPACE_CHARS[e2];
13509
- return (0, import_jsx_runtime.jsx)("span", {
13510
- className: "mr-0.5 last:mr-0",
13511
- children: n ? n.marker : `\\u${(e2.codePointAt(0) ?? 0).toString(16).padStart(4, "0")}`
13512
- }, t);
13513
- });
13514
- }
13515
- function describeWhitespace(e) {
13516
- var _a2;
13517
- let t = {};
13518
- for (let n of e) {
13519
- let e2 = ((_a2 = WHITESPACE_CHARS[n]) == null ? void 0 : _a2.name) ?? "unicode whitespace";
13520
- t[e2] = (t[e2] ?? 0) + 1;
13521
- }
13522
- return Object.entries(t).map(([e2, t2]) => `${t2} ${e2}${t2 > 1 ? "s" : ""}`).join(", ");
13523
- }
13524
- var SENTINEL_CONFIG = {
13525
- null: {
13526
- label: () => "None",
13527
- tooltip: () => "None",
13528
- ariaLabel: () => "None"
13529
- },
13530
- "empty-string": {
13531
- label: () => "<empty>",
13532
- tooltip: () => "<empty>",
13533
- ariaLabel: () => "empty string"
13534
- },
13535
- whitespace: {
13536
- label: (e) => renderWhitespaceMarkers(String(e)),
13537
- tooltip: (e) => describeWhitespace(String(e)),
13538
- ariaLabel: (e) => describeWhitespace(String(e))
13539
- },
13540
- nan: {
13541
- label: () => "NaN",
13542
- tooltip: () => "NaN",
13543
- ariaLabel: () => "NaN"
13544
- },
13545
- "positive-infinity": {
13546
- label: () => "inf",
13547
- tooltip: () => "Infinity",
13548
- ariaLabel: () => "infinity"
13549
- },
13550
- "negative-infinity": {
13551
- label: () => "-inf",
13552
- tooltip: () => "-Infinity",
13553
- ariaLabel: () => "negative infinity"
13554
- },
13555
- nat: {
13556
- label: () => "NaT",
13557
- tooltip: () => "NaT (Not a Time)",
13558
- ariaLabel: () => "Not a Time"
13910
+ {
13911
+ column_id: i,
13912
+ operator: "is_false",
13913
+ value: void 0,
13914
+ type: "condition",
13915
+ negate: false
13916
+ }
13917
+ ];
13918
+ case "select": {
13919
+ let e2 = t.operator;
13920
+ return t.operator !== "in" && t.operator !== "not_in" && (Logger.warn("Invalid operator for select filter", {
13921
+ operator: t.operator
13922
+ }), e2 = "in"), [
13923
+ {
13924
+ column_id: i,
13925
+ operator: e2,
13926
+ value: t.options,
13927
+ type: "condition",
13928
+ negate: false
13929
+ }
13930
+ ];
13931
+ }
13932
+ default:
13933
+ assertNever(t);
13559
13934
  }
13560
- };
13561
- function WhitespaceMarkers(e) {
13562
- let t = (0, import_compiler_runtime$29.c)(7), { value: n } = e;
13563
- if (!n) return null;
13564
- let i;
13565
- t[0] === n ? i = t[1] : (i = describeWhitespace(n), t[0] = n, t[1] = i);
13566
- let a = i, o;
13567
- t[2] === n ? o = t[3] : (o = renderWhitespaceMarkers(n), t[2] = n, t[3] = o);
13568
- let s;
13569
- return t[4] !== a || t[5] !== o ? (s = (0, import_jsx_runtime.jsx)("span", {
13570
- className: "text-muted-foreground opacity-60",
13571
- "aria-label": a,
13572
- title: a,
13573
- children: o
13574
- }), t[4] = a, t[5] = o, t[6] = s) : s = t[6], s;
13575
- }
13576
- function SentinelCell(e) {
13577
- let t = (0, import_compiler_runtime$29.c)(15), { sentinel: n } = e, i = SENTINEL_CONFIG[n.type], a;
13578
- t[0] !== i || t[1] !== n.value ? (a = i.label(n.value), t[0] = i, t[1] = n.value, t[2] = a) : a = t[2];
13579
- let o = a, s;
13580
- t[3] !== i || t[4] !== n.value ? (s = i.tooltip(n.value), t[3] = i, t[4] = n.value, t[5] = s) : s = t[5];
13581
- let c = s, d;
13582
- t[6] !== i || t[7] !== n.value ? (d = i.ariaLabel(n.value), t[6] = i, t[7] = n.value, t[8] = d) : d = t[8];
13583
- let f = d, h;
13584
- t[9] === o ? h = t[10] : (h = (0, import_jsx_runtime.jsx)("span", {
13585
- className: "opacity-70",
13586
- children: o
13587
- }), t[9] = o, t[10] = h);
13588
- let _;
13589
- return t[11] !== f || t[12] !== h || t[13] !== c ? (_ = (0, import_jsx_runtime.jsx)("span", {
13590
- className: "italic text-muted-foreground bg-muted rounded px-1",
13591
- "aria-label": f,
13592
- title: c,
13593
- children: h
13594
- }), t[11] = f, t[12] = h, t[13] = c, t[14] = _) : _ = t[14], _;
13595
13935
  }
13936
+ filtersToFilterGroup = function(e) {
13937
+ return {
13938
+ type: "group",
13939
+ operator: "and",
13940
+ children: e.flatMap((e2) => filterToFilterCondition(e2.id, e2.value)),
13941
+ negate: false
13942
+ };
13943
+ };
13596
13944
  function functionalUpdate(e, t) {
13597
13945
  return typeof e == "function" ? e(t) : e;
13598
13946
  }
@@ -15638,7 +15986,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
15638
15986
  ],
15639
15987
  unknown: []
15640
15988
  };
15641
- var import_compiler_runtime$28 = require_compiler_runtime();
15989
+ var import_compiler_runtime$27 = require_compiler_runtime();
15642
15990
  function renderFormatOptions(e, t) {
15643
15991
  var _a2, _b, _c;
15644
15992
  let n = (_a2 = e.columnDef.meta) == null ? void 0 : _a2.dataType, i = n ? formatOptions[n] : [];
@@ -15837,7 +16185,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
15837
16185
  }) : null;
15838
16186
  }
15839
16187
  const ClearFilterMenuItem = (e) => {
15840
- let t = (0, import_compiler_runtime$28.c)(5), { column: n } = e, i;
16188
+ let t = (0, import_compiler_runtime$27.c)(5), { column: n } = e, i;
15841
16189
  t[0] === n ? i = t[1] : (i = () => n.setFilterValue(void 0), t[0] = n, t[1] = i);
15842
16190
  let a;
15843
16191
  t[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (a = (0, import_jsx_runtime.jsx)(FunnelX, {
@@ -15867,7 +16215,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
15867
16215
  });
15868
16216
  }
15869
16217
  const FilterButtons = (e) => {
15870
- let t = (0, import_compiler_runtime$28.c)(8), { onApply: n, onClear: i, clearButtonDisabled: a } = e, o;
16218
+ let t = (0, import_compiler_runtime$27.c)(8), { onApply: n, onClear: i, clearButtonDisabled: a } = e, o;
15871
16219
  t[0] === n ? o = t[1] : (o = (0, import_jsx_runtime.jsx)(Button, {
15872
16220
  variant: "link",
15873
16221
  size: "sm",
@@ -15876,196 +16224,22 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
15876
16224
  }), t[0] = n, t[1] = o);
15877
16225
  let s;
15878
16226
  t[2] !== a || t[3] !== i ? (s = (0, import_jsx_runtime.jsx)(Button, {
15879
- variant: "linkDestructive",
15880
- size: "sm",
15881
- className: "",
15882
- onClick: i,
15883
- disabled: a,
15884
- children: "Clear"
15885
- }), t[2] = a, t[3] = i, t[4] = s) : s = t[4];
15886
- let c;
15887
- return t[5] !== o || t[6] !== s ? (c = (0, import_jsx_runtime.jsxs)("div", {
15888
- className: "flex gap-2 px-2 justify-between",
15889
- children: [
15890
- o,
15891
- s
15892
- ]
15893
- }), t[5] = o, t[6] = s, t[7] = c) : c = t[7], c;
15894
- };
15895
- var import_compiler_runtime$27 = require_compiler_runtime();
15896
- const MimeCell = (e) => {
15897
- let t = (0, import_compiler_runtime$27.c)(6), { value: n } = e, i;
15898
- t[0] !== n.data || t[1] !== n.mimetype ? (i = {
15899
- channel: "output",
15900
- data: n.data,
15901
- mimetype: n.mimetype,
15902
- timestamp: 0
15903
- }, t[0] = n.data, t[1] = n.mimetype, t[2] = i) : i = t[2];
15904
- let o = i, s;
15905
- t[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (s = cn("flex items-center space-x-2"), t[3] = s) : s = t[3];
15906
- let c;
15907
- return t[4] === o ? c = t[5] : (c = (0, import_jsx_runtime.jsx)("div", {
15908
- className: s,
15909
- children: (0, import_jsx_runtime.jsx)(OutputRenderer, {
15910
- message: o
15911
- })
15912
- }), t[4] = o, t[5] = c), c;
15913
- };
15914
- function isMimeValue(e) {
15915
- return typeof e == "object" && !!e && "mimetype" in e && "data" in e;
15916
- }
15917
- getMimeValues = function(e) {
15918
- if (isMimeValue(e)) return [
15919
- e
15920
- ];
15921
- if (typeof e == "object" && e && ("_serialized_mime_bundle" in e || "serialized_mime_bundle" in e)) {
15922
- let t = e, n = t._serialized_mime_bundle || t.serialized_mime_bundle;
15923
- if (isMimeValue(n)) return [
15924
- n
15925
- ];
15926
- }
15927
- if (Array.isArray(e) && e.every(isMimeValue)) return e.map((e2) => e2);
15928
- };
15929
- toFieldTypes = function(e) {
15930
- return new Map(e.map(([e2, [t]]) => [
15931
- e2,
15932
- t
15933
- ]));
15934
- };
15935
- SELECT_COLUMN_ID = "__select__";
15936
- INDEX_COLUMN_NAME = "_marimo_row_id";
15937
- TOO_MANY_ROWS = "too_many";
15938
- function isNumericType(e) {
15939
- return e === "number" || e === "integer";
15940
- }
15941
- function isTemporalType(e) {
15942
- return e === "date" || e === "datetime" || e === "time";
15943
- }
15944
- function extractTimezone(e) {
15945
- var _a2, _b;
15946
- if (e) return (_b = (_a2 = /^datetime(?:64)?\[[^,]+,([^,]+)]$/.exec(e)) == null ? void 0 : _a2[1]) == null ? void 0 : _b.trim();
15947
- }
15948
- var WHITESPACE_ONLY_RE = /^[\s]+$/, WHITESPACE_CHAR_RE = /\s/, EDGE_WHITESPACE_RE = /^(\s*)([\s\S]*?)(\s*)$/;
15949
- function splitLeadingTrailingWhitespace(e) {
15950
- let t = {
15951
- leading: "",
15952
- middle: "",
15953
- trailing: ""
15954
- };
15955
- if (e.length === 0) return t;
15956
- let n = WHITESPACE_CHAR_RE.test(e[0]), i = WHITESPACE_CHAR_RE.test(e[e.length - 1]);
15957
- if (!n && !i) return t.middle = e, t;
15958
- let a = EDGE_WHITESPACE_RE.exec(e);
15959
- return a ? (t.leading = a[1] ?? "", t.middle = a[2] ?? "", t.trailing = a[3] ?? "", t) : (t.middle = e, t);
15960
- }
15961
- loadTableData = async function(e) {
15962
- return Array.isArray(e) ? e : e.startsWith("{") || e.startsWith("[") ? jsonParseWithSpecialChar(e) : (e = await vegaLoadData(e, {
15963
- type: "json"
15964
- }, {
15965
- handleBigIntAndNumberLike: true
15966
- }), e);
15967
- };
15968
- loadTableAndRawData = async function(e, t) {
15969
- return t ? Promise.all([
15970
- loadTableData(e),
15971
- loadTableData(t)
15972
- ]) : [
15973
- await loadTableData(e),
15974
- void 0
15975
- ];
15976
- };
15977
- function getStableRowId(e) {
15978
- if (e && typeof e == "object" && "_marimo_row_id" in e) return String(e[INDEX_COLUMN_NAME]);
15979
- }
15980
- getPageIndexForRow = function(e, t, n) {
15981
- let i = t * n, a = i + n - 1;
15982
- return e < i || e > a ? Math.floor(e / n) : null;
15983
- };
15984
- var NUMERIC_STRING_SPECIALS = {
15985
- NaN: "nan",
15986
- Infinity: "positive-infinity",
15987
- "-Infinity": "negative-infinity",
15988
- inf: "positive-infinity",
15989
- "-inf": "negative-infinity"
15990
- };
15991
- function detectSentinel(e, t) {
15992
- if (e == null) return {
15993
- type: "null",
15994
- value: e
15995
- };
15996
- if (typeof e == "string") {
15997
- if (e === "") return {
15998
- type: "empty-string",
15999
- value: e
16000
- };
16001
- if (WHITESPACE_ONLY_RE.test(e)) return {
16002
- type: "whitespace",
16003
- value: e
16004
- };
16005
- if (isNumericType(t)) {
16006
- let t2 = NUMERIC_STRING_SPECIALS[e];
16007
- if (t2) return {
16008
- type: t2,
16009
- value: e
16010
- };
16011
- }
16012
- return isTemporalType(t) && e === "NaT" ? {
16013
- type: "nat",
16014
- value: e
16015
- } : null;
16016
- }
16017
- return typeof e == "number" ? Number.isNaN(e) ? {
16018
- type: "nan",
16019
- value: e
16020
- } : e === Infinity ? {
16021
- type: "positive-infinity",
16022
- value: e
16023
- } : e === -Infinity ? {
16024
- type: "negative-infinity",
16025
- value: e
16026
- } : null : null;
16027
- }
16028
- function stringifyUnknownValue(e) {
16029
- let { value: t, nullAsEmptyString: n = false } = e;
16030
- return typeof t == "object" && t ? JSON.stringify(t) : t === null && n ? "" : String(t);
16031
- }
16032
- function stripHtml(e) {
16033
- let t = document.createElement("div");
16034
- return t.innerHTML = e, (t.textContent || t.innerText || "").trim() || e;
16035
- }
16036
- var HTML_MIMETYPES = /* @__PURE__ */ new Set([
16037
- "text/html",
16038
- "text/markdown"
16039
- ]);
16040
- function isRecord(e) {
16041
- return typeof e == "object" && !!e && !Array.isArray(e);
16042
- }
16043
- function getClipboardContent(e, t) {
16044
- let n = typeof t == "object" && t ? getMimeValues(t) : void 0, i;
16045
- if (n) {
16046
- let e2 = n.filter((e3) => HTML_MIMETYPES.has(e3.mimetype)).map((e3) => e3.data);
16047
- i = e2.length > 0 ? e2.join("") : void 0;
16048
- }
16049
- let a;
16050
- return a = e !== void 0 && e !== t ? stringifyUnknownValue({
16051
- value: e
16052
- }) : n ? n.map((e2) => HTML_MIMETYPES.has(e2.mimetype) ? stripHtml(e2.data) : e2.data).join(", ") : stringifyUnknownValue({
16053
- value: t
16054
- }), {
16055
- text: a,
16056
- html: i
16057
- };
16058
- }
16059
- function getRawValue(e, t, n) {
16060
- var _a2;
16061
- let i = (_a2 = e.options.meta) == null ? void 0 : _a2.rawData;
16062
- if (i) {
16063
- let e2 = i[t];
16064
- if (isRecord(e2)) return e2[n];
16065
- }
16066
- }
16067
- var TOP_K_ROWS$1 = 30;
16068
- const DataTableColumnHeader = ({ column: e, header: t, subheader: n, className: i, calculateTopKRows: o, table: s }) => {
16227
+ variant: "linkDestructive",
16228
+ size: "sm",
16229
+ className: "",
16230
+ onClick: i,
16231
+ disabled: a,
16232
+ children: "Clear"
16233
+ }), t[2] = a, t[3] = i, t[4] = s) : s = t[4];
16234
+ let c;
16235
+ return t[5] !== o || t[6] !== s ? (c = (0, import_jsx_runtime.jsxs)("div", {
16236
+ className: "flex gap-2 px-2 justify-between",
16237
+ children: [
16238
+ o,
16239
+ s
16240
+ ]
16241
+ }), t[5] = o, t[6] = s, t[7] = c) : c = t[7], c;
16242
+ }, DataTableColumnHeader = ({ column: e, header: t, subheader: n, className: i, calculateTopKRows: o, table: s }) => {
16069
16243
  let [c, d] = (0, import_react.useState)(false), { locale: f } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();
16070
16244
  if (!t) return null;
16071
16245
  if (!e.getCanSort() && !e.getCanFilter()) return (0, import_jsx_runtime.jsxs)("div", {
@@ -16384,136 +16558,20 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
16384
16558
  })
16385
16559
  ]
16386
16560
  });
16387
- }, PopoverFilterByValues = ({ setIsFilterValueOpen: e, calculateTopKRows: t, column: i }) => {
16388
- let [a, o] = (0, import_react.useState)(/* @__PURE__ */ new Set()), [s, c] = (0, import_react.useState)(""), { data: d, isPending: h, error: _ } = useAsyncData(async () => t ? (await t({
16389
- column: i.id,
16390
- k: TOP_K_ROWS$1
16391
- })).data : null, []), v = (0, import_react.useMemo)(() => {
16392
- if (!d) return [];
16393
- try {
16394
- return d.filter(([e2, t2]) => e2 === void 0 ? false : String(e2).toLowerCase().includes(s.toLowerCase()));
16395
- } catch (e2) {
16396
- return Logger.error("Error filtering data", e2), [];
16397
- }
16398
- }, [
16399
- d,
16400
- s
16401
- ]), y;
16402
- h && (y = (0, import_jsx_runtime.jsx)(Spinner, {
16403
- size: "medium",
16404
- className: "mx-auto mt-12 mb-10"
16405
- })), _ && (y = (0, import_jsx_runtime.jsx)(ErrorBanner, {
16406
- error: _,
16407
- className: "my-10 mx-4"
16408
- }));
16409
- let S = (e2) => {
16410
- o((t2) => {
16411
- let n = t2.has(e2), i2 = new Set(t2);
16412
- return n ? i2.delete(e2) : i2.add(e2), i2;
16413
- });
16414
- }, w = (e2) => {
16415
- d && o(e2 ? new Set(v.map(([e3]) => e3)) : /* @__PURE__ */ new Set());
16416
- }, E = () => {
16417
- if (a.size === 0) {
16418
- i.setFilterValue(void 0);
16419
- return;
16420
- }
16421
- i.setFilterValue(Filter.select({
16422
- options: [
16423
- ...a
16424
- ],
16425
- operator: "in"
16426
- }));
16561
+ };
16562
+ function seedFromFilter(e) {
16563
+ return e && "type" in e && e.type === "select" ? {
16564
+ values: [
16565
+ ...e.options
16566
+ ],
16567
+ operator: e.operator === "not_in" ? "not_in" : "in"
16568
+ } : {
16569
+ values: [],
16570
+ operator: "in"
16427
16571
  };
16428
- if (d) {
16429
- let e2 = a.size === v.length;
16430
- y = (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
16431
- children: [
16432
- (0, import_jsx_runtime.jsxs)(Command, {
16433
- className: "text-sm outline-hidden",
16434
- shouldFilter: false,
16435
- children: [
16436
- (0, import_jsx_runtime.jsx)(CommandInput, {
16437
- placeholder: `Search among the top ${d.length} values`,
16438
- autoFocus: true,
16439
- onValueChange: (e3) => c(e3.trim())
16440
- }),
16441
- (0, import_jsx_runtime.jsx)(CommandEmpty, {
16442
- children: "No results found."
16443
- }),
16444
- (0, import_jsx_runtime.jsxs)(CommandList, {
16445
- className: "border-b",
16446
- children: [
16447
- v.length > 0 && (0, import_jsx_runtime.jsxs)(CommandItem, {
16448
- value: "__select-all__",
16449
- className: "border-b rounded-none px-3",
16450
- onSelect: () => w(!e2),
16451
- children: [
16452
- (0, import_jsx_runtime.jsx)(Checkbox, {
16453
- checked: a.size === v.length,
16454
- "aria-label": "Select all",
16455
- className: "mr-3 h-3.5 w-3.5"
16456
- }),
16457
- (0, import_jsx_runtime.jsx)("span", {
16458
- className: "font-bold flex-1",
16459
- children: i.id
16460
- }),
16461
- (0, import_jsx_runtime.jsx)("span", {
16462
- className: "font-bold",
16463
- children: "Count"
16464
- })
16465
- ]
16466
- }),
16467
- v.map(([e3, t2], n) => {
16468
- var _a2;
16469
- let o2 = a.has(e3), s2 = stringifyUnknownValue({
16470
- value: e3
16471
- }), c2 = detectSentinel(e3, (_a2 = i.columnDef.meta) == null ? void 0 : _a2.dataType);
16472
- return (0, import_jsx_runtime.jsxs)(CommandItem, {
16473
- value: s2,
16474
- className: "not-last:border-b rounded-none px-3",
16475
- onSelect: () => S(e3),
16476
- children: [
16477
- (0, import_jsx_runtime.jsx)(Checkbox, {
16478
- checked: o2,
16479
- "aria-label": "Select row",
16480
- className: "mr-3 h-3.5 w-3.5"
16481
- }),
16482
- (0, import_jsx_runtime.jsx)("span", {
16483
- className: "flex-1 overflow-hidden max-h-20 line-clamp-3",
16484
- children: c2 ? (0, import_jsx_runtime.jsx)(SentinelCell, {
16485
- sentinel: c2
16486
- }) : s2
16487
- }),
16488
- (0, import_jsx_runtime.jsx)("span", {
16489
- className: "ml-3",
16490
- children: t2
16491
- })
16492
- ]
16493
- }, n);
16494
- })
16495
- ]
16496
- }),
16497
- v.length === TOP_K_ROWS$1 && (0, import_jsx_runtime.jsxs)("span", {
16498
- className: "text-xs text-muted-foreground mt-1.5 text-center",
16499
- children: [
16500
- "Only showing the top ",
16501
- TOP_K_ROWS$1,
16502
- " values"
16503
- ]
16504
- })
16505
- ]
16506
- }),
16507
- (0, import_jsx_runtime.jsx)(FilterButtons, {
16508
- onApply: E,
16509
- onClear: () => {
16510
- o(/* @__PURE__ */ new Set());
16511
- },
16512
- clearButtonDisabled: a.size === 0
16513
- })
16514
- ]
16515
- });
16516
- }
16572
+ }
16573
+ var PopoverFilterByValues = ({ setIsFilterValueOpen: e, calculateTopKRows: t, column: n }) => {
16574
+ let i = seedFromFilter(n.getFilterValue()), [a, o] = (0, import_react.useState)(() => new Set(i.values));
16517
16575
  return (0, import_jsx_runtime.jsxs)(DraggablePopover, {
16518
16576
  open: true,
16519
16577
  onOpenChange: (t2) => !t2 && e(false),
@@ -16530,9 +16588,32 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
16530
16588
  })
16531
16589
  })
16532
16590
  }),
16533
- (0, import_jsx_runtime.jsx)("div", {
16591
+ (0, import_jsx_runtime.jsxs)("div", {
16534
16592
  className: "flex flex-col gap-1.5 py-2",
16535
- children: y
16593
+ children: [
16594
+ (0, import_jsx_runtime.jsx)(FilterByValuesList, {
16595
+ column: n,
16596
+ calculateTopKRows: t,
16597
+ chosenValues: a,
16598
+ onChange: (e2) => o(new Set(e2))
16599
+ }),
16600
+ (0, import_jsx_runtime.jsx)(FilterButtons, {
16601
+ onApply: () => {
16602
+ if (a.size === 0) {
16603
+ n.setFilterValue(void 0);
16604
+ return;
16605
+ }
16606
+ n.setFilterValue(Filter.select({
16607
+ options: [
16608
+ ...a
16609
+ ],
16610
+ operator: i.operator
16611
+ }));
16612
+ },
16613
+ onClear: () => o(/* @__PURE__ */ new Set()),
16614
+ clearButtonDisabled: a.size === 0
16615
+ })
16616
+ ]
16536
16617
  })
16537
16618
  ]
16538
16619
  });
@@ -20343,184 +20424,7 @@ Database schema: ${n}`), (_a3 = t2.aiFix) == null ? void 0 : _a3.setAiCompletion
20343
20424
  }), n[9] = i, n[10] = d, n[11] = t, n[12] = _, n[13] = v, n[14] = y, n[15] = f, n[16] = S) : S = n[16], S;
20344
20425
  });
20345
20426
  ComboboxItem.displayName = "ComboboxItem";
20346
- const Sets = {
20347
- merge(...e) {
20348
- let t = /* @__PURE__ */ new Set();
20349
- for (let n of e) for (let e2 of n) t.add(e2);
20350
- return t;
20351
- },
20352
- equals(e, t) {
20353
- if (e.size !== t.size) return false;
20354
- for (let n of e) if (!t.has(n)) return false;
20355
- return true;
20356
- },
20357
- toggle(e, t) {
20358
- let n = new Set(e);
20359
- return n.has(t) ? n.delete(t) : n.add(t), n;
20360
- }
20361
- };
20362
- var TOP_K_ROWS = 30;
20363
- const FilterByValuesPicker = ({ column: e, calculateTopKRows: t, chosenValues: n, onChange: i }) => {
20364
- let [o, s] = (0, import_react.useState)(false), c = (0, import_react.useMemo)(() => new Set(n), [
20365
- n
20366
- ]), d = (0, import_react.useMemo)(() => c.size === 0 ? "Select values\u2026" : `[${[
20367
- ...c
20368
- ].map((e2) => stringifyUnknownValue({
20369
- value: e2
20370
- })).join(", ")}]`, [
20371
- c
20372
- ]);
20373
- return (0, import_jsx_runtime.jsxs)(Popover, {
20374
- open: o,
20375
- onOpenChange: s,
20376
- children: [
20377
- (0, import_jsx_runtime.jsx)(PopoverTrigger, {
20378
- asChild: true,
20379
- children: (0, import_jsx_runtime.jsxs)(Button, {
20380
- variant: "outline",
20381
- size: "xs",
20382
- className: "h-6 mb-1 w-full justify-between font-normal",
20383
- children: [
20384
- (0, import_jsx_runtime.jsx)("span", {
20385
- className: cn("truncate", c.size === 0 && "text-muted-foreground"),
20386
- children: d
20387
- }),
20388
- (0, import_jsx_runtime.jsx)(ChevronDown, {
20389
- className: "h-4 w-4 opacity-50 shrink-0"
20390
- })
20391
- ]
20392
- })
20393
- }),
20394
- (0, import_jsx_runtime.jsx)(PopoverContent, {
20395
- className: "w-80 p-0",
20396
- children: (0, import_jsx_runtime.jsx)(PickerBody, {
20397
- column: e,
20398
- calculateTopKRows: t,
20399
- chosenValues: c,
20400
- onChange: i
20401
- })
20402
- })
20403
- ]
20404
- });
20405
- };
20406
- var PickerBody = ({ column: e, calculateTopKRows: t, chosenValues: i, onChange: a }) => {
20407
- let [o, s] = (0, import_react.useState)(""), { data: c, isPending: d, error: f } = useAsyncData(async () => t ? (await t({
20408
- column: e.id,
20409
- k: TOP_K_ROWS
20410
- })).data : null, [
20411
- t,
20412
- e.id
20413
- ]), h = (0, import_react.useMemo)(() => {
20414
- if (!c) return [];
20415
- try {
20416
- return c.filter(([e2, t2]) => {
20417
- if (e2 === void 0) return false;
20418
- let n = String(e2);
20419
- return smartMatch(o, n) || n.toLowerCase().includes(o.toLowerCase());
20420
- });
20421
- } catch (e2) {
20422
- return Logger.error("Error filtering data", e2), [];
20423
- }
20424
- }, [
20425
- c,
20426
- o
20427
- ]), _ = (e2) => {
20428
- a([
20429
- ...Sets.toggle(i, e2)
20430
- ]);
20431
- }, v = h.length > 0 && h.every(([e2]) => i.has(e2)), y = v ? true : i.size > 0 ? "indeterminate" : false;
20432
- return d ? (0, import_jsx_runtime.jsx)(Spinner, {
20433
- size: "medium",
20434
- className: "mx-auto mt-12 mb-10"
20435
- }) : f ? (0, import_jsx_runtime.jsx)(ErrorBanner, {
20436
- error: f,
20437
- className: "my-10 mx-4"
20438
- }) : c ? (0, import_jsx_runtime.jsxs)(Command, {
20439
- className: "text-sm outline-hidden",
20440
- shouldFilter: false,
20441
- children: [
20442
- (0, import_jsx_runtime.jsx)(CommandInput, {
20443
- placeholder: `Search among the top ${c.length} values`,
20444
- autoFocus: true,
20445
- onValueChange: (e2) => s(e2.trim())
20446
- }),
20447
- (0, import_jsx_runtime.jsx)(CommandEmpty, {
20448
- children: "No results found."
20449
- }),
20450
- (0, import_jsx_runtime.jsxs)(CommandList, {
20451
- children: [
20452
- h.length > 0 && (0, import_jsx_runtime.jsxs)(CommandItem, {
20453
- value: "__select-all__",
20454
- className: "border-b rounded-none px-3",
20455
- onSelect: () => {
20456
- if (!c) return;
20457
- let e2 = new Set(i);
20458
- if (v) for (let [t2] of h) e2.delete(t2);
20459
- else for (let [t2] of h) e2.add(t2);
20460
- a([
20461
- ...e2
20462
- ]);
20463
- },
20464
- children: [
20465
- (0, import_jsx_runtime.jsx)(Checkbox, {
20466
- checked: y,
20467
- "aria-label": "Select all",
20468
- className: "mr-3 h-3.5 w-3.5"
20469
- }),
20470
- (0, import_jsx_runtime.jsx)("span", {
20471
- className: "font-bold flex-1",
20472
- children: e.id
20473
- }),
20474
- (0, import_jsx_runtime.jsx)("span", {
20475
- className: "font-bold",
20476
- children: "Count"
20477
- })
20478
- ]
20479
- }),
20480
- h.map(([t2, n]) => {
20481
- var _a2;
20482
- let a2 = i.has(t2), o2 = stringifyUnknownValue({
20483
- value: t2
20484
- }), s2 = detectSentinel(t2, (_a2 = e.columnDef.meta) == null ? void 0 : _a2.dataType);
20485
- return (0, import_jsx_runtime.jsxs)(CommandItem, {
20486
- value: o2,
20487
- className: "not-last:border-b rounded-none px-3",
20488
- onSelect: () => _(t2),
20489
- children: [
20490
- (0, import_jsx_runtime.jsx)(Checkbox, {
20491
- checked: a2,
20492
- "aria-label": "Select row",
20493
- className: "mr-3 h-3.5 w-3.5"
20494
- }),
20495
- (0, import_jsx_runtime.jsx)("span", {
20496
- className: "flex-1 overflow-hidden max-h-20 line-clamp-3",
20497
- children: s2 ? (0, import_jsx_runtime.jsx)(SentinelCell, {
20498
- sentinel: s2
20499
- }) : o2
20500
- }),
20501
- (0, import_jsx_runtime.jsx)("span", {
20502
- className: "ml-3",
20503
- children: n
20504
- })
20505
- ]
20506
- }, o2);
20507
- })
20508
- ]
20509
- }),
20510
- c.length === TOP_K_ROWS && (0, import_jsx_runtime.jsxs)("span", {
20511
- className: "text-xs text-muted-foreground py-1.5 text-center",
20512
- children: [
20513
- "Only showing the top ",
20514
- TOP_K_ROWS,
20515
- " values"
20516
- ]
20517
- })
20518
- ]
20519
- }) : (0, import_jsx_runtime.jsx)("div", {
20520
- className: "py-6 px-4 text-sm text-muted-foreground text-center",
20521
- children: "No values available"
20522
- });
20523
- }, OPERATORS_BY_TYPE = {
20427
+ var OPERATORS_BY_TYPE = {
20524
20428
  number: [
20525
20429
  "between",
20526
20430
  "is_null",
@@ -25424,7 +25328,7 @@ ${_}`,
25424
25328
  }
25425
25329
  });
25426
25330
  export {
25427
- SELECT_COLUMN_ID as $,
25331
+ INDEX_COLUMN_NAME as $,
25428
25332
  slotsController as A,
25429
25333
  Expand as At,
25430
25334
  NAMELESS_COLUMN_PREFIX as B,
@@ -25452,7 +25356,7 @@ export {
25452
25356
  Funnel as Ot,
25453
25357
  Table as P,
25454
25358
  ChevronsRight as Pt,
25455
- INDEX_COLUMN_NAME as Q,
25359
+ loadTableData as Q,
25456
25360
  TableHeader as R,
25457
25361
  ArrowDownWideNarrow as Rt,
25458
25362
  ComboboxItem as S,
@@ -25462,9 +25366,9 @@ export {
25462
25366
  renderCellValue as U,
25463
25367
  generateColumns as V,
25464
25368
  ColumnChartContext as W,
25465
- loadTableAndRawData as X,
25466
- getPageIndexForRow as Y,
25467
- loadTableData as Z,
25369
+ getPageIndexForRow as X,
25370
+ filtersToFilterGroup as Y,
25371
+ loadTableAndRawData as Z,
25468
25372
  Filenames as _,
25469
25373
  __tla,
25470
25374
  ChartLoadingState as _t,
@@ -25476,7 +25380,7 @@ export {
25476
25380
  CommandList as ct,
25477
25381
  DataTable as d,
25478
25382
  Tabs as dt,
25479
- TOO_MANY_ROWS as et,
25383
+ SELECT_COLUMN_ID as et,
25480
25384
  InstallPackageButton as f,
25481
25385
  TabsContent as ft,
25482
25386
  downloadHTMLAsImage as g,
@@ -25494,18 +25398,18 @@ export {
25494
25398
  downloadBlob as m,
25495
25399
  TabsTrigger as mt,
25496
25400
  DEFAULT_SLIDE_TYPE as n,
25497
- getMimeValues as nt,
25401
+ toFieldTypes as nt,
25498
25402
  RadioGroup as o,
25499
25403
  CommandInput as ot,
25500
25404
  ADD_PRINTING_CLASS as p,
25501
25405
  TabsList as pt,
25502
25406
  useIntersectionObserver as q,
25503
25407
  SLIDE_TYPE_OPTIONS_BY_VALUE as r,
25504
- filtersToFilterGroup as rt,
25408
+ getMimeValues as rt,
25505
25409
  RadioGroupItem as s,
25506
25410
  CommandItem as st,
25507
25411
  DEFAULT_DECK_TRANSITION as t,
25508
- toFieldTypes as tt,
25412
+ TOO_MANY_ROWS as tt,
25509
25413
  OutputRenderer as u,
25510
25414
  Maps as ut,
25511
25415
  prettifyRowColumnCount as v,