@marimo-team/islands 0.21.2-dev6 → 0.21.2-dev61

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 (152) hide show
  1. package/dist/{ConnectedDataExplorerComponent-D0GoOd_c.js → ConnectedDataExplorerComponent-DrWDbHRV.js} +1 -1
  2. package/dist/{any-language-editor-DlsjUw_l.js → any-language-editor-BRpxklRq.js} +1 -1
  3. package/dist/{copy-DIK6DiIA.js → copy-BjkXCUxP.js} +12 -2
  4. package/dist/{esm-BLobyqMs.js → esm-No_6eSQS.js} +1 -1
  5. package/dist/{glide-data-editor-pZyd9UJ_.js → glide-data-editor-858wsVkd.js} +1 -1
  6. package/dist/main.js +821 -417
  7. package/dist/{spec-Bfvf9Hre.js → spec-oVDndBz4.js} +25 -16
  8. package/dist/style.css +1 -1
  9. package/package.json +1 -1
  10. package/src/__mocks__/notebook.ts +9 -9
  11. package/src/__mocks__/requests.ts +1 -0
  12. package/src/__tests__/branded.ts +20 -0
  13. package/src/components/app-config/user-config-form.tsx +5 -4
  14. package/src/components/data-table/__tests__/utils.test.ts +138 -1
  15. package/src/components/data-table/charts/__tests__/storage.test.ts +7 -7
  16. package/src/components/data-table/context-menu.tsx +9 -5
  17. package/src/components/data-table/data-table.tsx +3 -0
  18. package/src/components/data-table/range-focus/__tests__/atoms.test.ts +8 -2
  19. package/src/components/data-table/range-focus/__tests__/test-utils.ts +2 -0
  20. package/src/components/data-table/range-focus/__tests__/utils.test.ts +82 -8
  21. package/src/components/data-table/range-focus/atoms.ts +2 -2
  22. package/src/components/data-table/range-focus/utils.ts +50 -12
  23. package/src/components/data-table/types.ts +7 -0
  24. package/src/components/data-table/utils.ts +87 -0
  25. package/src/components/editor/__tests__/data-attributes.test.tsx +8 -8
  26. package/src/components/editor/ai/__tests__/completion-utils.test.ts +15 -15
  27. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +2 -2
  28. package/src/components/editor/connections/storage/as-code.ts +2 -2
  29. package/src/components/editor/file-tree/file-explorer.tsx +16 -2
  30. package/src/components/editor/file-tree/file-viewer.tsx +17 -3
  31. package/src/components/editor/navigation/__tests__/clipboard.test.ts +2 -2
  32. package/src/components/editor/navigation/__tests__/selection.test.ts +7 -6
  33. package/src/components/editor/navigation/__tests__/state.test.ts +8 -7
  34. package/src/components/editor/output/MarimoErrorOutput.tsx +7 -7
  35. package/src/components/editor/output/__tests__/traceback.test.tsx +4 -4
  36. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +4 -4
  37. package/src/components/editor/renderers/vertical-layout/useFocusFirstEditor.ts +8 -1
  38. package/src/components/storage/storage-file-viewer.tsx +35 -1
  39. package/src/components/storage/storage-inspector.tsx +9 -4
  40. package/src/components/storage/storage-snippets.ts +3 -3
  41. package/src/components/tracing/tracing.tsx +3 -1
  42. package/src/components/ui/range-slider.tsx +108 -1
  43. package/src/core/ai/__tests__/staged-cells.test.ts +9 -8
  44. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +31 -31
  45. package/src/core/ai/context/providers/__tests__/datasource.test.ts +3 -3
  46. package/src/core/ai/context/providers/__tests__/tables.test.ts +3 -2
  47. package/src/core/ai/context/providers/__tests__/variable.test.ts +84 -63
  48. package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +10 -9
  49. package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +6 -6
  50. package/src/core/ai/tools/edit-notebook-tool.ts +3 -3
  51. package/src/core/cells/__tests__/add-missing-import.test.ts +3 -3
  52. package/src/core/cells/__tests__/apply-transaction.test.ts +279 -0
  53. package/src/core/cells/__tests__/cells.test.ts +198 -135
  54. package/src/core/cells/__tests__/document-changes.test.ts +575 -0
  55. package/src/core/cells/__tests__/document-roundtrip.test.ts +376 -0
  56. package/src/core/cells/__tests__/focus.test.ts +5 -4
  57. package/src/core/cells/__tests__/logs.test.ts +13 -12
  58. package/src/core/cells/__tests__/pending-delete-service.test.tsx +3 -3
  59. package/src/core/cells/__tests__/runs.test.ts +22 -21
  60. package/src/core/cells/__tests__/scrollCellIntoView.test.ts +8 -7
  61. package/src/core/cells/__tests__/session.test.ts +23 -22
  62. package/src/core/cells/cells.ts +29 -4
  63. package/src/core/cells/document-changes.ts +644 -0
  64. package/src/core/cells/ids.ts +5 -5
  65. package/src/core/cells/logs.ts +2 -2
  66. package/src/core/cells/runs.ts +6 -8
  67. package/src/core/codemirror/__tests__/format.test.ts +34 -36
  68. package/src/core/codemirror/__tests__/setup.test.ts +2 -2
  69. package/src/core/codemirror/cells/__tests__/extensions.test.ts +114 -0
  70. package/src/core/codemirror/cells/__tests__/traceback-decorations.test.ts +33 -32
  71. package/src/core/codemirror/cells/extensions.ts +66 -23
  72. package/src/core/codemirror/completion/__tests__/keymap.test.ts +15 -35
  73. package/src/core/codemirror/completion/keymap.ts +14 -4
  74. package/src/core/codemirror/copilot/__tests__/getCodes.test.ts +12 -13
  75. package/src/core/codemirror/language/__tests__/utils.test.ts +3 -3
  76. package/src/core/codemirror/language/embedded/__tests__/embedded-python.test.ts +7 -8
  77. package/src/core/codemirror/language/languages/python.ts +4 -0
  78. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +4 -3
  79. package/src/core/codemirror/lsp/notebook-lsp.ts +28 -2
  80. package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +7 -6
  81. package/src/core/codemirror/reactive-references/analyzer.ts +2 -2
  82. package/src/core/codemirror/rtc/loro/__tests__/sync.test.ts +52 -0
  83. package/src/core/codemirror/rtc/loro/sync.ts +1 -0
  84. package/src/core/datasets/__tests__/data-source.test.ts +5 -6
  85. package/src/core/datasets/state.ts +1 -1
  86. package/src/core/errors/__tests__/errors.test.ts +2 -1
  87. package/src/core/export/__tests__/hooks.test.ts +37 -36
  88. package/src/core/islands/bridge.ts +1 -0
  89. package/src/core/islands/main.ts +4 -7
  90. package/src/core/kernel/__tests__/handlers.test.ts +5 -4
  91. package/src/core/kernel/handlers.ts +7 -4
  92. package/src/core/network/DeferredRequestRegistry.ts +2 -2
  93. package/src/core/network/__tests__/CachingRequestRegistry.test.ts +9 -10
  94. package/src/core/network/__tests__/DeferredRequestRegistry.test.ts +4 -6
  95. package/src/core/network/requests-lazy.ts +1 -0
  96. package/src/core/network/requests-network.ts +9 -0
  97. package/src/core/network/requests-static.ts +1 -0
  98. package/src/core/network/requests-toasting.tsx +1 -0
  99. package/src/core/network/types.ts +5 -0
  100. package/src/core/static/__tests__/virtual-file-tracker.test.ts +8 -8
  101. package/src/core/static/virtual-file-tracker.ts +1 -1
  102. package/src/core/storage/__tests__/state.test.ts +31 -21
  103. package/src/core/storage/state.ts +1 -1
  104. package/src/core/variables/__tests__/state.test.ts +6 -6
  105. package/src/core/variables/types.ts +2 -2
  106. package/src/core/wasm/__tests__/state.test.ts +8 -8
  107. package/src/core/wasm/bridge.ts +1 -0
  108. package/src/core/websocket/useMarimoKernelConnection.tsx +31 -16
  109. package/src/css/app/fonts.css +6 -6
  110. package/src/css/md-tooltip.css +4 -39
  111. package/src/css/md.css +7 -0
  112. package/src/fonts/Fira_Mono/FiraMono-Bold.woff2 +0 -0
  113. package/src/fonts/Fira_Mono/FiraMono-Medium.woff2 +0 -0
  114. package/src/fonts/Fira_Mono/FiraMono-Regular.woff2 +0 -0
  115. package/src/fonts/Lora/Lora-VariableFont_wght.woff2 +0 -0
  116. package/src/fonts/PT_Sans/PTSans-Bold.woff2 +0 -0
  117. package/src/fonts/PT_Sans/PTSans-Regular.woff2 +0 -0
  118. package/src/plugins/core/RenderHTML.tsx +17 -0
  119. package/src/plugins/core/__test__/RenderHTML.test.ts +45 -0
  120. package/src/plugins/core/sanitize-html.ts +25 -18
  121. package/src/plugins/impl/DataTablePlugin.tsx +23 -2
  122. package/src/plugins/impl/SliderPlugin.tsx +1 -3
  123. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +120 -0
  124. package/src/plugins/impl/anywidget/model.ts +1 -2
  125. package/src/stories/cell.stories.tsx +8 -8
  126. package/src/stories/layout/vertical/one-column.stories.tsx +9 -8
  127. package/src/stories/log-viewer.stories.tsx +8 -8
  128. package/src/stories/variables.stories.tsx +2 -2
  129. package/src/utils/__tests__/download.test.tsx +21 -20
  130. package/src/utils/copy.ts +18 -5
  131. package/src/utils/createReducer.ts +26 -11
  132. package/src/utils/download.ts +4 -3
  133. package/src/utils/html-to-image.ts +6 -0
  134. package/src/utils/json/base64.ts +3 -3
  135. package/src/utils/traceback.ts +5 -3
  136. package/src/fonts/Fira_Mono/FiraMono-Bold.ttf +0 -0
  137. package/src/fonts/Fira_Mono/FiraMono-Medium.ttf +0 -0
  138. package/src/fonts/Fira_Mono/FiraMono-Regular.ttf +0 -0
  139. package/src/fonts/Lora/Lora-Italic-VariableFont_wght.ttf +0 -0
  140. package/src/fonts/Lora/Lora-VariableFont_wght.ttf +0 -0
  141. package/src/fonts/Lora/static/Lora-Bold.ttf +0 -0
  142. package/src/fonts/Lora/static/Lora-BoldItalic.ttf +0 -0
  143. package/src/fonts/Lora/static/Lora-Italic.ttf +0 -0
  144. package/src/fonts/Lora/static/Lora-Medium.ttf +0 -0
  145. package/src/fonts/Lora/static/Lora-MediumItalic.ttf +0 -0
  146. package/src/fonts/Lora/static/Lora-Regular.ttf +0 -0
  147. package/src/fonts/Lora/static/Lora-SemiBold.ttf +0 -0
  148. package/src/fonts/Lora/static/Lora-SemiBoldItalic.ttf +0 -0
  149. package/src/fonts/PT_Sans/PTSans-Bold.ttf +0 -0
  150. package/src/fonts/PT_Sans/PTSans-BoldItalic.ttf +0 -0
  151. package/src/fonts/PT_Sans/PTSans-Italic.ttf +0 -0
  152. package/src/fonts/PT_Sans/PTSans-Regular.ttf +0 -0
package/dist/main.js CHANGED
@@ -20,10 +20,10 @@ var __privateWrapper = (obj, member, setter, getter) => ({
20
20
  import { a as __toCommonJS, n as __esmMin, o as __toDynamicImportESM, r as __export$1, s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
21
21
  import { t as require_react } from "./react-Bs6Z0kvn.js";
22
22
  import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
23
- import { n as Copy, r as toast, t as copyToClipboard } from "./copy-DIK6DiIA.js";
23
+ import { n as Copy, r as toast, t as copyToClipboard } from "./copy-BjkXCUxP.js";
24
24
  import { _ as require_cjs$1, c as markdownLineEnding, d as SKIP, f as visitParents, g as s$2, h as h$1, l as longestStreak, m as webNamespaces, o as xn$1, p as convert$1, s as factorySpace, u as ok, __tla as __tla_0 } from "./chunk-5FQGJX7Z-BkzUmppO.js";
25
25
  import { a as Content$3, c as useSize, i as Arrow, l as createLucideIcon, o as Root2$6, r as Anchor, s as createPopperScope, t as Root$5 } from "./dist-C0Rnbr-_.js";
26
- import { A as useOnMount, B as Table$1, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, F as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, G as ChartColumn, H as ListFilter, I as $fb18d541ea1ad717$export$ad991b66133851cf, K as Calendar, L as $5a387cc49350e6db$export$722debc0e56fea39, M as Badge, N as createReducerAndAtoms, O as TIME_UNIT_DESCRIPTIONS, P as startCase_default, R as Type, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, U as Hash, V as SquareFunction, W as ChartPie, _ as AGGREGATION_TYPE_DESCRIPTIONS, a as AGGREGATION_FNS$1, b as COLOR_SCHEMES, c as COLOR_BY_FIELDS, d as NONE_VALUE, f as SELECTABLE_DATA_TYPES, g as TIME_UNITS, h as STRING_AGGREGATION_FNS, i as convertDataTypeToSelectable, j as useOnUnmount, k as escapeFieldName, l as COMBINED_TIME_UNITS, m as SORT_TYPES, n as createSpecWithoutData, o as BIN_AGGREGATION, p as SINGLE_TIME_UNITS, r as isFieldSet, s as CHART_TYPES, t as augmentSpecWithData, u as ChartType, v as AGGREGATION_TYPE_ICON, w as DEFAULT_MAX_BINS_FACET, x as COUNT_FIELD, y as CHART_TYPE_ICON, z as ToggleLeft } from "./spec-Bfvf9Hre.js";
26
+ import { A as useOnMount, B as Table$1, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, F as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, G as ChartColumn, H as ListFilter, I as $fb18d541ea1ad717$export$ad991b66133851cf, K as Calendar, L as $5a387cc49350e6db$export$722debc0e56fea39, M as Badge, N as createReducerAndAtoms, O as TIME_UNIT_DESCRIPTIONS, P as startCase_default, R as Type, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, U as Hash, V as SquareFunction, W as ChartPie, _ as AGGREGATION_TYPE_DESCRIPTIONS, a as AGGREGATION_FNS$1, b as COLOR_SCHEMES, c as COLOR_BY_FIELDS, d as NONE_VALUE, f as SELECTABLE_DATA_TYPES, g as TIME_UNITS, h as STRING_AGGREGATION_FNS, i as convertDataTypeToSelectable, j as useOnUnmount, k as escapeFieldName, l as COMBINED_TIME_UNITS, m as SORT_TYPES, n as createSpecWithoutData, o as BIN_AGGREGATION, p as SINGLE_TIME_UNITS, r as isFieldSet, s as CHART_TYPES, t as augmentSpecWithData, u as ChartType, v as AGGREGATION_TYPE_ICON, w as DEFAULT_MAX_BINS_FACET, x as COUNT_FIELD, y as CHART_TYPE_ICON, z as ToggleLeft } from "./spec-oVDndBz4.js";
27
27
  import { t as Check } from "./check-Diwc5emq.js";
28
28
  import { A as $a916eb452884faea$export$b7a616150fdb9f44, C as useDirection, D as assertNever, E as usePrevious$1, I as X, M as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, N as $18f2051aff69b9bf$export$a54013f0d02a8f82, O as logNever, P as $b5e257d569688ac6$export$535bd6ca7f90a273, R as ChevronDown, S as Trigger$5, T as clamp$2, _ as menuItemVariants, a as SelectGroup, b as menuSubTriggerVariants, c as SelectSeparator, d as NativeSelect, f as selectStyles, g as menuControlVariants, h as menuControlCheckVariants, i as SelectContent, j as $488c6ddbf4ef74c2$export$cc77c4ff7e8673c5, l as SelectTrigger, m as menuContentCommon, n as Primitive$1, o as SelectItem, p as MENU_ITEM_DISABLED, r as Select, s as SelectLabel, t as Label, u as SelectValue, v as menuLabelVariants, w as createCollection, x as Icon, y as menuSeparatorVariants } from "./label-BbpGrh4j.js";
29
29
  import { $ as $d2b4bc8c273e7be6$export$24d547caef80ccd1, $t as $c87311424ea30a05$export$a11b0059900ceec8, A as Portal$2, At as $fca6afa0e843324b$export$87b761675e8eaa10, B as Root$6, Bt as $ae1eeba8b9eafd08$export$5165eccb35aaadb5, C as Arrow2, Ct as $e5be200c675c3b3a$export$aca958c65c314e6c, D as Item2$2, Dt as $f7dceffc5ad7768b$export$4e328f61c538687f, E as Group$1, Et as $319e236875307eab$export$a9b970dcc4ae71a9, F as Sub, Ft as $9ab94262bd0047c7$export$420e68273165f4ec, G as $3985021b0ad6602f$export$f5b8910cec6cf069, Gt as $99facab73266f662$export$5add1d006293d136, H as ErrorBoundary, Ht as $458b0a5536c1a7cf$export$40bfa8c7b0832715, I as SubContent, It as $3ad3f6e1647bc98d$export$80f3e147d781571c, J as $d3e0e05bdfcf66bd$export$c24727297075ec6a, Jt as $df56164dff5785e2$export$4338b53315abf666, K as $a049562f99e7db0e$export$eb2fcfdbd7ba97d4, Kt as $e9faafb641e167db$export$90fc3a17d93f704c, L as SubTrigger, Lt as $507fabe10e71c6fb$export$630ff653c5ada6a9, M as RadioItem, Mt as $6db58dc88e78b024$export$2f817fcdc4b89ae0, N as Root3, Nt as $5b160d28a433310d$export$c17fa47878dc55b6, O as ItemIndicator, Ot as $701a24aa0da5b062$export$ea18c227d4417cc3, P as Separator, Pt as $6179b936705e76d3$export$ae780daf29e6d456, Q as $514c0188e459b4c0$export$9afb8bc826b033ea, Qt as $c87311424ea30a05$export$9ac100e40613ea10, R as createMenuScope, Rt as $f6c31cce2adf654f$export$45712eceda6fad21, S as Anchor2, St as $e5be200c675c3b3a$export$a763b9476acd3eb, T as Content2$3, Tt as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, U as require_prop_types, Ut as $b4b717babfbb907b$export$4c063cf1350e6fed, V as createRovingFocusGroupScope, Vt as $9446cca9a3875146$export$7d15b64cf5a3a4c4, W as $3985021b0ad6602f$export$37fb8590cf2c088c, Wt as $b4b717babfbb907b$export$bebd5a1431fec25d, X as $ee014567cb39d3f0$export$ff05c3ac10437e03, Xt as $c87311424ea30a05$export$6446a186d09e379e, Y as $ee014567cb39d3f0$export$f551688fc98f2e09, Yt as $313b98861ee5dd6c$export$d6875122194c7b44, Z as $514c0188e459b4c0$export$5f1af8db9871e1d6, Zt as $c87311424ea30a05$export$78551043582a6a98, _ as DropdownMenuSeparator, _n as Plus, _t as capitalize_default, a as OnBlurredInput, an as $d4ee10de306f2510$export$b4f377a2b6254582, at as $64fa3d84918910a7$export$29f1550f4b0d4415, b as DropdownMenuSubTrigger, bn as ChevronRight, bt as $e93e671b31057976$export$b8473d3665f3a75a, c as prettyEngineeringNumber, cn as $f4e2df6bd15f8569$export$98658e8c59125e6a, ct as $64fa3d84918910a7$export$c245e6201fed2f75, d as DropdownMenu, dn as $ff5963eb1fccf552$export$e08e3b67e392101e, dt as $64fa3d84918910a7$export$ef03459518577ad4, en as $c87311424ea30a05$export$fedb369cb70207f1, et as $d2b4bc8c273e7be6$export$353f5b6fc5456de1, f as DropdownMenuContent, fn as $bdb11010cef70236$export$b4cc09c592e8fdb8, ft as $64fa3d84918910a7$export$fabf2dc03a41866e, g as DropdownMenuPortal, gn as Search, gt as useDebouncedCallback, h as DropdownMenuLabel, hn as Trash, ht as useDebounceControlledState, i as Input, in as $d4ee10de306f2510$export$4282f70798064fe0, it as $64fa3d84918910a7$export$2881499e37b75b9a, j as RadioGroup$2, jt as $fca6afa0e843324b$export$f12b703ca79dfbb1, k as Label$2, kt as $6c7bd7858deea686$export$cd11ab140839f11d, l as prettyNumber, ln as $431fbd86ca7dc216$export$b204af158042fbac, lt as $64fa3d84918910a7$export$c62b8e45d58ddad9, m as DropdownMenuItem, mn as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, mt as marked, n as DebouncedInput, nn as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, nt as $01b77f81d0f07f68$export$b04be29aa201d4f5, o as NumberField, on as $d4ee10de306f2510$export$cd4e5573fbe2b576, ot as $64fa3d84918910a7$export$4d86445c2cf5e3, p as DropdownMenuGroup, pn as $bdb11010cef70236$export$f680877a34711e37, pt as useNonce, q as $a049562f99e7db0e$export$f9c6924e160136d1, qt as $8ae05eaa5c114e9c$export$7f54fc3180508a52, r as DebouncedNumberInput, rn as $3ef42575df84b30b$export$9d1611c77c2fe928, rt as $f39a9eba43920ace$export$b5d7cc18bb8d2b59, s as maxFractionalDigits, sn as $d4ee10de306f2510$export$e58f029f0fbfdb29, st as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, t as BulkEdit, tn as $7215afc6de606d6b$export$de79e2c695e052f3, tt as $01b77f81d0f07f68$export$75b6ee27786ba447, u as prettyScientificNumber, un as $431fbd86ca7dc216$export$f21a1ffae260145a, ut as $64fa3d84918910a7$export$df3a06d6289f983e, v as DropdownMenuSub, vn as Pencil, vt as $d2e8511e6f209edf$export$e908e06f4b8e3402, w as CheckboxItem, wt as $e5be200c675c3b3a$export$dad6ae84456c676a, x as DropdownMenuTrigger, xt as $e5be200c675c3b3a$export$75ee7c75d68f5b0e, y as DropdownMenuSubContent, yn as Circle, yt as $2baaea4c71418dea$export$294aa081a6c6f55d, z as Item$2, zt as _class_private_field_init } from "./types-CGc7peZV.js";
@@ -34,7 +34,7 @@ import { $ as __awaiter, A as custom, B as record, C as ZodUnion$1, D as any, E
34
34
  import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
35
35
  import { t as require_react_dom } from "./react-dom-CqtLRVZP.js";
36
36
  import { a as TooltipRoot, i as TooltipProvider, n as TooltipContent, o as TooltipTrigger, r as TooltipPortal, s as TooltipProvider$1, t as Tooltip } from "./tooltip-CKG75XQa.js";
37
- import { a as _extends$5, c as setDiagnostics, d as insertTab, f as CopyClipboardIcon, i as minimalSetup, l as history, o as forEachDiagnostic, r as esm_default, s as linter, t as langs, u as historyField } from "./esm-BLobyqMs.js";
37
+ import { a as _extends$5, c as setDiagnostics, d as insertTab, f as CopyClipboardIcon, i as minimalSetup, l as history, o as forEachDiagnostic, r as esm_default, s as linter, t as langs, u as historyField } from "./esm-No_6eSQS.js";
38
38
  import { i as toInteger_default, n as _baseSet_default } from "./_basePickBy-pTDW2_2A.js";
39
39
  import { i as get_default } from "./hasIn-B9AbGLj3.js";
40
40
  import { n as pick_default, t as range_default } from "./range-BKaWvVUE.js";
@@ -27014,6 +27014,7 @@ ${c.sqlString}
27014
27014
  function indentOneTab(e) {
27015
27015
  return e.split("\n").map((e2) => (e2 == null ? void 0 : e2.trim()) ? ` ${e2}` : e2).join("\n");
27016
27016
  }
27017
+ const loroSyncAnnotation = Annotation.define();
27017
27018
  function initialState$4() {
27018
27019
  return {};
27019
27020
  }
@@ -27609,9 +27610,23 @@ ${c.sqlString}
27609
27610
  }
27610
27611
  });
27611
27612
  }
27613
+ var MARKDOWN_AUTORUN_USER_EVENTS = [
27614
+ "input",
27615
+ "delete",
27616
+ "undo",
27617
+ "redo"
27618
+ ];
27619
+ function shouldAutorunMarkdownUpdate({ docChanged: e, transactions: r, predicate: c = () => true, hasFocus: d = false }) {
27620
+ return !e || !c() || r.some((e2) => e2.effects.some((e3) => e3.is(formattingChangeEffect))) ? false : r.some((e2) => e2.annotation(loroSyncAnnotation) === void 0 ? MARKDOWN_AUTORUN_USER_EVENTS.some((r2) => e2.isUserEvent(r2)) || d : false);
27621
+ }
27612
27622
  function markdownAutoRunExtension({ predicate: e }) {
27613
27623
  return EditorView.updateListener.of((r) => {
27614
- r.docChanged && r.view.hasFocus && e() && (r.transactions.some((e2) => e2.effects.some((e3) => e3.is(formattingChangeEffect))) || r.view.state.facet(cellActionsState).onRun());
27624
+ shouldAutorunMarkdownUpdate({
27625
+ docChanged: r.docChanged,
27626
+ transactions: r.transactions,
27627
+ predicate: e,
27628
+ hasFocus: r.view.hasFocus
27629
+ }) && r.view.state.facet(cellActionsState).onRun();
27615
27630
  });
27616
27631
  }
27617
27632
  const pythonCompletionSource = async (e) => {
@@ -29325,6 +29340,8 @@ ${c.sqlString}
29325
29340
  var NotebookLanguageServerClient = (_a = class {
29326
29341
  constructor(e, r, c = defaultGetNotebookEditors) {
29327
29342
  __publicField(this, "completionItemCache", new LRUCache(10));
29343
+ __publicField(this, "latestDiagnosticsVersion", null);
29344
+ __publicField(this, "forwardedDiagnosticsVersion", 0);
29328
29345
  this.documentUri = getLSPDocument(), this.getNotebookEditors = c, this.initialSettings = r, this.client = e, this.patchProcessNotification(), this.initializePromise.then(() => {
29329
29346
  invariant(isClientWithNotify(this.client), "notify is not a method on the client"), this.client.notify("workspace/didChangeConfiguration", {
29330
29347
  settings: r
@@ -29372,7 +29389,7 @@ ${c.sqlString}
29372
29389
  settings: this.initialSettings
29373
29390
  });
29374
29391
  let { lens: e, version: r } = this.snapshotter.snapshot();
29375
- await this.client.textDocumentDidOpen({
29392
+ this.latestDiagnosticsVersion = null, this.forwardedDiagnosticsVersion = 0, await this.client.textDocumentDidOpen({
29376
29393
  textDocument: {
29377
29394
  languageId: "python",
29378
29395
  text: e.mergedText,
@@ -29570,39 +29587,49 @@ ${c.sqlString}
29570
29587
  invariant("processNotification" in this.client, "processNotification is not a method on the client");
29571
29588
  let r = this.client.processNotification.bind(this.client), c = (c2) => {
29572
29589
  if (c2.method === "textDocument/publishDiagnostics") {
29590
+ let d = c2.params.version;
29591
+ if (d != null) {
29592
+ let e = this.latestDiagnosticsVersion;
29593
+ if (e !== null && Number.isFinite(d) && d < e) {
29594
+ Logger.debug("[lsp] dropping stale diagnostics notification", c2);
29595
+ return;
29596
+ }
29597
+ this.latestDiagnosticsVersion = d;
29598
+ }
29573
29599
  Logger.debug("[lsp] handling diagnostics", c2);
29574
- let d = this.snapshotter.getLatestSnapshot(), f = c2.params.diagnostics, { lens: _, version: v } = d, y = /* @__PURE__ */ new Map();
29575
- for (let e of f) for (let r2 of _.cellIds) if (_.isInRange(e.range, r2)) {
29576
- y.has(r2) || y.set(r2, []);
29600
+ let f = this.snapshotter.getLatestSnapshot(), _ = c2.params.diagnostics, { lens: v } = f, y = ++this.forwardedDiagnosticsVersion, S = /* @__PURE__ */ new Map();
29601
+ for (let e of _) for (let r2 of v.cellIds) if (v.isInRange(e.range, r2)) {
29602
+ S.has(r2) || S.set(r2, []);
29577
29603
  let c3 = {
29578
29604
  ...e,
29579
- range: _.reverseRange(e.range, r2)
29605
+ range: v.reverseRange(e.range, r2)
29580
29606
  };
29581
- y.get(r2).push(c3);
29607
+ S.get(r2).push(c3);
29582
29608
  break;
29583
29609
  }
29584
- let S = new Set(_.cellIds);
29585
- _a.pruneSeenCellUris(S);
29586
- let w = new Set(_a.SEEN_CELL_DOCUMENT_URIS);
29587
- for (let [e, d2] of y.entries()) {
29610
+ let w = new Set(v.cellIds);
29611
+ _a.pruneSeenCellUris(w);
29612
+ let E = new Set(_a.SEEN_CELL_DOCUMENT_URIS);
29613
+ for (let [e, d2] of S.entries()) {
29588
29614
  Logger.debug("[lsp] diagnostics for cell", e, d2);
29589
29615
  let f2 = CellDocumentUri.of(e);
29590
- w.delete(f2), r({
29616
+ E.delete(f2), r({
29591
29617
  ...c2,
29592
29618
  params: {
29593
29619
  ...c2.params,
29594
29620
  uri: f2,
29595
- version: v,
29621
+ version: y,
29596
29622
  diagnostics: d2
29597
29623
  }
29598
29624
  });
29599
29625
  }
29600
- if (w.size > 0) {
29601
- Logger.debug("[lsp] clearing diagnostics", w);
29602
- for (let e of w) r({
29626
+ if (E.size > 0) {
29627
+ Logger.debug("[lsp] clearing diagnostics", E);
29628
+ for (let e of E) r({
29603
29629
  method: "textDocument/publishDiagnostics",
29604
29630
  params: {
29605
29631
  uri: e,
29632
+ version: y,
29606
29633
  diagnostics: []
29607
29634
  }
29608
29635
  });
@@ -29767,7 +29794,9 @@ ${c.sqlString}
29767
29794
  "D103"
29768
29795
  ], _ = [
29769
29796
  "W292",
29770
- "E402"
29797
+ "E402",
29798
+ "E302",
29799
+ "E305"
29771
29800
  ], v = [
29772
29801
  "B018",
29773
29802
  "I001"
@@ -32264,12 +32293,14 @@ ${c.sqlString}
32264
32293
  afterCursorCode: getEditorCodeAsPython(e, v)
32265
32294
  };
32266
32295
  }
32267
- var TEMPORARY_ATTRIBUTE = "data-temp-href-target";
32268
- purify.addHook("beforeSanitizeAttributes", (e) => {
32269
- e.tagName === "A" && (e.hasAttribute("target") || e.setAttribute("target", "_self"), e.hasAttribute("target") && e.setAttribute(TEMPORARY_ATTRIBUTE, e.getAttribute("target") || ""));
32270
- }), purify.addHook("afterSanitizeAttributes", (e) => {
32271
- e.tagName === "A" && e.hasAttribute(TEMPORARY_ATTRIBUTE) && (e.setAttribute("target", e.getAttribute(TEMPORARY_ATTRIBUTE) || ""), e.removeAttribute(TEMPORARY_ATTRIBUTE), e.getAttribute("target") === "_blank" && e.setAttribute("rel", "noopener noreferrer"));
32272
- });
32296
+ if (typeof document < "u") {
32297
+ let e = "data-temp-href-target";
32298
+ purify.addHook("beforeSanitizeAttributes", (r) => {
32299
+ r.tagName === "A" && (r.hasAttribute("target") || r.setAttribute("target", "_self"), r.hasAttribute("target") && r.setAttribute(e, r.getAttribute("target") || ""));
32300
+ }), purify.addHook("afterSanitizeAttributes", (r) => {
32301
+ r.tagName === "A" && r.hasAttribute(e) && (r.setAttribute("target", r.getAttribute(e) || ""), r.removeAttribute(e), r.getAttribute("target") === "_blank" && r.setAttribute("rel", "noopener noreferrer"));
32302
+ });
32303
+ }
32273
32304
  function sanitizeHtml(e) {
32274
32305
  let r = {
32275
32306
  USE_PROFILES: {
@@ -32700,6 +32731,228 @@ ${c.sqlString}
32700
32731
  let y = outputIsLoading(c), S = c === "running" && d !== null && f !== null && (d.timestamp ?? 0) > f;
32701
32732
  return y && !S ? true : v;
32702
32733
  }
32734
+ function getInitialAppMode() {
32735
+ let e = store.get(initialModeAtom);
32736
+ return assertExists(e, "internal-error: initial mode not found"), invariant(e !== "present", "internal-error: initial mode cannot be 'present'"), e;
32737
+ }
32738
+ const viewStateAtom = atom({
32739
+ mode: isIslands() ? "read" : "not-set",
32740
+ cellAnchor: null
32741
+ }), initialModeAtom = atom(void 0), kioskModeAtom = atom(false);
32742
+ function getCell(e, r) {
32743
+ if (!e) {
32744
+ Logger.warn("getCell: cellId is undefined");
32745
+ return;
32746
+ }
32747
+ let c = r.cellData[e];
32748
+ if (!c) {
32749
+ Logger.warn(`getCell: cell ${e} not found in state`);
32750
+ return;
32751
+ }
32752
+ return c;
32753
+ }
32754
+ function anchorOf(e, r) {
32755
+ let c = r.cellIds.inOrderIds, d = c.indexOf(e);
32756
+ if (d > 0) return {
32757
+ after: c[d - 1]
32758
+ };
32759
+ if (d === 0 && c.length > 1) return {
32760
+ before: c[1]
32761
+ };
32762
+ }
32763
+ function columnIndexMap(e) {
32764
+ let r = /* @__PURE__ */ new Map(), c = e.cellIds.getColumns();
32765
+ for (let [e2, d] of c.entries()) for (let c2 of d.inOrderIds) r.set(c2, e2);
32766
+ return r;
32767
+ }
32768
+ function newCellChanges(e, r) {
32769
+ let c = new Set(e.cellIds.inOrderIds), d = [];
32770
+ for (let e2 of r.cellIds.inOrderIds) if (!c.has(e2)) {
32771
+ let c2 = getCell(e2, r);
32772
+ c2 && d.push({
32773
+ type: "create-cell",
32774
+ cellId: c2.id,
32775
+ code: c2.code,
32776
+ name: c2.name,
32777
+ config: c2.config,
32778
+ ...anchorOf(c2.id, r)
32779
+ });
32780
+ }
32781
+ return d;
32782
+ }
32783
+ function deletedCellChanges(e, r) {
32784
+ let c = new Set(r.cellIds.inOrderIds), d = [];
32785
+ for (let r2 of e.cellIds.inOrderIds) c.has(r2) || d.push({
32786
+ type: "delete-cell",
32787
+ cellId: r2
32788
+ });
32789
+ return d;
32790
+ }
32791
+ function columnChanges(e, r) {
32792
+ let c = columnIndexMap(e), d = columnIndexMap(r), f = [];
32793
+ for (let [e2, r2] of d) c.get(e2) !== r2 && f.push({
32794
+ type: "set-config",
32795
+ cellId: e2,
32796
+ column: r2
32797
+ });
32798
+ return f.push({
32799
+ type: "reorder-cells",
32800
+ cellIds: r.cellIds.inOrderIds
32801
+ }), f;
32802
+ }
32803
+ function toDocumentChanges(e, r, c) {
32804
+ switch (c.type) {
32805
+ case "createNewCell":
32806
+ return newCellChanges(e, r);
32807
+ case "deleteCell":
32808
+ return [
32809
+ {
32810
+ type: "delete-cell",
32811
+ cellId: c.payload.cellId
32812
+ }
32813
+ ];
32814
+ case "moveCell":
32815
+ case "sendToTop":
32816
+ case "sendToBottom": {
32817
+ let { cellId: e2 } = c.payload;
32818
+ return [
32819
+ {
32820
+ type: "move-cell",
32821
+ cellId: e2,
32822
+ ...anchorOf(e2, r)
32823
+ }
32824
+ ];
32825
+ }
32826
+ case "dropCellOverCell":
32827
+ case "dropCellOverColumn":
32828
+ return columnChanges(e, r);
32829
+ case "updateCellCode": {
32830
+ let e2 = getCell(c.payload.cellId, r);
32831
+ return e2 ? [
32832
+ {
32833
+ type: "set-code",
32834
+ cellId: e2.id,
32835
+ code: e2.code
32836
+ }
32837
+ ] : [];
32838
+ }
32839
+ case "updateCellName": {
32840
+ let e2 = getCell(c.payload.cellId, r);
32841
+ return e2 ? [
32842
+ {
32843
+ type: "set-name",
32844
+ cellId: e2.id,
32845
+ name: e2.name
32846
+ }
32847
+ ] : [];
32848
+ }
32849
+ case "updateCellConfig": {
32850
+ let { cellId: e2, config: r2 } = c.payload;
32851
+ return [
32852
+ {
32853
+ type: "set-config",
32854
+ cellId: e2,
32855
+ ...r2.hide_code != null && {
32856
+ hideCode: r2.hide_code
32857
+ },
32858
+ ...r2.disabled != null && {
32859
+ disabled: r2.disabled
32860
+ },
32861
+ ...r2.column != null && {
32862
+ column: r2.column
32863
+ }
32864
+ }
32865
+ ];
32866
+ }
32867
+ case "dropOverNewColumn":
32868
+ case "moveColumn":
32869
+ case "addColumnBreakpoint":
32870
+ case "deleteColumn":
32871
+ case "mergeAllColumns":
32872
+ case "compactColumns":
32873
+ return columnChanges(e, r);
32874
+ case "addColumn":
32875
+ return [
32876
+ ...newCellChanges(e, r),
32877
+ ...columnChanges(e, r)
32878
+ ];
32879
+ case "undoDeleteCell": {
32880
+ let c2 = newCellChanges(e, r), d = columnChanges(e, r);
32881
+ return d.length > 1 ? [
32882
+ ...c2,
32883
+ ...d
32884
+ ] : c2;
32885
+ }
32886
+ case "splitCell": {
32887
+ let { cellId: d } = c.payload, f = getCell(d, r);
32888
+ return f ? [
32889
+ {
32890
+ type: "set-code",
32891
+ cellId: d,
32892
+ code: f.code
32893
+ },
32894
+ ...newCellChanges(e, r)
32895
+ ] : [];
32896
+ }
32897
+ case "undoSplitCell": {
32898
+ let { cellId: d } = c.payload, f = getCell(d, r);
32899
+ return f ? [
32900
+ {
32901
+ type: "set-code",
32902
+ cellId: d,
32903
+ code: f.code
32904
+ },
32905
+ ...deletedCellChanges(e, r)
32906
+ ] : [];
32907
+ }
32908
+ case "moveToNextCell":
32909
+ return newCellChanges(e, r);
32910
+ case "addSetupCellIfDoesntExist":
32911
+ return newCellChanges(e, r);
32912
+ case "focusCell":
32913
+ case "focusTopCell":
32914
+ case "focusBottomCell":
32915
+ case "scrollToTarget":
32916
+ case "showCellIfHidden":
32917
+ case "markTouched":
32918
+ case "markUntouched":
32919
+ return [];
32920
+ case "prepareForRun":
32921
+ case "handleCellMessage":
32922
+ case "setCellIds":
32923
+ case "setCellCodes":
32924
+ case "setCells":
32925
+ case "setStdinResponse":
32926
+ case "clearSerializedEditorState":
32927
+ case "clearCellOutput":
32928
+ case "clearCellConsoleOutput":
32929
+ case "clearAllCellOutputs":
32930
+ case "clearLogs":
32931
+ return [];
32932
+ case "foldAll":
32933
+ case "unfoldAll":
32934
+ case "collapseCell":
32935
+ case "expandCell":
32936
+ case "collapseAllCells":
32937
+ case "expandAllCells":
32938
+ return [];
32939
+ default:
32940
+ assertNever(c);
32941
+ }
32942
+ }
32943
+ var pendingChanges = [], flushChanges = debounce_default(() => {
32944
+ if (pendingChanges.length === 0) return;
32945
+ let e = pendingChanges;
32946
+ pendingChanges = [], getRequestClient().sendDocumentTransaction({
32947
+ changes: e
32948
+ });
32949
+ }, 400);
32950
+ function enqueue(e) {
32951
+ store.get(kioskModeAtom) || (pendingChanges.push(e), flushChanges());
32952
+ }
32953
+ function documentTransactionMiddleware(e, r, c) {
32954
+ for (let d of toDocumentChanges(e, r, c)) enqueue(d);
32955
+ }
32703
32956
  function addDays(e, r, c) {
32704
32957
  let d = toDate(e, c == null ? void 0 : c.in);
32705
32958
  return isNaN(r) ? constructFrom((c == null ? void 0 : c.in) || e, NaN) : (r && d.setDate(d.getDate() + r), d);
@@ -36231,7 +36484,7 @@ ${c.sqlString}
36231
36484
  ...e
36232
36485
  };
36233
36486
  }
36234
- require_compiler_runtime();
36487
+ var import_compiler_runtime$153 = require_compiler_runtime();
36235
36488
  function withScratchCell(e) {
36236
36489
  let r = {
36237
36490
  column: 0,
@@ -36269,7 +36522,7 @@ ${c.sqlString}
36269
36522
  untouchedNewCells: /* @__PURE__ */ new Set()
36270
36523
  });
36271
36524
  }
36272
- var { reducer, createActions, useActions: useActions$1, valueAtom: notebookAtom } = createReducerAndAtoms(initialNotebookState, {
36525
+ var { reducer, addMiddleware, createActions, useActions: useActions$1, valueAtom: notebookAtom } = createReducerAndAtoms(initialNotebookState, {
36273
36526
  createNewCell: (e, r) => {
36274
36527
  var _a3;
36275
36528
  let { cellId: c, before: d, code: f, lastCodeRun: _ = null, lastExecutionTime: v = null, autoFocus: y = true, skipIfCodeExists: S = false, hideCode: w = false } = r, E, O;
@@ -36611,7 +36864,15 @@ ${c.sqlString}
36611
36864
  cellId: c,
36612
36865
  cellReducer: (e2) => transitionCell(e2, r)
36613
36866
  });
36614
- return {
36867
+ return r.status === "queued" && (d = updateCellData({
36868
+ state: d,
36869
+ cellId: c,
36870
+ cellReducer: (e2) => ({
36871
+ ...e2,
36872
+ lastCodeRun: e2.code.trim(),
36873
+ edited: false
36874
+ })
36875
+ })), {
36615
36876
  ...d,
36616
36877
  cellLogs: [
36617
36878
  ...d.cellLogs,
@@ -37048,6 +37309,7 @@ ${c.sqlString}
37048
37309
  };
37049
37310
  }
37050
37311
  });
37312
+ addMiddleware(documentTransactionMiddleware);
37051
37313
  function isCellCodeHidden(e, r) {
37052
37314
  return !!e.cellData[r].config.hide_code && !e.untouchedNewCells.has(r);
37053
37315
  }
@@ -37128,8 +37390,9 @@ ${c.sqlString}
37128
37390
  let { cellHandles: r } = store.get(notebookAtom);
37129
37391
  return (_a3 = r[e].current) == null ? void 0 : _a3.editorView;
37130
37392
  };
37131
- function useCellActions() {
37132
- return useActions$1();
37393
+ function useCellActions(e) {
37394
+ let r = (0, import_compiler_runtime$153.c)(2), c;
37395
+ return r[0] === e ? c = r[1] : (c = e === void 0 ? {} : e, r[0] = e, r[1] = c), useActions$1(c);
37133
37396
  }
37134
37397
  async function requestOutputDocumentation(e) {
37135
37398
  let r = getCells().inOrderIds.at(0);
@@ -37164,14 +37427,6 @@ ${c.sqlString}
37164
37427
  };
37165
37428
  require_compiler_runtime();
37166
37429
  const hasRunAnyCellAtom = atom(false);
37167
- function getInitialAppMode() {
37168
- let e = store.get(initialModeAtom);
37169
- return assertExists(e, "internal-error: initial mode not found"), invariant(e !== "present", "internal-error: initial mode cannot be 'present'"), e;
37170
- }
37171
- const viewStateAtom = atom({
37172
- mode: isIslands() ? "read" : "not-set",
37173
- cellAnchor: null
37174
- }), initialModeAtom = atom(void 0), kioskModeAtom = atom(false);
37175
37430
  var sanitizeHtmlAtom = atom((e) => {
37176
37431
  let r = e(hasRunAnyCellAtom), c = e(autoInstantiateAtom);
37177
37432
  if (r || c) return false;
@@ -37255,6 +37510,15 @@ ${c.sqlString}
37255
37510
  children: e
37256
37511
  });
37257
37512
  }
37513
+ }, wrapTooltipTargets = (e, r) => {
37514
+ var _a3;
37515
+ if (r instanceof import_lib$1.Element && ((_a3 = r.attribs) == null ? void 0 : _a3["data-tooltip"])) {
37516
+ let c = r.attribs["data-tooltip"];
37517
+ return (0, import_jsx_runtime.jsx)(Tooltip, {
37518
+ content: c,
37519
+ children: e
37520
+ });
37521
+ }
37258
37522
  }, CopyableCode = (e) => {
37259
37523
  let r = (0, import_compiler_runtime$150.c)(3), { children: c } = e, d = (0, import_react.useRef)(null), f;
37260
37524
  r[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (f = (0, import_jsx_runtime.jsx)("div", {
@@ -37305,6 +37569,7 @@ ${c.sqlString}
37305
37569
  addCopyButtonToCodehilite,
37306
37570
  preserveQueryParamsInAnchorLinks,
37307
37571
  wrapDocHoverTargets,
37572
+ wrapTooltipTargets,
37308
37573
  removeWrappingBodyTags,
37309
37574
  removeWrappingHtmlTags
37310
37575
  ];
@@ -53723,6 +53988,40 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
53723
53988
  ]
53724
53989
  }), r[5] = _, r[6] = v, r[7] = y) : y = r[7], y;
53725
53990
  };
53991
+ var import_compiler_runtime$122 = require_compiler_runtime();
53992
+ const MimeCell = (e) => {
53993
+ let r = (0, import_compiler_runtime$122.c)(6), { value: c } = e, d;
53994
+ r[0] !== c.data || r[1] !== c.mimetype ? (d = {
53995
+ channel: "output",
53996
+ data: c.data,
53997
+ mimetype: c.mimetype,
53998
+ timestamp: 0
53999
+ }, r[0] = c.data, r[1] = c.mimetype, r[2] = d) : d = r[2];
54000
+ let f = d, _;
54001
+ r[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (_ = cn("flex items-center space-x-2"), r[3] = _) : _ = r[3];
54002
+ let v;
54003
+ return r[4] === f ? v = r[5] : (v = (0, import_jsx_runtime.jsx)("div", {
54004
+ className: _,
54005
+ children: (0, import_jsx_runtime.jsx)(OutputRenderer, {
54006
+ message: f
54007
+ })
54008
+ }), r[4] = f, r[5] = v), v;
54009
+ };
54010
+ function isMimeValue(e) {
54011
+ return typeof e == "object" && !!e && "mimetype" in e && "data" in e;
54012
+ }
54013
+ function getMimeValues(e) {
54014
+ if (isMimeValue(e)) return [
54015
+ e
54016
+ ];
54017
+ if (typeof e == "object" && e && ("_serialized_mime_bundle" in e || "serialized_mime_bundle" in e)) {
54018
+ let r = e, c = r._serialized_mime_bundle || r.serialized_mime_bundle;
54019
+ if (isMimeValue(c)) return [
54020
+ c
54021
+ ];
54022
+ }
54023
+ if (Array.isArray(e) && e.every(isMimeValue)) return e.map((e2) => e2);
54024
+ }
53726
54025
  function toFieldTypes(e) {
53727
54026
  return Objects.collect(e, ([e2]) => e2, ([, [e2]]) => e2);
53728
54027
  }
@@ -53738,6 +54037,15 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
53738
54037
  handleBigIntAndNumberLike: true
53739
54038
  }), e);
53740
54039
  }
54040
+ async function loadTableAndRawData(e, r) {
54041
+ return r ? Promise.all([
54042
+ loadTableData(e),
54043
+ loadTableData(r)
54044
+ ]) : [
54045
+ await loadTableData(e),
54046
+ void 0
54047
+ ];
54048
+ }
53741
54049
  function getStableRowId(e) {
53742
54050
  if (e && typeof e == "object" && "_marimo_row_id" in e) return String(e[INDEX_COLUMN_NAME]);
53743
54051
  }
@@ -53749,6 +54057,41 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
53749
54057
  let { value: r, nullAsEmptyString: c = false } = e;
53750
54058
  return typeof r == "object" && r ? JSON.stringify(r) : r === null && c ? "" : String(r);
53751
54059
  }
54060
+ function stripHtml(e) {
54061
+ let r = document.createElement("div");
54062
+ return r.innerHTML = e, (r.textContent || r.innerText || "").trim() || e;
54063
+ }
54064
+ var HTML_MIMETYPES = /* @__PURE__ */ new Set([
54065
+ "text/html",
54066
+ "text/markdown"
54067
+ ]);
54068
+ function isRecord(e) {
54069
+ return typeof e == "object" && !!e && !Array.isArray(e);
54070
+ }
54071
+ function getClipboardContent(e, r) {
54072
+ let c = typeof r == "object" && r ? getMimeValues(r) : void 0, d;
54073
+ if (c) {
54074
+ let e2 = c.filter((e3) => HTML_MIMETYPES.has(e3.mimetype)).map((e3) => e3.data);
54075
+ d = e2.length > 0 ? e2.join("") : void 0;
54076
+ }
54077
+ let f;
54078
+ return f = e !== void 0 && e !== r ? stringifyUnknownValue({
54079
+ value: e
54080
+ }) : c ? c.map((e2) => HTML_MIMETYPES.has(e2.mimetype) ? stripHtml(e2.data) : e2.data).join(", ") : stringifyUnknownValue({
54081
+ value: r
54082
+ }), {
54083
+ text: f,
54084
+ html: d
54085
+ };
54086
+ }
54087
+ function getRawValue(e, r, c) {
54088
+ var _a3;
54089
+ let d = (_a3 = e.options.meta) == null ? void 0 : _a3.rawData;
54090
+ if (d) {
54091
+ let e2 = d[r];
54092
+ if (isRecord(e2)) return e2[c];
54093
+ }
54094
+ }
53752
54095
  var TOP_K_ROWS = 30;
53753
54096
  const DataTableColumnHeader = ({ column: e, header: r, justify: c, className: d, calculateTopKRows: f, table: _ }) => {
53754
54097
  let [v, y] = (0, import_react.useState)(false), { locale: S } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7();
@@ -54231,9 +54574,9 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54231
54574
  let [r, c] = import_react.useState(e), [d, f] = import_react.useState(null);
54232
54575
  return e !== r && (f(r), c(e)), d;
54233
54576
  }
54234
- var import_compiler_runtime$122 = require_compiler_runtime();
54577
+ var import_compiler_runtime$121 = require_compiler_runtime();
54235
54578
  const DelayMount = (e) => {
54236
- let r = (0, import_compiler_runtime$122.c)(13), { milliseconds: c, children: d, fallback: f, visibility: _, threshold: v, rootMargin: y } = e, S = _ === void 0 ? false : _, w = v === void 0 ? 0 : v, E = y === void 0 ? "0px" : y, [O, M] = (0, import_react.useState)(false), [I, z] = (0, import_react.useState)(false), G;
54579
+ let r = (0, import_compiler_runtime$121.c)(13), { milliseconds: c, children: d, fallback: f, visibility: _, threshold: v, rootMargin: y } = e, S = _ === void 0 ? false : _, w = v === void 0 ? 0 : v, E = y === void 0 ? "0px" : y, [O, M] = (0, import_react.useState)(false), [I, z] = (0, import_react.useState)(false), G;
54237
54580
  r[0] !== E || r[1] !== w ? (G = {
54238
54581
  threshold: w,
54239
54582
  root: null,
@@ -54264,9 +54607,9 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54264
54607
  children: WY
54265
54608
  }), r[10] = UY, r[11] = WY, r[12] = GY) : GY = r[12], GY;
54266
54609
  };
54267
- var import_compiler_runtime$121 = require_compiler_runtime();
54610
+ var import_compiler_runtime$120 = require_compiler_runtime();
54268
54611
  const DatePopover = (e) => {
54269
- let r = (0, import_compiler_runtime$121.c)(15), { date: c, type: d, children: f } = e;
54612
+ let r = (0, import_compiler_runtime$120.c)(15), { date: c, type: d, children: f } = e;
54270
54613
  if (!c || Number.isNaN(new Date(c).getTime())) return f;
54271
54614
  let _;
54272
54615
  r[0] === c ? _ = r[1] : (_ = new Date(c), r[0] = c, r[1] = _);
@@ -54306,7 +54649,7 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54306
54649
  }), r[12] = E, r[13] = O, r[14] = M) : M = r[14], M;
54307
54650
  };
54308
54651
  var TimezoneDisplay = (e) => {
54309
- let r = (0, import_compiler_runtime$121.c)(26), { date: c } = e, { locale: d } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), f;
54652
+ let r = (0, import_compiler_runtime$120.c)(26), { date: c } = e, { locale: d } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), f;
54310
54653
  r[0] === d ? f = r[1] : (f = Intl.DateTimeFormat(d).resolvedOptions(), r[0] = d, r[1] = f);
54311
54654
  let _ = f.timeZone, v = c.getUTCMilliseconds() !== 0, y;
54312
54655
  r[2] === v ? y = r[3] : (y = v ? {
@@ -54382,7 +54725,7 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54382
54725
  ]
54383
54726
  }), r[23] = IY, r[24] = I, r[25] = LY) : LY = r[25], LY;
54384
54727
  }, DateDisplay = (e) => {
54385
- let r = (0, import_compiler_runtime$121.c)(6), { date: c } = e, d;
54728
+ let r = (0, import_compiler_runtime$120.c)(6), { date: c } = e, d;
54386
54729
  r[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (d = {
54387
54730
  timeZone: "UTC",
54388
54731
  dateStyle: "long"
@@ -54394,7 +54737,7 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54394
54737
  children: _
54395
54738
  }), r[4] = _, r[5] = v), v;
54396
54739
  }, RelativeTime = (e) => {
54397
- let r = (0, import_compiler_runtime$121.c)(6), { date: c } = e, { locale: d } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), f, _;
54740
+ let r = (0, import_compiler_runtime$120.c)(6), { date: c } = e, { locale: d } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), f, _;
54398
54741
  if (r[0] !== c || r[1] !== d) {
54399
54742
  _ = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
54400
54743
  bb0: {
@@ -54446,7 +54789,7 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54446
54789
  return r[4] === f ? v = r[5] : (v = (0, import_jsx_runtime.jsx)("span", {
54447
54790
  children: f
54448
54791
  }), r[4] = f, r[5] = v), v;
54449
- }, import_compiler_runtime$120 = require_compiler_runtime(), hashString = (e) => {
54792
+ }, import_compiler_runtime$119 = require_compiler_runtime(), hashString = (e) => {
54450
54793
  let r = 0;
54451
54794
  for (let c = 0; c < e.length; c++) {
54452
54795
  let d = e.charCodeAt(c);
@@ -54463,7 +54806,7 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
54463
54806
  return d;
54464
54807
  };
54465
54808
  const ChartSkeleton = (e) => {
54466
- let r = (0, import_compiler_runtime$120.c)(11), { seed: c, width: d, height: f } = e, _ = d / 9, v = f - 15, y;
54809
+ let r = (0, import_compiler_runtime$119.c)(11), { seed: c, width: d, height: f } = e, _ = d / 9, v = f - 15, y;
54467
54810
  if (r[0] !== _ || r[1] !== f || r[2] !== c || r[3] !== v || r[4] !== d) {
54468
54811
  let e2 = generateHeights({
54469
54812
  numBars: 9,
@@ -55468,11 +55811,11 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
55468
55811
  }
55469
55812
  }, __publicField(_j, "EMPTY", new _j([], {}, {}, {}, {}, {
55470
55813
  includeCharts: false
55471
- })), _j), import_compiler_runtime$119 = require_compiler_runtime();
55814
+ })), _j), import_compiler_runtime$118 = require_compiler_runtime();
55472
55815
  const ColumnChartContext = import_react.createContext(ColumnChartSpecModel.EMPTY);
55473
55816
  var batchedLoader = createBatchedLoader();
55474
55817
  const TableColumnSummary = (e) => {
55475
- let r = (0, import_compiler_runtime$119.c)(21), { columnId: c } = e, { locale: d } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), f = import_react.use(ColumnChartContext), { theme: _ } = useTheme(), v, y, S;
55818
+ let r = (0, import_compiler_runtime$118.c)(21), { columnId: c } = e, { locale: d } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), f = import_react.use(ColumnChartContext), { theme: _ } = useTheme(), v, y, S;
55476
55819
  if (r[0] !== f || r[1] !== c || r[2] !== d || r[3] !== _) {
55477
55820
  let { spec: e2, type: w2, stats: E } = f.getHeaderSummary(c), O = null;
55478
55821
  if (e2) {
@@ -55673,40 +56016,6 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
55673
56016
  };
55674
56017
  }
55675
56018
  };
55676
- var import_compiler_runtime$118 = require_compiler_runtime();
55677
- const MimeCell = (e) => {
55678
- let r = (0, import_compiler_runtime$118.c)(6), { value: c } = e, d;
55679
- r[0] !== c.data || r[1] !== c.mimetype ? (d = {
55680
- channel: "output",
55681
- data: c.data,
55682
- mimetype: c.mimetype,
55683
- timestamp: 0
55684
- }, r[0] = c.data, r[1] = c.mimetype, r[2] = d) : d = r[2];
55685
- let f = d, _;
55686
- r[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (_ = cn("flex items-center space-x-2"), r[3] = _) : _ = r[3];
55687
- let v;
55688
- return r[4] === f ? v = r[5] : (v = (0, import_jsx_runtime.jsx)("div", {
55689
- className: _,
55690
- children: (0, import_jsx_runtime.jsx)(OutputRenderer, {
55691
- message: f
55692
- })
55693
- }), r[4] = f, r[5] = v), v;
55694
- };
55695
- function isMimeValue(e) {
55696
- return typeof e == "object" && !!e && "mimetype" in e && "data" in e;
55697
- }
55698
- function getMimeValues(e) {
55699
- if (isMimeValue(e)) return [
55700
- e
55701
- ];
55702
- if (typeof e == "object" && e && ("_serialized_mime_bundle" in e || "serialized_mime_bundle" in e)) {
55703
- let r = e, c = r._serialized_mime_bundle || r.serialized_mime_bundle;
55704
- if (isMimeValue(c)) return [
55705
- c
55706
- ];
55707
- }
55708
- if (Array.isArray(e) && e.every(isMimeValue)) return e.map((e2) => e2);
55709
- }
55710
56019
  function uniformSample(e, r) {
55711
56020
  if (e.length <= r) return e;
55712
56021
  let c = [], d = e.length / r;
@@ -56411,7 +56720,7 @@ Database schema: ${c}`), (_a4 = r2.aiFix) == null ? void 0 : _a4.setAiCompletion
56411
56720
  hasConsoleOutput: (v == null ? void 0 : v.consoleOutputs) != null
56412
56721
  };
56413
56722
  }
56414
- const LazyAnyLanguageCodeMirror = (0, import_react.lazy)(() => import("./any-language-editor-DlsjUw_l.js"));
56723
+ const LazyAnyLanguageCodeMirror = (0, import_react.lazy)(() => import("./any-language-editor-BRpxklRq.js"));
56415
56724
  var import_compiler_runtime$117 = require_compiler_runtime(), extensions = [
56416
56725
  EditorView.lineWrapping
56417
56726
  ];
@@ -57305,22 +57614,30 @@ ${r}
57305
57614
  ];
57306
57615
  }
57307
57616
  function getCellValues(e, r) {
57308
- let c = /* @__PURE__ */ new Map();
57309
- for (let d of r) {
57310
- if (d.includes("__select__")) continue;
57311
- let { rowId: r2, columnId: f } = getRowAndColumnId(d), _ = e.getRow(r2);
57312
- if (!_) continue;
57313
- let v = _.getValue(f), y = c.get(r2) ?? [];
57314
- y.push(stringifyUnknownValue({
57315
- value: v
57316
- })), c.set(r2, y);
57617
+ let c = /* @__PURE__ */ new Map(), d = false;
57618
+ for (let f2 of r) {
57619
+ if (f2.includes("__select__")) continue;
57620
+ let { rowId: r2, columnId: _2 } = getRowAndColumnId(f2), v2 = e.getRow(r2);
57621
+ if (!v2) continue;
57622
+ let { text: y, html: S } = getClipboardContent(getRawValue(e, v2.index, _2), v2.getValue(_2));
57623
+ S && (d = true);
57624
+ let w = c.get(r2) ?? [];
57625
+ w.push({
57626
+ text: y,
57627
+ html: S
57628
+ }), c.set(r2, w);
57317
57629
  }
57318
- return getTabSeparatedValues([
57630
+ let f = [
57319
57631
  ...c.values()
57320
- ]);
57632
+ ], _ = f.map((e2) => e2.map((e3) => e3.text).join(" ")).join("\n"), v;
57633
+ return d && (v = `<table>${f.map((e2) => `<tr>${e2.map((e3) => `<td>${e3.html ?? escapeHtml(e3.text)}</td>`).join("")}</tr>`).join("")}</table>`), {
57634
+ text: _,
57635
+ html: v
57636
+ };
57321
57637
  }
57322
- function getTabSeparatedValues(e) {
57323
- return e.map((e2) => e2.join(" ")).join("\n");
57638
+ function escapeHtml(e) {
57639
+ let r = document.createElement("div");
57640
+ return r.textContent = e, r.innerHTML;
57324
57641
  }
57325
57642
  function countDataCellsInSelection(e) {
57326
57643
  let r = 0;
@@ -57333,7 +57650,7 @@ ${r}
57333
57650
  if (d.includes("__select__")) continue;
57334
57651
  let { rowId: r2, columnId: f } = getRowAndColumnId(d), _ = e.getRow(r2);
57335
57652
  if (!_) continue;
57336
- let v = _.getValue(f), y;
57653
+ let v = getRawValue(e, _.index, f) ?? _.getValue(f), y;
57337
57654
  if (typeof v == "number") y = v;
57338
57655
  else if (typeof v == "string") {
57339
57656
  if (v.trim() === "") continue;
@@ -57450,10 +57767,12 @@ ${r}
57450
57767
  },
57451
57768
  handleCopy: (e, { table: r, onCopyComplete: c }) => {
57452
57769
  let d = window.getSelection();
57453
- return d && d.toString().length > 0 ? e : (copyToClipboard(getCellValues(r, e.selectedCells)), c(), {
57770
+ if (d && d.toString().length > 0) return e;
57771
+ let { text: f, html: _ } = getCellValues(r, e.selectedCells);
57772
+ return copyToClipboard(f, _), c(), {
57454
57773
  ...e,
57455
57774
  copiedCells: e.selectedCells
57456
- });
57775
+ };
57457
57776
  },
57458
57777
  navigate: (e, { direction: r, isShiftKey: c, table: d }) => {
57459
57778
  let f = e.focusedCell ?? e.selectedStartCell;
@@ -58403,18 +58722,17 @@ ${r}
58403
58722
  Logger.error("No cell found in context menu");
58404
58723
  return;
58405
58724
  }
58406
- let f = () => {
58725
+ let f = d.getContext().table, _ = d.getValue(), v = getRawValue(f, d.row.index, d.column.id) ?? _, y = () => {
58407
58726
  try {
58408
- copyToClipboard(stringifyUnknownValue({
58409
- value: d.getValue()
58410
- }));
58727
+ let { text: e2, html: r2 } = getClipboardContent(v, _);
58728
+ copyToClipboard(e2, r2);
58411
58729
  } catch (e2) {
58412
58730
  Logger.error("Failed to copy context menu cell", e2);
58413
58731
  }
58414
- }, _ = d.column, v = _.getCanFilter() && ((_a3 = _.columnDef.meta) == null ? void 0 : _a3.filterType), y = (e2) => {
58415
- _.setFilterValue(Filter.select({
58732
+ }, w = d.column, O = w.getCanFilter() && ((_a3 = w.columnDef.meta) == null ? void 0 : _a3.filterType), M = (e2) => {
58733
+ w.setFilterValue(Filter.select({
58416
58734
  options: [
58417
- d.getValue()
58735
+ v
58418
58736
  ],
58419
58737
  operator: e2
58420
58738
  }));
@@ -58422,7 +58740,7 @@ ${r}
58422
58740
  return (0, import_jsx_runtime.jsxs)(ContextMenuContent, {
58423
58741
  children: [
58424
58742
  (0, import_jsx_runtime.jsxs)(ContextMenuItem, {
58425
- onClick: f,
58743
+ onClick: y,
58426
58744
  children: [
58427
58745
  (0, import_jsx_runtime.jsx)(Copy, {
58428
58746
  className: "mo-dropdown-icon h-3 w-3"
@@ -58439,11 +58757,11 @@ ${r}
58439
58757
  "Copy selected cells"
58440
58758
  ]
58441
58759
  }),
58442
- v && (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
58760
+ O && (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
58443
58761
  children: [
58444
58762
  (0, import_jsx_runtime.jsx)(ContextMenuSeparator, {}),
58445
58763
  (0, import_jsx_runtime.jsxs)(ContextMenuItem, {
58446
- onClick: () => y("in"),
58764
+ onClick: () => M("in"),
58447
58765
  children: [
58448
58766
  (0, import_jsx_runtime.jsx)(Funnel, {
58449
58767
  className: "mo-dropdown-icon h-3 w-3"
@@ -58452,7 +58770,7 @@ ${r}
58452
58770
  ]
58453
58771
  }),
58454
58772
  (0, import_jsx_runtime.jsxs)(ContextMenuItem, {
58455
- onClick: () => y("not_in"),
58773
+ onClick: () => M("not_in"),
58456
58774
  children: [
58457
58775
  (0, import_jsx_runtime.jsx)(Funnel, {
58458
58776
  className: "mo-dropdown-icon h-3 w-3"
@@ -58976,9 +59294,16 @@ ${r}
58976
59294
  }
58977
59295
  var isSlotElement = (e) => e.tagName != null && e.tagName.toUpperCase() === "SLOT", isSVGElement = (e) => e.tagName != null && e.tagName.toUpperCase() === "SVG";
58978
59296
  async function cloneChildren(e, r, c) {
59297
+ var _a3;
58979
59298
  if (isSVGElement(r)) return r;
58980
59299
  let d = [];
58981
- return d = isSlotElement(e) && e.assignedNodes ? toArray(e.assignedNodes()) : toArray((e.shadowRoot ?? e).childNodes), d.length === 0 || isInstanceOfElement(e, HTMLVideoElement) || await d.reduce((e2, d2) => e2.then(() => cloneNode(d2, c)).then((e3) => {
59300
+ if (isSlotElement(e) && e.assignedNodes) d = toArray(e.assignedNodes());
59301
+ else if (isInstanceOfElement(e, HTMLIFrameElement)) try {
59302
+ ((_a3 = e.contentDocument) == null ? void 0 : _a3.body) && (d = toArray(e.contentDocument.body.childNodes));
59303
+ } catch {
59304
+ }
59305
+ else d = toArray((e.shadowRoot ?? e).childNodes);
59306
+ return d.length === 0 || isInstanceOfElement(e, HTMLVideoElement) || await d.reduce((e2, d2) => e2.then(() => cloneNode(d2, c)).then((e3) => {
58982
59307
  e3 && r.appendChild(e3);
58983
59308
  }), Promise.resolve()), r;
58984
59309
  }
@@ -59190,12 +59515,13 @@ ${r}
59190
59515
  return getWebFontRules(await getCSSRules(toArray(e.ownerDocument.styleSheets), r));
59191
59516
  }
59192
59517
  function normalizeFontFamily(e) {
59193
- return e.trim().replace(/["']/g, "");
59518
+ return (e || "").trim().replace(/["']/g, "");
59194
59519
  }
59195
59520
  function getUsedFonts(e) {
59196
59521
  let r = /* @__PURE__ */ new Set();
59197
59522
  function c(e2) {
59198
- (e2.style.fontFamily || getComputedStyle(e2).fontFamily).split(",").forEach((e3) => {
59523
+ let d = e2.style.fontFamily || getComputedStyle(e2).fontFamily;
59524
+ d && d.split(",").forEach((e3) => {
59199
59525
  r.add(normalizeFontFamily(e3));
59200
59526
  }), Array.from(e2.children).forEach((e3) => {
59201
59527
  e3 instanceof HTMLElement && c(e3);
@@ -59211,7 +59537,7 @@ ${r}
59211
59537
  }))).join("\n");
59212
59538
  }
59213
59539
  async function embedWebFonts(e, r) {
59214
- let c = r.fontEmbedCSS == null ? r.skipFonts ? null : await getWebFontCSS(e, r) : r.fontEmbedCSS, d = r.extraStyleContent == null ? c : r.extraStyleContent.concat(c || "");
59540
+ let c = r.fontEmbedCSS == null ? r.skipFonts ? null : await getWebFontCSS(e, r) : r.fontEmbedCSS, d = r.extraStyleContent == null ? c : (c || "").concat(r.extraStyleContent);
59215
59541
  if (d) {
59216
59542
  let r2 = document.createElement("style"), c2 = document.createTextNode(d);
59217
59543
  r2.appendChild(c2), e.firstChild ? e.insertBefore(r2, e.firstChild) : e.appendChild(r2);
@@ -59240,6 +59566,7 @@ ${r}
59240
59566
  return Logger.error("Error filtering node:", e2), true;
59241
59567
  }
59242
59568
  },
59569
+ imagePlaceholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQI12NgAAIABQABNjN9GQAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAA0lEQVQI12P4z8BQDwAEgAF/QualIQAAAABJRU5ErkJggg==",
59243
59570
  onImageErrorHandler: (e) => {
59244
59571
  Logger.error("Error loading image:", e);
59245
59572
  },
@@ -59423,10 +59750,10 @@ Defaulting to \`null\`.`;
59423
59750
  d && (v = d(r));
59424
59751
  try {
59425
59752
  downloadByURL(await toPng(r), Filenames.toPNG(c));
59426
- } catch {
59427
- toast({
59428
- title: "Error",
59429
- description: "Failed to download as PNG.",
59753
+ } catch (e2) {
59754
+ Logger.error("Error downloading as PNG", e2), toast({
59755
+ title: "Failed to download as PNG",
59756
+ description: prettyError(e2),
59430
59757
  variant: "danger"
59431
59758
  });
59432
59759
  } finally {
@@ -60063,22 +60390,22 @@ Defaulting to \`null\`.`;
60063
60390
  })
60064
60391
  })
60065
60392
  ]
60066
- }), DataTable = (0, import_react.memo)(({ wrapperClassName: e, className: r, maxHeight: c, columns: d, data: f, selection: _, totalColumns: v, totalRows: y, manualSorting: S = false, sorting: w, setSorting: E, rowSelection: O, cellSelection: M, cellStyling: I, hoverTemplate: z, cellHoverTexts: G, paginationState: q, setPaginationState: IY, downloadAs: LY, downloadFileName: RY, manualPagination: zY = false, pagination: BY = false, onRowSelectionChange: VY, onCellSelectionChange: HY, getRowIds: UY, enableSearch: WY = false, searchQuery: GY, onSearchQueryChange: KY, showFilters: qY = false, filters: JY, onFiltersChange: YY, reloading: XY, freezeColumnsLeft: ZY, freezeColumnsRight: QY, toggleDisplayHeader: $Y, showChartBuilder: eX, showPageSizeSelector: tX, showColumnExplorer: nX, showRowExplorer: rX, togglePanel: iX, isPanelOpen: aX, viewedRowIdx: oX, onViewedRowChange: sX }) => {
60067
- let [cX, lX] = import_react.useState(false), [uX, dX] = import_react.useState(false), { locale: fX } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), { columnPinning: pX, setColumnPinning: mX } = useColumnPinning(ZY, QY);
60393
+ }), DataTable = (0, import_react.memo)(({ wrapperClassName: e, className: r, maxHeight: c, columns: d, data: f, rawData: _, selection: v, totalColumns: y, totalRows: S, manualSorting: w = false, sorting: E, setSorting: O, rowSelection: M, cellSelection: I, cellStyling: z, hoverTemplate: G, cellHoverTexts: q, paginationState: IY, setPaginationState: LY, downloadAs: RY, downloadFileName: zY, manualPagination: BY = false, pagination: VY = false, onRowSelectionChange: HY, onCellSelectionChange: UY, getRowIds: WY, enableSearch: GY = false, searchQuery: KY, onSearchQueryChange: qY, showFilters: JY = false, filters: YY, onFiltersChange: XY, reloading: ZY, freezeColumnsLeft: QY, freezeColumnsRight: $Y, toggleDisplayHeader: eX, showChartBuilder: tX, showPageSizeSelector: nX, showColumnExplorer: rX, showRowExplorer: iX, togglePanel: aX, isPanelOpen: oX, viewedRowIdx: sX, onViewedRowChange: cX }) => {
60394
+ let [lX, uX] = import_react.useState(false), [dX, fX] = import_react.useState(false), { locale: pX } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), { columnPinning: mX, setColumnPinning: hX } = useColumnPinning(QY, $Y);
60068
60395
  import_react.useEffect(() => {
60069
60396
  let e2;
60070
- return XY ? e2 = setTimeout(() => {
60071
- dX(true);
60072
- }, 300) : dX(false), () => {
60397
+ return ZY ? e2 = setTimeout(() => {
60398
+ fX(true);
60399
+ }, 300) : fX(false), () => {
60073
60400
  e2 && clearTimeout(e2);
60074
60401
  };
60075
60402
  }, [
60076
- XY
60403
+ ZY
60077
60404
  ]);
60078
- function hX(e2, r2) {
60079
- return q ? r2 + (zY ? q.pageIndex * q.pageSize : 0) : r2;
60405
+ function gX(e2, r2) {
60406
+ return IY ? r2 + (BY ? IY.pageIndex * IY.pageSize : 0) : r2;
60080
60407
  }
60081
- let gX = useReactTable({
60408
+ let _X = useReactTable({
60082
60409
  _features: [
60083
60410
  ColumnPinning,
60084
60411
  ColumnWrappingFeature,
@@ -60092,61 +60419,64 @@ Defaulting to \`null\`.`;
60092
60419
  ],
60093
60420
  data: f,
60094
60421
  columns: d,
60422
+ meta: {
60423
+ rawData: _
60424
+ },
60095
60425
  getCoreRowModel: getCoreRowModel(),
60096
- rowCount: y === "too_many" ? void 0 : y,
60097
- ...IY ? {
60098
- onPaginationChange: IY,
60426
+ rowCount: S === "too_many" ? void 0 : S,
60427
+ ...LY ? {
60428
+ onPaginationChange: LY,
60099
60429
  getRowId: (e2, r2) => {
60100
60430
  let c2 = getStableRowId(e2);
60101
60431
  if (c2) return c2;
60102
- let d2 = hX(e2, r2);
60432
+ let d2 = gX(e2, r2);
60103
60433
  return String(d2);
60104
60434
  }
60105
60435
  } : {},
60106
- locale: fX,
60107
- manualPagination: zY,
60436
+ locale: pX,
60437
+ manualPagination: BY,
60108
60438
  getPaginationRowModel: getPaginationRowModel(),
60109
- ...E ? {
60110
- onSortingChange: E
60439
+ ...O ? {
60440
+ onSortingChange: O
60111
60441
  } : {},
60112
- manualSorting: S,
60442
+ manualSorting: w,
60113
60443
  enableMultiSort: true,
60114
60444
  getSortedRowModel: getSortedRowModel(),
60115
60445
  manualFiltering: true,
60116
- enableColumnFilters: qY,
60446
+ enableColumnFilters: JY,
60117
60447
  getFilteredRowModel: getFilteredRowModel(),
60118
- onColumnFiltersChange: YY,
60119
- onRowSelectionChange: VY,
60120
- onCellSelectionChange: HY,
60121
- enableCellSelection: _ === "single-cell" || _ === "multi-cell",
60122
- enableMultiCellSelection: _ === "multi-cell",
60123
- onColumnPinningChange: mX,
60448
+ onColumnFiltersChange: XY,
60449
+ onRowSelectionChange: HY,
60450
+ onCellSelectionChange: UY,
60451
+ enableCellSelection: v === "single-cell" || v === "multi-cell",
60452
+ enableMultiCellSelection: v === "multi-cell",
60453
+ onColumnPinningChange: hX,
60124
60454
  enableFocusRow: true,
60125
- onFocusRowChange: sX,
60455
+ onFocusRowChange: cX,
60126
60456
  state: {
60127
- ...w ? {
60128
- sorting: w
60457
+ ...E ? {
60458
+ sorting: E
60129
60459
  } : {},
60130
- columnFilters: JY,
60131
- ...q ? {
60132
- pagination: q
60133
- } : BY && !q ? {} : {
60460
+ columnFilters: YY,
60461
+ ...IY ? {
60462
+ pagination: IY
60463
+ } : VY && !IY ? {} : {
60134
60464
  pagination: {
60135
60465
  pageIndex: 0,
60136
60466
  pageSize: f.length
60137
60467
  }
60138
60468
  },
60139
- rowSelection: O ?? {},
60140
- cellSelection: M ?? [],
60141
- cellStyling: I,
60142
- columnPinning: pX,
60143
- cellHoverTemplate: z,
60144
- cellHoverTexts: G ?? {}
60145
- }
60146
- }), _X = (aX == null ? void 0 : aX("row-viewer")) ?? false, vX = import_react.useRef(null);
60469
+ rowSelection: M ?? {},
60470
+ cellSelection: I ?? [],
60471
+ cellStyling: z,
60472
+ columnPinning: mX,
60473
+ cellHoverTemplate: G,
60474
+ cellHoverTexts: q ?? {}
60475
+ }
60476
+ }), vX = (oX == null ? void 0 : oX("row-viewer")) ?? false, yX = import_react.useRef(null);
60147
60477
  return import_react.useEffect(() => {
60148
- if (!vX.current) return;
60149
- let e2 = vX.current.parentElement;
60478
+ if (!yX.current) return;
60479
+ let e2 = yX.current.parentElement;
60150
60480
  e2 && (c ? (e2.style.maxHeight = `${c}px`, e2.style.overflow || (e2.style.overflow = "auto")) : e2.style.removeProperty("max-height"));
60151
60481
  }, [
60152
60482
  c
@@ -60154,67 +60484,67 @@ Defaulting to \`null\`.`;
60154
60484
  className: cn(e, "flex flex-col space-y-1"),
60155
60485
  children: [
60156
60486
  (0, import_jsx_runtime.jsx)(FilterPills, {
60157
- filters: JY,
60158
- table: gX
60487
+ filters: YY,
60488
+ table: _X
60159
60489
  }),
60160
60490
  (0, import_jsx_runtime.jsxs)(CellSelectionProvider, {
60161
60491
  children: [
60162
60492
  (0, import_jsx_runtime.jsxs)("div", {
60163
60493
  className: cn(r || "rounded-md border overflow-hidden"),
60164
60494
  children: [
60165
- KY && WY && (0, import_jsx_runtime.jsx)(SearchBar, {
60166
- value: GY || "",
60167
- onHide: () => lX(false),
60168
- handleSearch: KY,
60169
- hidden: !cX,
60170
- reloading: XY
60495
+ qY && GY && (0, import_jsx_runtime.jsx)(SearchBar, {
60496
+ value: KY || "",
60497
+ onHide: () => uX(false),
60498
+ handleSearch: qY,
60499
+ hidden: !lX,
60500
+ reloading: ZY
60171
60501
  }),
60172
60502
  (0, import_jsx_runtime.jsxs)(Table, {
60173
60503
  className: "relative",
60174
- ref: vX,
60504
+ ref: yX,
60175
60505
  children: [
60176
- uX && (0, import_jsx_runtime.jsx)("thead", {
60506
+ dX && (0, import_jsx_runtime.jsx)("thead", {
60177
60507
  className: "absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide"
60178
60508
  }),
60179
- renderTableHeader(gX, !!c),
60509
+ renderTableHeader(_X, !!c),
60180
60510
  (0, import_jsx_runtime.jsx)(DataTableBody, {
60181
- table: gX,
60511
+ table: _X,
60182
60512
  columns: d,
60183
- rowViewerPanelOpen: _X,
60184
- getRowIndex: hX,
60185
- viewedRowIdx: oX
60513
+ rowViewerPanelOpen: vX,
60514
+ getRowIndex: gX,
60515
+ viewedRowIdx: sX
60186
60516
  })
60187
60517
  ]
60188
60518
  })
60189
60519
  ]
60190
60520
  }),
60191
60521
  (0, import_jsx_runtime.jsx)(CellSelectionStats, {
60192
- table: gX,
60522
+ table: _X,
60193
60523
  className: "px-2 pt-1 ml-auto"
60194
60524
  })
60195
60525
  ]
60196
60526
  }),
60197
60527
  (0, import_jsx_runtime.jsx)(TableActions, {
60198
- enableSearch: WY,
60199
- totalColumns: v,
60200
- onSearchQueryChange: KY,
60201
- isSearchEnabled: cX,
60202
- setIsSearchEnabled: lX,
60203
- pagination: BY,
60204
- selection: _,
60205
- onRowSelectionChange: VY,
60206
- table: gX,
60207
- downloadAs: LY,
60208
- downloadFileName: RY,
60209
- getRowIds: UY,
60210
- toggleDisplayHeader: $Y,
60211
- showChartBuilder: eX,
60212
- showPageSizeSelector: tX,
60213
- showColumnExplorer: nX,
60214
- showRowExplorer: rX,
60215
- togglePanel: iX,
60216
- isPanelOpen: aX,
60217
- tableLoading: XY
60528
+ enableSearch: GY,
60529
+ totalColumns: y,
60530
+ onSearchQueryChange: qY,
60531
+ isSearchEnabled: lX,
60532
+ setIsSearchEnabled: uX,
60533
+ pagination: VY,
60534
+ selection: v,
60535
+ onRowSelectionChange: HY,
60536
+ table: _X,
60537
+ downloadAs: RY,
60538
+ downloadFileName: zY,
60539
+ getRowIds: WY,
60540
+ toggleDisplayHeader: eX,
60541
+ showChartBuilder: tX,
60542
+ showPageSizeSelector: nX,
60543
+ showColumnExplorer: rX,
60544
+ showRowExplorer: iX,
60545
+ togglePanel: aX,
60546
+ isPanelOpen: oX,
60547
+ tableLoading: ZY
60218
60548
  })
60219
60549
  ]
60220
60550
  });
@@ -70777,7 +71107,7 @@ Image URL: ${r.imageUrl}`)), contextToXml({
70777
71107
  return Logger.warn("Failed to get version from mount config"), null;
70778
71108
  }
70779
71109
  }
70780
- const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.21.2-dev6"), showCodeInRunModeAtom = atom(true);
71110
+ const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.21.2-dev61"), showCodeInRunModeAtom = atom(true);
70781
71111
  atom(null);
70782
71112
  var import_compiler_runtime$89 = require_compiler_runtime();
70783
71113
  function useKeydownOnElement(e, r) {
@@ -72336,7 +72666,7 @@ Image URL: ${r.imageUrl}`)), contextToXml({
72336
72666
  "time",
72337
72667
  "unknown"
72338
72668
  ];
72339
- var import_compiler_runtime$82 = require_compiler_runtime(), LazyDataEditor = import_react.lazy(() => import("./glide-data-editor-pZyd9UJ_.js").then(async (m2) => {
72669
+ var import_compiler_runtime$82 = require_compiler_runtime(), LazyDataEditor = import_react.lazy(() => import("./glide-data-editor-858wsVkd.js").then(async (m2) => {
72340
72670
  await m2.__tla;
72341
72671
  return m2;
72342
72672
  }));
@@ -80984,6 +81314,10 @@ ${c}
80984
81314
  string(),
80985
81315
  array(object$1({}).passthrough())
80986
81316
  ]),
81317
+ rawData: union([
81318
+ string(),
81319
+ array(looseObject({}))
81320
+ ]).nullish(),
80987
81321
  totalRows: union([
80988
81322
  number(),
80989
81323
  literal(TOO_MANY_ROWS)
@@ -81067,7 +81401,11 @@ ${c}
81067
81401
  literal(TOO_MANY_ROWS)
81068
81402
  ]),
81069
81403
  cell_styles: record(string(), record(string(), object$1({}).passthrough())).nullable(),
81070
- cell_hover_texts: cellHoverTextSchema.nullable()
81404
+ cell_hover_texts: cellHoverTextSchema.nullable(),
81405
+ raw_data: union([
81406
+ string(),
81407
+ array(looseObject({}))
81408
+ ]).nullish()
81071
81409
  })),
81072
81410
  get_row_ids: rpc.input(object$1({}).passthrough()).output(object$1({
81073
81411
  row_ids: array(number()),
@@ -81161,7 +81499,7 @@ ${c}
81161
81499
  return d;
81162
81500
  };
81163
81501
  const LoadingDataTableComponent = (0, import_react.memo)((e) => {
81164
- let r = (0, import_compiler_runtime$58.c)(101), c;
81502
+ let r = (0, import_compiler_runtime$58.c)(103), c;
81165
81503
  r[0] === e.host ? c = r[1] : (c = findCellId(e.host), r[0] = e.host, r[1] = c);
81166
81504
  let d = c, f = e.search, _ = e.setValue, v;
81167
81505
  r[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (v = [], r[2] = v) : v = r[2];
@@ -81196,33 +81534,35 @@ ${c}
81196
81534
  e.pageSize
81197
81535
  ], r[18] = e.pageSize, r[19] = VY, r[20] = HY), (0, import_react.useEffect)(VY, HY);
81198
81536
  let UY;
81199
- r[21] !== G || r[22] !== E.pageIndex || r[23] !== E.pageSize || r[24] !== e.cellHoverTexts || r[25] !== e.cellStyles || r[26] !== e.data || r[27] !== e.lazy || r[28] !== e.pageSize || r[29] !== e.totalRows || r[30] !== f || r[31] !== M || r[32] !== y ? (UY = async () => {
81537
+ r[21] !== G || r[22] !== E.pageIndex || r[23] !== E.pageSize || r[24] !== e.cellHoverTexts || r[25] !== e.cellStyles || r[26] !== e.data || r[27] !== e.lazy || r[28] !== e.pageSize || r[29] !== e.rawData || r[30] !== e.totalRows || r[31] !== f || r[32] !== M || r[33] !== y ? (UY = async () => {
81200
81538
  if (e.totalRows === 0) return {
81201
81539
  rows: Arrays.EMPTY,
81202
81540
  totalRows: 0,
81203
81541
  cellStyles: {}
81204
81542
  };
81205
- let r2 = e.data, c2 = e.totalRows, d2 = e.cellStyles, _2 = e.cellHoverTexts, v2 = E.pageSize !== e.pageSize, S2 = M === "" && E.pageIndex === 0 && G.length === 0 && y.length === 0 && !e.lazy && !v2, w2 = f({
81543
+ let r2 = e.data, c2 = e.rawData, d2 = e.totalRows, _2 = e.cellStyles, v2 = e.cellHoverTexts, S2 = E.pageSize !== e.pageSize, w2 = M === "" && E.pageIndex === 0 && G.length === 0 && y.length === 0 && !e.lazy && !S2, O2 = f({
81206
81544
  sort: y.length > 0 ? y.map(_temp$19) : void 0,
81207
81545
  query: M,
81208
81546
  page_number: E.pageIndex,
81209
81547
  page_size: E.pageSize,
81210
81548
  filters: G.flatMap(_temp2$15)
81211
81549
  });
81212
- if (S2) w2.catch(_temp3$10);
81550
+ if (w2) O2.catch(_temp3$10);
81213
81551
  else {
81214
- let e2 = await w2;
81215
- r2 = e2.data, c2 = e2.total_rows, d2 = e2.cell_styles || {}, _2 = e2.cell_hover_texts || {};
81552
+ let e2 = await O2;
81553
+ r2 = e2.data, c2 = e2.raw_data, d2 = e2.total_rows, _2 = e2.cell_styles || {}, v2 = e2.cell_hover_texts || {};
81216
81554
  }
81217
- return r2 = await loadTableData(r2), {
81555
+ let [I2, z2] = await loadTableAndRawData(r2, c2);
81556
+ return r2 = I2, {
81218
81557
  rows: r2,
81219
- totalRows: c2,
81220
- cellStyles: d2,
81221
- cellHoverTexts: _2
81558
+ rawRows: z2,
81559
+ totalRows: d2,
81560
+ cellStyles: _2,
81561
+ cellHoverTexts: v2
81222
81562
  };
81223
- }, r[21] = G, r[22] = E.pageIndex, r[23] = E.pageSize, r[24] = e.cellHoverTexts, r[25] = e.cellStyles, r[26] = e.data, r[27] = e.lazy, r[28] = e.pageSize, r[29] = e.totalRows, r[30] = f, r[31] = M, r[32] = y, r[33] = UY) : UY = r[33];
81563
+ }, r[21] = G, r[22] = E.pageIndex, r[23] = E.pageSize, r[24] = e.cellHoverTexts, r[25] = e.cellStyles, r[26] = e.data, r[27] = e.lazy, r[28] = e.pageSize, r[29] = e.rawData, r[30] = e.totalRows, r[31] = f, r[32] = M, r[33] = y, r[34] = UY) : UY = r[34];
81224
81564
  let WY = useDeepCompareMemoize(e.fieldTypes), GY;
81225
- r[34] !== G || r[35] !== E.pageIndex || r[36] !== E.pageSize || r[37] !== e.cellHoverTexts || r[38] !== e.cellStyles || r[39] !== e.data || r[40] !== e.lazy || r[41] !== e.totalRows || r[42] !== f || r[43] !== M || r[44] !== y || r[45] !== WY ? (GY = [
81565
+ r[35] !== G || r[36] !== E.pageIndex || r[37] !== E.pageSize || r[38] !== e.cellHoverTexts || r[39] !== e.cellStyles || r[40] !== e.data || r[41] !== e.lazy || r[42] !== e.totalRows || r[43] !== f || r[44] !== M || r[45] !== y || r[46] !== WY ? (GY = [
81226
81566
  y,
81227
81567
  f,
81228
81568
  G,
@@ -81235,9 +81575,9 @@ ${c}
81235
81575
  e.cellStyles,
81236
81576
  E.pageSize,
81237
81577
  E.pageIndex
81238
- ], r[34] = G, r[35] = E.pageIndex, r[36] = E.pageSize, r[37] = e.cellHoverTexts, r[38] = e.cellStyles, r[39] = e.data, r[40] = e.lazy, r[41] = e.totalRows, r[42] = f, r[43] = M, r[44] = y, r[45] = WY, r[46] = GY) : GY = r[46];
81578
+ ], r[35] = G, r[36] = E.pageIndex, r[37] = E.pageSize, r[38] = e.cellHoverTexts, r[39] = e.cellStyles, r[40] = e.data, r[41] = e.lazy, r[42] = e.totalRows, r[43] = f, r[44] = M, r[45] = y, r[46] = WY, r[47] = GY) : GY = r[47];
81239
81579
  let { data: KY, error: qY, isPending: JY, isFetching: YY } = useAsyncData(UY, GY), XY;
81240
- r[47] !== G || r[48] !== f || r[49] !== M || r[50] !== y ? (XY = async (e2) => ({
81580
+ r[48] !== G || r[49] !== f || r[50] !== M || r[51] !== y ? (XY = async (e2) => ({
81241
81581
  rows: await loadTableData((await f({
81242
81582
  page_number: e2,
81243
81583
  page_size: 1,
@@ -81246,51 +81586,51 @@ ${c}
81246
81586
  filters: G.flatMap(_temp5$5),
81247
81587
  max_columns: null
81248
81588
  })).data)
81249
- }), r[47] = G, r[48] = f, r[49] = M, r[50] = y, r[51] = XY) : XY = r[51];
81589
+ }), r[48] = G, r[49] = f, r[50] = M, r[51] = y, r[52] = XY) : XY = r[52];
81250
81590
  let ZY = XY, QY;
81251
- r[52] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (QY = () => {
81591
+ r[53] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (QY = () => {
81252
81592
  O(_temp6$4);
81253
- }, r[52] = QY) : QY = r[52];
81593
+ }, r[53] = QY) : QY = r[53];
81254
81594
  let $Y = KY == null ? void 0 : KY.totalRows, eX;
81255
- r[53] === $Y ? eX = r[54] : (eX = [
81595
+ r[54] === $Y ? eX = r[55] : (eX = [
81256
81596
  $Y
81257
- ], r[53] = $Y, r[54] = eX), (0, import_react.useEffect)(QY, eX);
81597
+ ], r[54] = $Y, r[55] = eX), (0, import_react.useEffect)(QY, eX);
81258
81598
  let tX;
81259
- r[55] === e ? tX = r[56] : (tX = async () => e.totalRows === 0 || !e.showColumnSummaries ? {
81599
+ r[56] === e ? tX = r[57] : (tX = async () => e.totalRows === 0 || !e.showColumnSummaries ? {
81260
81600
  data: null,
81261
81601
  stats: {},
81262
81602
  bin_values: {},
81263
81603
  value_counts: {},
81264
81604
  show_charts: false
81265
- } : e.get_column_summaries({}), r[55] = e, r[56] = tX);
81605
+ } : e.get_column_summaries({}), r[56] = e, r[57] = tX);
81266
81606
  let nX;
81267
- r[57] !== G || r[58] !== e.data || r[59] !== e.get_column_summaries || r[60] !== e.showColumnSummaries || r[61] !== e.totalRows || r[62] !== M ? (nX = [
81607
+ r[58] !== G || r[59] !== e.data || r[60] !== e.get_column_summaries || r[61] !== e.showColumnSummaries || r[62] !== e.totalRows || r[63] !== M ? (nX = [
81268
81608
  e.get_column_summaries,
81269
81609
  e.showColumnSummaries,
81270
81610
  G,
81271
81611
  M,
81272
81612
  e.totalRows,
81273
81613
  e.data
81274
- ], r[57] = G, r[58] = e.data, r[59] = e.get_column_summaries, r[60] = e.showColumnSummaries, r[61] = e.totalRows, r[62] = M, r[63] = nX) : nX = r[63];
81614
+ ], r[58] = G, r[59] = e.data, r[60] = e.get_column_summaries, r[61] = e.showColumnSummaries, r[62] = e.totalRows, r[63] = M, r[64] = nX) : nX = r[64];
81275
81615
  let { data: rX, error: iX } = useAsyncData(tX, nX), aX, oX;
81276
- if (r[64] === iX ? (aX = r[65], oX = r[66]) : (aX = () => {
81616
+ if (r[65] === iX ? (aX = r[66], oX = r[67]) : (aX = () => {
81277
81617
  iX && Logger.error(iX);
81278
81618
  }, oX = [
81279
81619
  iX
81280
- ], r[64] = iX, r[65] = aX, r[66] = oX), (0, import_react.useEffect)(aX, oX), JY) {
81620
+ ], r[65] = iX, r[66] = aX, r[67] = oX), (0, import_react.useEffect)(aX, oX), JY) {
81281
81621
  let c2 = e.totalRows !== "too_many" && e.totalRows > 0 ? e.totalRows : e.pageSize, d2;
81282
- return r[67] === c2 ? d2 = r[68] : (d2 = (0, import_jsx_runtime.jsx)(DelayMount, {
81622
+ return r[68] === c2 ? d2 = r[69] : (d2 = (0, import_jsx_runtime.jsx)(DelayMount, {
81283
81623
  milliseconds: 200,
81284
81624
  children: (0, import_jsx_runtime.jsx)(LoadingTable, {
81285
81625
  pageSize: c2
81286
81626
  })
81287
- }), r[67] = c2, r[68] = d2), d2;
81627
+ }), r[68] = c2, r[69] = d2), d2;
81288
81628
  }
81289
81629
  let sX = null;
81290
81630
  if (qY) {
81291
81631
  Logger.error(qY);
81292
81632
  let e2;
81293
- r[69] === qY ? e2 = r[70] : (e2 = !isStaticNotebook() && (0, import_jsx_runtime.jsxs)(Alert, {
81633
+ r[70] === qY ? e2 = r[71] : (e2 = !isStaticNotebook() && (0, import_jsx_runtime.jsxs)(Alert, {
81294
81634
  variant: "destructive",
81295
81635
  className: "mb-2",
81296
81636
  children: [
@@ -81302,16 +81642,17 @@ ${c}
81302
81642
  children: qY.message || "An unknown error occurred"
81303
81643
  })
81304
81644
  ]
81305
- }), r[69] = qY, r[70] = e2), sX = e2;
81645
+ }), r[70] = qY, r[71] = e2), sX = e2;
81306
81646
  }
81307
81647
  let cX;
81308
- r[71] === LY ? cX = r[72] : (cX = () => {
81648
+ r[72] === LY ? cX = r[73] : (cX = () => {
81309
81649
  RY(!LY);
81310
- }, r[71] = LY, r[72] = cX);
81311
- let lX = cX, uX = (KY == null ? void 0 : KY.rows) ?? Arrays.EMPTY, dX = YY && !JY, fX = (KY == null ? void 0 : KY.totalRows) ?? e.totalRows, pX = (KY == null ? void 0 : KY.cellStyles) ?? e.cellStyles, mX = (KY == null ? void 0 : KY.cellHoverTexts) ?? e.cellHoverTexts, hX;
81312
- r[73] !== d || r[74] !== rX || r[75] !== G || r[76] !== ZY || r[77] !== E || r[78] !== e || r[79] !== M || r[80] !== y || r[81] !== uX || r[82] !== dX || r[83] !== fX || r[84] !== pX || r[85] !== mX || r[86] !== lX ? (hX = (0, import_jsx_runtime.jsx)(DataTableComponent, {
81650
+ }, r[72] = LY, r[73] = cX);
81651
+ let lX = cX, uX = (KY == null ? void 0 : KY.rows) ?? Arrays.EMPTY, dX = KY == null ? void 0 : KY.rawRows, fX = YY && !JY, pX = (KY == null ? void 0 : KY.totalRows) ?? e.totalRows, mX = (KY == null ? void 0 : KY.cellStyles) ?? e.cellStyles, hX = (KY == null ? void 0 : KY.cellHoverTexts) ?? e.cellHoverTexts, gX;
81652
+ r[74] !== d || r[75] !== rX || r[76] !== G || r[77] !== ZY || r[78] !== E || r[79] !== e || r[80] !== M || r[81] !== y || r[82] !== uX || r[83] !== dX || r[84] !== fX || r[85] !== pX || r[86] !== mX || r[87] !== hX || r[88] !== lX ? (gX = (0, import_jsx_runtime.jsx)(DataTableComponent, {
81313
81653
  ...e,
81314
81654
  data: uX,
81655
+ rawData: dX,
81315
81656
  columnSummaries: rX,
81316
81657
  sorting: y,
81317
81658
  setSorting: S,
@@ -81319,190 +81660,191 @@ ${c}
81319
81660
  setSearchQuery: I,
81320
81661
  filters: G,
81321
81662
  setFilters: q,
81322
- reloading: dX,
81323
- totalRows: fX,
81663
+ reloading: fX,
81664
+ totalRows: pX,
81324
81665
  paginationState: E,
81325
81666
  setPaginationState: O,
81326
- cellStyles: pX,
81327
- cellHoverTexts: mX,
81667
+ cellStyles: mX,
81668
+ cellHoverTexts: hX,
81328
81669
  toggleDisplayHeader: lX,
81329
81670
  getRow: ZY,
81330
81671
  cellId: d,
81331
81672
  maxHeight: e.maxHeight
81332
- }), r[73] = d, r[74] = rX, r[75] = G, r[76] = ZY, r[77] = E, r[78] = e, r[79] = M, r[80] = y, r[81] = uX, r[82] = dX, r[83] = fX, r[84] = pX, r[85] = mX, r[86] = lX, r[87] = hX) : hX = r[87];
81333
- let gX = hX, _X;
81334
- r[88] !== d || r[89] !== (KY == null ? void 0 : KY.rows) || r[90] !== gX || r[91] !== LY || r[92] !== e.fieldTypes || r[93] !== e.get_data_url || r[94] !== e.showChartBuilder || r[95] !== e.totalColumns || r[96] !== e.totalRows ? (_X = e.showChartBuilder ? (0, import_jsx_runtime.jsx)(TablePanel, {
81673
+ }), r[74] = d, r[75] = rX, r[76] = G, r[77] = ZY, r[78] = E, r[79] = e, r[80] = M, r[81] = y, r[82] = uX, r[83] = dX, r[84] = fX, r[85] = pX, r[86] = mX, r[87] = hX, r[88] = lX, r[89] = gX) : gX = r[89];
81674
+ let _X = gX, vX;
81675
+ r[90] !== d || r[91] !== _X || r[92] !== (KY == null ? void 0 : KY.rows) || r[93] !== LY || r[94] !== e.fieldTypes || r[95] !== e.get_data_url || r[96] !== e.showChartBuilder || r[97] !== e.totalColumns || r[98] !== e.totalRows ? (vX = e.showChartBuilder ? (0, import_jsx_runtime.jsx)(TablePanel, {
81335
81676
  displayHeader: LY,
81336
81677
  data: (KY == null ? void 0 : KY.rows) || [],
81337
81678
  columns: e.totalColumns,
81338
81679
  totalRows: e.totalRows,
81339
- dataTable: gX,
81680
+ dataTable: _X,
81340
81681
  getDataUrl: e.get_data_url,
81341
81682
  fieldTypes: e.fieldTypes,
81342
81683
  cellId: d
81343
- }) : gX, r[88] = d, r[89] = KY == null ? void 0 : KY.rows, r[90] = gX, r[91] = LY, r[92] = e.fieldTypes, r[93] = e.get_data_url, r[94] = e.showChartBuilder, r[95] = e.totalColumns, r[96] = e.totalRows, r[97] = _X) : _X = r[97];
81344
- let vX;
81345
- return r[98] !== sX || r[99] !== _X ? (vX = (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
81684
+ }) : _X, r[90] = d, r[91] = _X, r[92] = KY == null ? void 0 : KY.rows, r[93] = LY, r[94] = e.fieldTypes, r[95] = e.get_data_url, r[96] = e.showChartBuilder, r[97] = e.totalColumns, r[98] = e.totalRows, r[99] = vX) : vX = r[99];
81685
+ let yX;
81686
+ return r[100] !== sX || r[101] !== vX ? (yX = (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
81346
81687
  children: [
81347
81688
  sX,
81348
- _X
81689
+ vX
81349
81690
  ]
81350
- }), r[98] = sX, r[99] = _X, r[100] = vX) : vX = r[100], vX;
81691
+ }), r[100] = sX, r[101] = vX, r[102] = yX) : yX = r[102], yX;
81351
81692
  });
81352
81693
  LoadingDataTableComponent.displayName = "LoadingDataTableComponent";
81353
- var DataTableComponent = ({ label: e, data: r, totalRows: c, maxColumns: d, pagination: f, selection: _, value: v, showFilters: y, showDownload: S, showPageSizeSelector: w, showColumnExplorer: E, showRowExplorer: O, showChartBuilder: M, showDataTypes: I, rowHeaders: z, fieldTypes: G, paginationState: q, setPaginationState: IY, download_as: LY, columnSummaries: RY, className: zY, setValue: BY, sorting: VY, setSorting: HY, enableSearch: UY, searchQuery: WY, setSearchQuery: GY, filters: KY, setFilters: qY, reloading: JY, freezeColumnsLeft: YY, freezeColumnsRight: XY, textJustifyColumns: ZY, wrappedColumns: QY, headerTooltip: $Y, totalColumns: eX, get_row_ids: tX, cellStyles: nX, hoverTemplate: rX, cellHoverTexts: iX, downloadFileName: aX, toggleDisplayHeader: oX, calculate_top_k_rows: sX, preview_column: cX, getRow: lX, cellId: uX, maxHeight: dX }) => {
81354
- let fX = (0, import_react.useId)(), [pX, mX] = (0, import_react.useState)(0), { isPanelOpen: hX, togglePanel: gX } = usePanelOwnership(fX, uX), _X = (0, import_react.useMemo)(() => {
81355
- if (!RY || !G || !RY.stats) return ColumnChartSpecModel.EMPTY;
81356
- let e2 = toFieldTypes(G);
81357
- return new ColumnChartSpecModel(RY.data || [], e2, RY.stats, RY.bin_values, RY.value_counts, {
81358
- includeCharts: RY.show_charts
81694
+ var DataTableComponent = ({ label: e, data: r, rawData: c, totalRows: d, maxColumns: f, pagination: _, selection: v, value: y, showFilters: S, showDownload: w, showPageSizeSelector: E, showColumnExplorer: O, showRowExplorer: M, showChartBuilder: I, showDataTypes: z, rowHeaders: G, fieldTypes: q, paginationState: IY, setPaginationState: LY, download_as: RY, columnSummaries: zY, className: BY, setValue: VY, sorting: HY, setSorting: UY, enableSearch: WY, searchQuery: GY, setSearchQuery: KY, filters: qY, setFilters: JY, reloading: YY, freezeColumnsLeft: XY, freezeColumnsRight: ZY, textJustifyColumns: QY, wrappedColumns: $Y, headerTooltip: eX, totalColumns: tX, get_row_ids: nX, cellStyles: rX, hoverTemplate: iX, cellHoverTexts: aX, downloadFileName: oX, toggleDisplayHeader: sX, calculate_top_k_rows: cX, preview_column: lX, getRow: uX, cellId: dX, maxHeight: fX }) => {
81695
+ let pX = (0, import_react.useId)(), [mX, hX] = (0, import_react.useState)(0), { isPanelOpen: gX, togglePanel: _X } = usePanelOwnership(pX, dX), vX = (0, import_react.useMemo)(() => {
81696
+ if (!zY || !q || !zY.stats) return ColumnChartSpecModel.EMPTY;
81697
+ let e2 = toFieldTypes(q);
81698
+ return new ColumnChartSpecModel(zY.data || [], e2, zY.stats, zY.bin_values, zY.value_counts, {
81699
+ includeCharts: zY.show_charts
81359
81700
  });
81360
81701
  }, [
81361
- G,
81362
- RY
81363
- ]), vX = useDeepCompareMemoize(G ?? inferFieldTypes(r)), yX = (0, import_react.useMemo)(() => d === "all" ? vX : vX.slice(0, d), [
81364
- d,
81365
- vX
81366
- ]), bX = useDeepCompareMemoize(z), xX = useDeepCompareMemoize(ZY), SX = useDeepCompareMemoize(QY), CX = useDeepCompareMemoize(_X), wX = yX.length;
81367
- G || (I = false);
81368
- let TX = (0, import_react.useMemo)(() => generateColumns({
81369
- rowHeaders: bX,
81370
- selection: _,
81371
- chartSpecModel: CX,
81372
- fieldTypes: yX,
81373
- textJustifyColumns: xX,
81374
- wrappedColumns: SX,
81375
- headerTooltip: $Y,
81376
- showDataTypes: I,
81377
- calculateTopKRows: sX
81702
+ q,
81703
+ zY
81704
+ ]), yX = useDeepCompareMemoize(q ?? inferFieldTypes(r)), bX = (0, import_react.useMemo)(() => f === "all" ? yX : yX.slice(0, f), [
81705
+ f,
81706
+ yX
81707
+ ]), xX = useDeepCompareMemoize(G), SX = useDeepCompareMemoize(QY), CX = useDeepCompareMemoize($Y), wX = useDeepCompareMemoize(vX), TX = bX.length;
81708
+ q || (z = false);
81709
+ let EX = (0, import_react.useMemo)(() => generateColumns({
81710
+ rowHeaders: xX,
81711
+ selection: v,
81712
+ chartSpecModel: wX,
81713
+ fieldTypes: bX,
81714
+ textJustifyColumns: SX,
81715
+ wrappedColumns: CX,
81716
+ headerTooltip: eX,
81717
+ showDataTypes: z,
81718
+ calculateTopKRows: cX
81378
81719
  }), [
81379
- _,
81380
- I,
81381
- CX,
81382
- bX,
81383
- yX,
81720
+ v,
81721
+ z,
81722
+ wX,
81384
81723
  xX,
81724
+ bX,
81385
81725
  SX,
81386
- $Y,
81387
- sX
81388
- ]), EX = (0, import_react.useMemo)(() => Object.fromEntries((v || []).map((e2) => [
81726
+ CX,
81727
+ eX,
81728
+ cX
81729
+ ]), DX = (0, import_react.useMemo)(() => Object.fromEntries((y || []).map((e2) => [
81389
81730
  e2,
81390
81731
  true
81391
81732
  ])), [
81392
- v
81393
- ]), DX = useEvent_default((e2) => {
81394
- if (_ === "single") {
81733
+ y
81734
+ ]), OX = useEvent_default((e2) => {
81735
+ if (v === "single") {
81395
81736
  let r2 = Functions.asUpdater(e2)({});
81396
- BY(Object.keys(r2).slice(0, 1));
81737
+ VY(Object.keys(r2).slice(0, 1));
81397
81738
  }
81398
- if (_ === "multi") {
81399
- let r2 = Functions.asUpdater(e2)(EX);
81400
- BY(Object.keys(r2));
81739
+ if (v === "multi") {
81740
+ let r2 = Functions.asUpdater(e2)(DX);
81741
+ VY(Object.keys(r2));
81401
81742
  }
81402
- }), OX = useEvent_default((e2) => {
81403
- if (mX(e2), e2 < 0 || typeof c == "number" && e2 >= c || c === "too_many") return;
81404
- let r2 = getPageIndexForRow(e2, q.pageIndex, q.pageSize);
81405
- r2 !== null && IY((e3) => ({
81743
+ }), kX = useEvent_default((e2) => {
81744
+ if (hX(e2), e2 < 0 || typeof d == "number" && e2 >= d || d === "too_many") return;
81745
+ let r2 = getPageIndexForRow(e2, IY.pageIndex, IY.pageSize);
81746
+ r2 !== null && LY((e3) => ({
81406
81747
  ...e3,
81407
81748
  pageIndex: r2
81408
81749
  }));
81409
- }), kX = v.filter((e2) => e2 instanceof Object && e2.columnName !== void 0), AX = useEvent_default((e2) => {
81410
- _ === "single-cell" && BY(Functions.asUpdater(e2)(kX).slice(0, 1)), _ === "multi-cell" && BY(Functions.asUpdater(e2)(kX));
81411
- }), jX = _ === "multi" || _ === "single", MX = E && cX && hX("column-explorer"), NX = isInVscodeExtension();
81750
+ }), AX = y.filter((e2) => e2 instanceof Object && e2.columnName !== void 0), jX = useEvent_default((e2) => {
81751
+ v === "single-cell" && VY(Functions.asUpdater(e2)(AX).slice(0, 1)), v === "multi-cell" && VY(Functions.asUpdater(e2)(AX));
81752
+ }), MX = v === "multi" || v === "single", NX = O && lX && gX("column-explorer"), PX = isInVscodeExtension();
81412
81753
  return (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
81413
81754
  children: [
81414
- c === "too_many" && q.pageSize === r.length && (0, import_jsx_runtime.jsxs)(Banner, {
81755
+ d === "too_many" && IY.pageSize === r.length && (0, import_jsx_runtime.jsxs)(Banner, {
81415
81756
  className: "mb-1 rounded",
81416
81757
  children: [
81417
81758
  "Previewing the first ",
81418
- q.pageSize,
81759
+ IY.pageSize,
81419
81760
  " rows."
81420
81761
  ]
81421
81762
  }),
81422
- wX < eX && wX > 0 && (0, import_jsx_runtime.jsxs)(Banner, {
81763
+ TX < tX && TX > 0 && (0, import_jsx_runtime.jsxs)(Banner, {
81423
81764
  className: "mb-1 rounded",
81424
81765
  children: [
81425
81766
  "Result clipped. Showing ",
81426
- wX,
81767
+ TX,
81427
81768
  " of ",
81428
- eX,
81769
+ tX,
81429
81770
  " columns."
81430
81771
  ]
81431
81772
  }),
81432
- (RY == null ? void 0 : RY.is_disabled) && (0, import_jsx_runtime.jsx)(Banner, {
81773
+ (zY == null ? void 0 : zY.is_disabled) && (0, import_jsx_runtime.jsx)(Banner, {
81433
81774
  className: "mb-1 rounded",
81434
81775
  children: "Column summaries are unavailable. Filter your data to fewer than 1,000,000 rows."
81435
81776
  }),
81436
- hX("row-viewer") && (0, import_jsx_runtime.jsx)(ContextAwarePanelItem, {
81777
+ gX("row-viewer") && (0, import_jsx_runtime.jsx)(ContextAwarePanelItem, {
81437
81778
  children: (0, import_jsx_runtime.jsx)(RowViewerPanel, {
81438
- getRow: lX,
81439
- fieldTypes: vX,
81440
- totalRows: c,
81441
- rowIdx: pX,
81442
- setRowIdx: OX,
81443
- isSelectable: jX,
81444
- isRowSelected: EX[pX],
81445
- handleRowSelectionChange: DX
81779
+ getRow: uX,
81780
+ fieldTypes: yX,
81781
+ totalRows: d,
81782
+ rowIdx: mX,
81783
+ setRowIdx: kX,
81784
+ isSelectable: MX,
81785
+ isRowSelected: DX[mX],
81786
+ handleRowSelectionChange: OX
81446
81787
  })
81447
81788
  }),
81448
- MX && (0, import_jsx_runtime.jsx)(ContextAwarePanelItem, {
81789
+ NX && (0, import_jsx_runtime.jsx)(ContextAwarePanelItem, {
81449
81790
  children: (0, import_jsx_runtime.jsx)(ColumnExplorerPanel, {
81450
- previewColumn: cX,
81451
- fieldTypes: vX,
81452
- totalRows: c,
81453
- totalColumns: eX,
81454
- tableId: fX
81791
+ previewColumn: lX,
81792
+ fieldTypes: yX,
81793
+ totalRows: d,
81794
+ totalColumns: tX,
81795
+ tableId: pX
81455
81796
  })
81456
81797
  }),
81457
81798
  (0, import_jsx_runtime.jsx)(ColumnChartContext, {
81458
- value: _X,
81799
+ value: vX,
81459
81800
  children: (0, import_jsx_runtime.jsx)(Labeled, {
81460
81801
  label: e,
81461
81802
  align: "top",
81462
81803
  fullWidth: true,
81463
81804
  children: (0, import_jsx_runtime.jsx)(DataTable, {
81464
81805
  data: r,
81465
- columns: TX,
81466
- className: zY,
81467
- maxHeight: dX,
81468
- sorting: VY,
81469
- totalRows: c,
81470
- totalColumns: eX,
81806
+ rawData: c,
81807
+ columns: EX,
81808
+ className: BY,
81809
+ maxHeight: fX,
81810
+ sorting: HY,
81811
+ totalRows: d,
81812
+ totalColumns: tX,
81471
81813
  manualSorting: true,
81472
- setSorting: HY,
81473
- pagination: f,
81814
+ setSorting: UY,
81815
+ pagination: _,
81474
81816
  manualPagination: true,
81475
- selection: _,
81476
- paginationState: q,
81477
- setPaginationState: IY,
81478
- rowSelection: EX,
81479
- cellSelection: kX,
81480
- cellStyling: nX,
81481
- hoverTemplate: rX,
81482
- cellHoverTexts: iX,
81483
- downloadAs: S ? LY : void 0,
81484
- downloadFileName: aX,
81485
- enableSearch: UY,
81486
- searchQuery: WY,
81487
- onSearchQueryChange: GY,
81488
- showFilters: y,
81489
- filters: KY,
81490
- onFiltersChange: qY,
81491
- reloading: JY,
81492
- onRowSelectionChange: DX,
81493
- freezeColumnsLeft: YY,
81494
- freezeColumnsRight: XY,
81495
- onCellSelectionChange: AX,
81496
- getRowIds: tX,
81497
- toggleDisplayHeader: oX,
81498
- showChartBuilder: M,
81499
- showPageSizeSelector: w,
81500
- showColumnExplorer: E && !NX,
81501
- showRowExplorer: O && !NX,
81502
- togglePanel: gX,
81503
- isPanelOpen: hX,
81504
- viewedRowIdx: pX,
81505
- onViewedRowChange: (e2) => mX(e2)
81817
+ selection: v,
81818
+ paginationState: IY,
81819
+ setPaginationState: LY,
81820
+ rowSelection: DX,
81821
+ cellSelection: AX,
81822
+ cellStyling: rX,
81823
+ hoverTemplate: iX,
81824
+ cellHoverTexts: aX,
81825
+ downloadAs: w ? RY : void 0,
81826
+ downloadFileName: oX,
81827
+ enableSearch: WY,
81828
+ searchQuery: GY,
81829
+ onSearchQueryChange: KY,
81830
+ showFilters: S,
81831
+ filters: qY,
81832
+ onFiltersChange: JY,
81833
+ reloading: YY,
81834
+ onRowSelectionChange: OX,
81835
+ freezeColumnsLeft: XY,
81836
+ freezeColumnsRight: ZY,
81837
+ onCellSelectionChange: jX,
81838
+ getRowIds: nX,
81839
+ toggleDisplayHeader: sX,
81840
+ showChartBuilder: I,
81841
+ showPageSizeSelector: E,
81842
+ showColumnExplorer: O && !PX,
81843
+ showRowExplorer: M && !PX,
81844
+ togglePanel: _X,
81845
+ isPanelOpen: gX,
81846
+ viewedRowIdx: mX,
81847
+ onViewedRowChange: (e2) => hX(e2)
81506
81848
  })
81507
81849
  })
81508
81850
  })
@@ -82432,7 +82774,7 @@ ${c}
82432
82774
  fullWidth: y,
82433
82775
  children: G
82434
82776
  }), r[19] = y, r[20] = S, r[21] = c, r[22] = G, r[23] = q) : q = r[23], q;
82435
- }, LazyDataExplorerComponent = import_react.lazy(() => import("./ConnectedDataExplorerComponent-D0GoOd_c.js"));
82777
+ }, LazyDataExplorerComponent = import_react.lazy(() => import("./ConnectedDataExplorerComponent-DrWDbHRV.js"));
82436
82778
  const DataExplorerPlugin = createPlugin("marimo-data-explorer").withData(object$1({
82437
82779
  label: string().nullish(),
82438
82780
  data: string()
@@ -92685,21 +93027,75 @@ ${c}
92685
93027
  }), r[13] = c, r[14] = e.label, r[15] = f, r[16] = O, r[17] = M) : M = r[17], M;
92686
93028
  };
92687
93029
  var import_compiler_runtime$28 = require_compiler_runtime(), RangeSlider = import_react.forwardRef((e, r) => {
92688
- let c = (0, import_compiler_runtime$28.c)(35), { className: d, valueMap: f, ..._ } = e, [v, y] = useBoolean(false), { locale: S } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), w = dist_exports, E;
92689
- c[0] === d ? E = c[1] : (E = cn("relative flex touch-none select-none hover:cursor-pointer", "data-[orientation=horizontal]:w-full data-[orientation=horizontal]:items-center", "data-[orientation=vertical]:h-full data-[orientation=vertical]:justify-center", "data-disabled:cursor-not-allowed", d), c[0] = d, c[1] = E);
92690
- let O;
92691
- c[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (O = cn("relative grow overflow-hidden rounded-full bg-slate-200 dark:bg-accent/60", "data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:w-full", "data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2"), c[2] = O) : O = c[2];
92692
- let M;
92693
- c[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (M = (0, import_jsx_runtime.jsx)(Track, {
93030
+ let c = (0, import_compiler_runtime$28.c)(56), d, f, _;
93031
+ c[0] === e ? (d = c[1], f = c[2], _ = c[3]) : ({ className: d, valueMap: _, ...f } = e, c[0] = e, c[1] = d, c[2] = f, c[3] = _);
93032
+ let [v, y] = useBoolean(false), { locale: S } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), w = import_react.useRef(false), E = import_react.useRef(0), O = import_react.useRef(0), M;
93033
+ c[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (M = [], c[4] = M) : M = c[4];
93034
+ let I = import_react.useRef(M), z;
93035
+ c[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (z = [], c[5] = z) : z = c[5];
93036
+ let G = import_react.useRef(z), q = import_react.useRef(null), IY = import_react.useRef(null), LY = import_react.useRef(null), RY;
93037
+ c[6] === r ? RY = c[7] : (RY = (e2) => {
93038
+ q.current = e2, typeof r == "function" ? r(e2) : r && (r.current = e2);
93039
+ }, c[6] = r, c[7] = RY);
93040
+ let zY = RY, BY;
93041
+ c[8] !== f.disabled || c[9] !== f.value ? (BY = (e2) => {
93042
+ var _a3;
93043
+ !f.value || f.value.length !== 2 || f.disabled || (e2.preventDefault(), e2.stopPropagation(), w.current = true, E.current = e2.clientX, O.current = e2.clientY, I.current = [
93044
+ ...f.value
93045
+ ], G.current = [
93046
+ ...f.value
93047
+ ], LY.current = ((_a3 = IY.current) == null ? void 0 : _a3.getBoundingClientRect()) ?? null, e2.currentTarget.setPointerCapture(e2.pointerId));
93048
+ }, c[8] = f.disabled, c[9] = f.value, c[10] = BY) : BY = c[10];
93049
+ let VY = BY, HY;
93050
+ c[11] === f ? HY = c[12] : (HY = (e2) => {
93051
+ var _a3;
93052
+ if (!w.current) return;
93053
+ e2.stopPropagation();
93054
+ let r2 = LY.current;
93055
+ if (!r2) return;
93056
+ let c2 = f.orientation === "vertical", d2 = f.min ?? 0, _2 = f.max ?? 100, v2 = _2 - d2, y2;
93057
+ if (c2) {
93058
+ let c3 = r2.height;
93059
+ y2 = -((e2.clientY - O.current) / c3) * v2;
93060
+ } else {
93061
+ let c3 = r2.width;
93062
+ y2 = (e2.clientX - E.current) / c3 * v2;
93063
+ }
93064
+ let [S2, M2] = I.current, z2 = M2 - S2, q2 = f.steps, IY2 = q2 && q2.length > 1 ? Math.min(...q2.slice(1).map((e3, r3) => e3 - q2[r3])) : f.step ?? 1, RY2 = Math.round(y2 / IY2) * IY2, zY2 = S2 + Math.max(d2 - S2, Math.min(_2 - M2, RY2)), BY2 = zY2 + z2;
93065
+ G.current = [
93066
+ zY2,
93067
+ BY2
93068
+ ], (_a3 = f.onValueChange) == null ? void 0 : _a3.call(f, [
93069
+ zY2,
93070
+ BY2
93071
+ ]);
93072
+ }, c[11] = f, c[12] = HY);
93073
+ let UY = HY, WY;
93074
+ c[13] === f ? WY = c[14] : (WY = (e2) => {
93075
+ var _a3;
93076
+ w.current && (e2.currentTarget.releasePointerCapture(e2.pointerId), w.current = false, G.current.length === 2 && ((_a3 = f.onValueCommit) == null ? void 0 : _a3.call(f, G.current)));
93077
+ }, c[13] = f, c[14] = WY);
93078
+ let GY = WY, KY;
93079
+ c[15] === d ? KY = c[16] : (KY = cn("relative flex touch-none select-none hover:cursor-pointer", "data-[orientation=horizontal]:w-full data-[orientation=horizontal]:items-center", "data-[orientation=vertical]:h-full data-[orientation=vertical]:justify-center", "data-disabled:cursor-not-allowed", d), c[15] = d, c[16] = KY);
93080
+ let qY;
93081
+ c[17] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (qY = cn("relative grow overflow-hidden rounded-full bg-slate-200 dark:bg-accent/60", "data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:w-full", "data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2"), c[17] = qY) : qY = c[17];
93082
+ let JY;
93083
+ c[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (JY = cn("absolute bg-blue-500 dark:bg-primary", "data-[orientation=horizontal]:h-full", "data-[orientation=vertical]:w-full", "data-disabled:opacity-50", "hover:cursor-grab active:cursor-grabbing"), c[18] = JY) : JY = c[18];
93084
+ let YY;
93085
+ c[19] !== VY || c[20] !== UY || c[21] !== GY ? (YY = (0, import_jsx_runtime.jsx)(Track, {
93086
+ ref: IY,
92694
93087
  "data-testid": "track",
92695
- className: O,
93088
+ className: qY,
92696
93089
  children: (0, import_jsx_runtime.jsx)(Range, {
92697
93090
  "data-testid": "range",
92698
- className: cn("absolute bg-blue-500 dark:bg-primary", "data-[orientation=horizontal]:h-full", "data-[orientation=vertical]:w-full", "data-disabled:opacity-50")
93091
+ className: JY,
93092
+ onPointerDown: VY,
93093
+ onPointerMove: UY,
93094
+ onPointerUp: GY
92699
93095
  })
92700
- }), c[3] = M) : M = c[3];
92701
- let I;
92702
- c[4] !== y.setFalse || c[5] !== y.setTrue ? (I = (0, import_jsx_runtime.jsx)(TooltipTrigger, {
93096
+ }), c[19] = VY, c[20] = UY, c[21] = GY, c[22] = YY) : YY = c[22];
93097
+ let XY;
93098
+ c[23] !== y.setFalse || c[24] !== y.setTrue ? (XY = (0, import_jsx_runtime.jsx)(TooltipTrigger, {
92703
93099
  asChild: true,
92704
93100
  children: (0, import_jsx_runtime.jsx)(Thumb, {
92705
93101
  "data-testid": "thumb",
@@ -92709,28 +93105,30 @@ ${c}
92709
93105
  onMouseEnter: y.setTrue,
92710
93106
  onMouseLeave: y.setFalse
92711
93107
  })
92712
- }), c[4] = y.setFalse, c[5] = y.setTrue, c[6] = I) : I = c[6];
92713
- let z = _.value != null && _.value.length === 2 && (0, import_jsx_runtime.jsx)(TooltipContent, {
92714
- children: prettyScientificNumber(f(_.value[0]), {
93108
+ }), c[23] = y.setFalse, c[24] = y.setTrue, c[25] = XY) : XY = c[25];
93109
+ let ZY;
93110
+ c[26] !== S || c[27] !== f.value || c[28] !== _ ? (ZY = f.value != null && f.value.length === 2 && (0, import_jsx_runtime.jsx)(TooltipContent, {
93111
+ children: prettyScientificNumber(_(f.value[0]), {
92715
93112
  locale: S
92716
93113
  })
92717
- }, _.value[0]), G;
92718
- c[7] === z ? G = c[8] : (G = (0, import_jsx_runtime.jsx)(TooltipPortal, {
92719
- children: z
92720
- }), c[7] = z, c[8] = G);
92721
- let q;
92722
- c[9] !== v || c[10] !== I || c[11] !== G ? (q = (0, import_jsx_runtime.jsx)(TooltipProvider, {
93114
+ }, f.value[0]), c[26] = S, c[27] = f.value, c[28] = _, c[29] = ZY) : ZY = c[29];
93115
+ let QY;
93116
+ c[30] === ZY ? QY = c[31] : (QY = (0, import_jsx_runtime.jsx)(TooltipPortal, {
93117
+ children: ZY
93118
+ }), c[30] = ZY, c[31] = QY);
93119
+ let $Y;
93120
+ c[32] !== v || c[33] !== XY || c[34] !== QY ? ($Y = (0, import_jsx_runtime.jsx)(TooltipProvider, {
92723
93121
  children: (0, import_jsx_runtime.jsxs)(TooltipRoot, {
92724
93122
  delayDuration: 0,
92725
93123
  open: v,
92726
93124
  children: [
92727
- I,
92728
- G
93125
+ XY,
93126
+ QY
92729
93127
  ]
92730
93128
  })
92731
- }), c[9] = v, c[10] = I, c[11] = G, c[12] = q) : q = c[12];
92732
- let IY = TooltipProvider, LY = TooltipRoot, RY;
92733
- c[13] !== y.setFalse || c[14] !== y.setTrue ? (RY = (0, import_jsx_runtime.jsx)(TooltipTrigger, {
93129
+ }), c[32] = v, c[33] = XY, c[34] = QY, c[35] = $Y) : $Y = c[35];
93130
+ let eX;
93131
+ c[36] !== y.setFalse || c[37] !== y.setTrue ? (eX = (0, import_jsx_runtime.jsx)(TooltipTrigger, {
92734
93132
  asChild: true,
92735
93133
  children: (0, import_jsx_runtime.jsx)(Thumb, {
92736
93134
  "data-testid": "thumb",
@@ -92740,39 +93138,39 @@ ${c}
92740
93138
  onMouseEnter: y.setTrue,
92741
93139
  onMouseLeave: y.setFalse
92742
93140
  })
92743
- }), c[13] = y.setFalse, c[14] = y.setTrue, c[15] = RY) : RY = c[15];
92744
- let zY = TooltipPortal, BY = _.value != null && _.value.length === 2 && (0, import_jsx_runtime.jsx)(TooltipContent, {
92745
- children: prettyScientificNumber(f(_.value[1]), {
93141
+ }), c[36] = y.setFalse, c[37] = y.setTrue, c[38] = eX) : eX = c[38];
93142
+ let tX;
93143
+ c[39] !== S || c[40] !== f.value || c[41] !== _ ? (tX = f.value != null && f.value.length === 2 && (0, import_jsx_runtime.jsx)(TooltipContent, {
93144
+ children: prettyScientificNumber(_(f.value[1]), {
92746
93145
  locale: S
92747
93146
  })
92748
- }, _.value[1]), VY;
92749
- c[16] !== zY || c[17] !== BY ? (VY = (0, import_jsx_runtime.jsx)(zY, {
92750
- children: BY
92751
- }), c[16] = zY, c[17] = BY, c[18] = VY) : VY = c[18];
92752
- let HY;
92753
- c[19] !== LY || c[20] !== v || c[21] !== RY || c[22] !== VY ? (HY = (0, import_jsx_runtime.jsxs)(LY, {
92754
- delayDuration: 0,
92755
- open: v,
92756
- children: [
92757
- RY,
92758
- VY
92759
- ]
92760
- }), c[19] = LY, c[20] = v, c[21] = RY, c[22] = VY, c[23] = HY) : HY = c[23];
92761
- let UY;
92762
- c[24] !== IY || c[25] !== HY ? (UY = (0, import_jsx_runtime.jsx)(IY, {
92763
- children: HY
92764
- }), c[24] = IY, c[25] = HY, c[26] = UY) : UY = c[26];
92765
- let WY;
92766
- return c[27] !== _ || c[28] !== r || c[29] !== w.Root || c[30] !== UY || c[31] !== E || c[32] !== M || c[33] !== q ? (WY = (0, import_jsx_runtime.jsxs)(w.Root, {
92767
- ref: r,
92768
- className: E,
92769
- ..._,
93147
+ }, f.value[1]), c[39] = S, c[40] = f.value, c[41] = _, c[42] = tX) : tX = c[42];
93148
+ let nX;
93149
+ c[43] === tX ? nX = c[44] : (nX = (0, import_jsx_runtime.jsx)(TooltipPortal, {
93150
+ children: tX
93151
+ }), c[43] = tX, c[44] = nX);
93152
+ let rX;
93153
+ c[45] !== v || c[46] !== eX || c[47] !== nX ? (rX = (0, import_jsx_runtime.jsx)(TooltipProvider, {
93154
+ children: (0, import_jsx_runtime.jsxs)(TooltipRoot, {
93155
+ delayDuration: 0,
93156
+ open: v,
93157
+ children: [
93158
+ eX,
93159
+ nX
93160
+ ]
93161
+ })
93162
+ }), c[45] = v, c[46] = eX, c[47] = nX, c[48] = rX) : rX = c[48];
93163
+ let iX;
93164
+ return c[49] !== zY || c[50] !== f || c[51] !== YY || c[52] !== $Y || c[53] !== rX || c[54] !== KY ? (iX = (0, import_jsx_runtime.jsxs)(Root$1, {
93165
+ ref: zY,
93166
+ className: KY,
93167
+ ...f,
92770
93168
  children: [
92771
- M,
92772
- q,
92773
- UY
93169
+ YY,
93170
+ $Y,
93171
+ rX
92774
93172
  ]
92775
- }), c[27] = _, c[28] = r, c[29] = w.Root, c[30] = UY, c[31] = E, c[32] = M, c[33] = q, c[34] = WY) : WY = c[34], WY;
93173
+ }), c[49] = zY, c[50] = f, c[51] = YY, c[52] = $Y, c[53] = rX, c[54] = KY, c[55] = iX) : iX = c[55], iX;
92776
93174
  });
92777
93175
  RangeSlider.displayName = Root$1.displayName;
92778
93176
  var import_compiler_runtime$27 = require_compiler_runtime(), RangeSliderPlugin = class {
@@ -93082,7 +93480,7 @@ ${c}
93082
93480
  });
93083
93481
  }
93084
93482
  }, SliderComponent = (e) => {
93085
- let r = (0, import_compiler_runtime$26.c)(55), { label: c, setValue: d, value: f, start: _, stop: v, step: y, debounce: S, orientation: w, showValue: E, fullWidth: O, valueMap: M, includeInput: I, disabled: z } = e, G = (0, import_react.useId)(), { locale: q } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), [IY, LY] = (0, import_react.useState)(f), RY, zY;
93483
+ let r = (0, import_compiler_runtime$26.c)(54), { label: c, setValue: d, value: f, start: _, stop: v, step: y, debounce: S, orientation: w, showValue: E, fullWidth: O, valueMap: M, includeInput: I, disabled: z } = e, G = (0, import_react.useId)(), { locale: q } = $18f2051aff69b9bf$export$43bb16f9c6d9e3f7(), [IY, LY] = (0, import_react.useState)(f), RY, zY;
93086
93484
  r[0] === f ? (RY = r[1], zY = r[2]) : (RY = () => {
93087
93485
  LY(f);
93088
93486
  }, zY = [
@@ -93128,10 +93526,10 @@ ${c}
93128
93526
  })
93129
93527
  }), r[27] = IY, r[28] = q, r[29] = E, r[30] = M, r[31] = ZY) : ZY = r[31];
93130
93528
  let QY;
93131
- r[32] !== S || r[33] !== z || r[34] !== I || r[35] !== IY || r[36] !== c || r[37] !== d || r[38] !== _ || r[39] !== y || r[40] !== v || r[41] !== M ? (QY = I && (0, import_jsx_runtime.jsx)(NumberField, {
93529
+ r[32] !== z || r[33] !== I || r[34] !== IY || r[35] !== c || r[36] !== d || r[37] !== _ || r[38] !== y || r[39] !== v || r[40] !== M ? (QY = I && (0, import_jsx_runtime.jsx)(NumberField, {
93132
93530
  value: M(IY),
93133
93531
  onChange: (e2) => {
93134
- (e2 == null || Number.isNaN(e2)) && (e2 = Number(_)), LY(e2), S || d(e2);
93532
+ (e2 == null || Number.isNaN(e2)) && (e2 = Number(_)), LY(e2), d(e2);
93135
93533
  },
93136
93534
  minValue: _,
93137
93535
  maxValue: v,
@@ -93139,25 +93537,25 @@ ${c}
93139
93537
  className: "w-24",
93140
93538
  "aria-label": `${c || "Slider"} value input`,
93141
93539
  isDisabled: z
93142
- }), r[32] = S, r[33] = z, r[34] = I, r[35] = IY, r[36] = c, r[37] = d, r[38] = _, r[39] = y, r[40] = v, r[41] = M, r[42] = QY) : QY = r[42];
93540
+ }), r[32] = z, r[33] = I, r[34] = IY, r[35] = c, r[36] = d, r[37] = _, r[38] = y, r[39] = v, r[40] = M, r[41] = QY) : QY = r[41];
93143
93541
  let $Y;
93144
- r[43] !== XY || r[44] !== ZY || r[45] !== QY || r[46] !== WY ? ($Y = (0, import_jsx_runtime.jsxs)("div", {
93542
+ r[42] !== XY || r[43] !== ZY || r[44] !== QY || r[45] !== WY ? ($Y = (0, import_jsx_runtime.jsxs)("div", {
93145
93543
  className: WY,
93146
93544
  children: [
93147
93545
  XY,
93148
93546
  ZY,
93149
93547
  QY
93150
93548
  ]
93151
- }), r[43] = XY, r[44] = ZY, r[45] = QY, r[46] = WY, r[47] = $Y) : $Y = r[47];
93549
+ }), r[42] = XY, r[43] = ZY, r[44] = QY, r[45] = WY, r[46] = $Y) : $Y = r[46];
93152
93550
  let eX;
93153
- return r[48] !== O || r[49] !== G || r[50] !== c || r[51] !== $Y || r[52] !== BY || r[53] !== HY ? (eX = (0, import_jsx_runtime.jsx)(Labeled, {
93551
+ return r[47] !== O || r[48] !== G || r[49] !== c || r[50] !== $Y || r[51] !== BY || r[52] !== HY ? (eX = (0, import_jsx_runtime.jsx)(Labeled, {
93154
93552
  label: c,
93155
93553
  id: G,
93156
93554
  align: BY,
93157
93555
  fullWidth: O,
93158
93556
  className: HY,
93159
93557
  children: $Y
93160
- }), r[48] = O, r[49] = G, r[50] = c, r[51] = $Y, r[52] = BY, r[53] = HY, r[54] = eX) : eX = r[54], eX;
93558
+ }), r[47] = O, r[48] = G, r[49] = c, r[50] = $Y, r[51] = BY, r[52] = HY, r[53] = eX) : eX = r[53], eX;
93161
93559
  }, import_compiler_runtime$25 = require_compiler_runtime(), SwitchPlugin = class {
93162
93560
  constructor() {
93163
93561
  __publicField(this, "tagName", "marimo-switch");
@@ -101015,7 +101413,10 @@ ${c}
101015
101413
  let IY = AppConfigSchema.safeParse(M);
101016
101414
  if (IY.success ? v(IY.data) : Logger.error("Failed to parse app config", IY.error), y(I), z) return;
101017
101415
  if (E) {
101018
- for (let [e2, r2] of Objects.entries(O || {})) UI_ELEMENT_REGISTRY.set(e2, r2);
101416
+ for (let [e2, r2] of Objects.entries(O || {})) {
101417
+ let c2 = e2;
101418
+ UI_ELEMENT_REGISTRY.set(c2, r2);
101419
+ }
101019
101420
  return;
101020
101421
  }
101021
101422
  let { objectIds: LY, values: RY } = collectUIElementValues(), zY = G ? Object.fromEntries(c.map((e2) => [
@@ -101625,6 +102026,7 @@ ${r}
101625
102026
  __publicField(this, "saveCellConfig", throwNotImplemented);
101626
102027
  __publicField(this, "sendRestart", throwNotImplemented);
101627
102028
  __publicField(this, "syncCellIds", throwNotImplemented);
102029
+ __publicField(this, "sendDocumentTransaction", throwNotImplemented);
101628
102030
  __publicField(this, "readCode", throwNotImplemented);
101629
102031
  __publicField(this, "readSnippets", throwNotImplemented);
101630
102032
  __publicField(this, "previewDatasetColumn", throwNotImplemented);
@@ -101819,6 +102221,8 @@ ${r}
101819
102221
  return;
101820
102222
  case "kernel-startup-error":
101821
102223
  return;
102224
+ case "notebook-document-transaction":
102225
+ return;
101822
102226
  case "model-lifecycle":
101823
102227
  handleWidgetMessage(MODEL_MANAGER, c.data);
101824
102228
  return;