@marimo-team/islands 0.23.17-dev4 → 0.23.17-dev40

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 (185) hide show
  1. package/dist/{ConnectedDataExplorerComponent-f9vLjQiF.js → ConnectedDataExplorerComponent-BBZRR1-C.js} +16 -16
  2. package/dist/{ErrorBoundary-DhLqwSWA.js → ErrorBoundary-CptUP1_t.js} +3 -3
  3. package/dist/{ImageComparisonComponent-C3y7L3eJ.js → ImageComparisonComponent-fdY0LUuf.js} +38 -27
  4. package/dist/{any-language-editor-DifE-fl7.js → any-language-editor-BnIS9Mvg.js} +21 -21
  5. package/dist/assets/__vite-browser-external-DUz7vvG0.js +1 -0
  6. package/dist/assets/{worker-CDEKsBgX.js → worker-Cl1KJG2_.js} +2 -2
  7. package/dist/{button-BSm8IXRU.js → button-8aS1QcHr.js} +4 -2
  8. package/dist/{capabilities-C6OQ5YBO.js → capabilities-D23lgbH_.js} +1 -1
  9. package/dist/chat-ui-DH9M4L-6.js +8620 -0
  10. package/dist/{check-DP7U0H0G.js → check-D-BaEjEh.js} +1 -1
  11. package/dist/{common-BcQ4kHDP.js → common-DSVkRiDF.js} +652 -652
  12. package/dist/{copy-DNq8q3zw.js → copy-BkA3t7rJ.js} +2 -2
  13. package/dist/{defaultLocale-BpsHxBd7.js → defaultLocale-BsfI21d_.js} +26 -26
  14. package/dist/{diagram-PSM6KHXK-D4ftnaua.js → diagram-PSM6KHXK-D3GsWNcQ.js} +1 -1
  15. package/dist/{dist-BpeiYpG2.js → dist-3F1XDSYc.js} +2 -2
  16. package/dist/{dist-BP39XM8u.js → dist-B-upo54Y.js} +1 -1
  17. package/dist/{dist-BdqCKQ1O.js → dist-B1W12VzQ.js} +2 -2
  18. package/dist/{dist-3NCqaWjt.js → dist-B6au1PTB.js} +2 -2
  19. package/dist/{dist-BCX980mU.js → dist-BDwn6WIk.js} +2 -2
  20. package/dist/dist-BDzVdDo2.js +8 -0
  21. package/dist/dist-BH2Tq1S1.js +5 -0
  22. package/dist/dist-BIhBrzqg.js +5 -0
  23. package/dist/dist-BLCsvXTG.js +6 -0
  24. package/dist/dist-BNVtuFdd.js +5 -0
  25. package/dist/{dist-BOMbzyb3.js → dist-BNeJ8P-4.js} +3 -3
  26. package/dist/{dist-LpLXa9Lb.js → dist-BT96P4oR.js} +2 -2
  27. package/dist/{dist-CFSb_Frm.js → dist-BUzxp0Xf.js} +1 -1
  28. package/dist/{dist-JGehap7K.js → dist-Ba1WFESi.js} +5 -5
  29. package/dist/{dist-CRmSjkLP.js → dist-BrKNRKC8.js} +2 -2
  30. package/dist/{dist-BIEt-mlF.js → dist-BvvQUFUK.js} +1 -1
  31. package/dist/{dist-pqIwD8VD.js → dist-BxR-g1ig.js} +2 -2
  32. package/dist/{dist-DviUBLUp.js → dist-CBraAJlT.js} +4 -4
  33. package/dist/{dist-BwhXBwMd.js → dist-CDBV8n0I.js} +1 -1
  34. package/dist/dist-CEJ6Lowi.js +5 -0
  35. package/dist/{dist-CSlJrrAw.js → dist-CWYsUX_O.js} +1 -1
  36. package/dist/dist-CYoa69kj.js +5 -0
  37. package/dist/{dist-DwqBJ014.js → dist-CdKRSqjo.js} +2 -2
  38. package/dist/{dist-De-GlSAs.js → dist-Cds3J-EE.js} +15 -9
  39. package/dist/dist-CnZyXFq3.js +8 -0
  40. package/dist/dist-D-4HaJKc.js +8 -0
  41. package/dist/{dist-C18MUWTj.js → dist-D8SX5Qdg.js} +2 -2
  42. package/dist/{dist-D3bdsa1d.js → dist-DFQ91Mx1.js} +4 -4
  43. package/dist/{dist-BPF0gTRZ.js → dist-DGQmYLkh.js} +1 -1
  44. package/dist/dist-DIGyvbg3.js +5 -0
  45. package/dist/dist-DIhaoCL4.js +5 -0
  46. package/dist/{dist-C2_4pjuS.js → dist-DK0pFEmc.js} +1 -1
  47. package/dist/{dist-BTdrwBWP.js → dist-DQj6A7SE.js} +3 -3
  48. package/dist/{dist-DIlxLFXG.js → dist-DarwE0ZO.js} +11 -11
  49. package/dist/{dist-DaXJPX8F.js → dist-Ddb0VFS3.js} +2 -2
  50. package/dist/dist-DgQleHmb.js +8 -0
  51. package/dist/{dist-DZwp8lro.js → dist-DgkJegw4.js} +3 -3
  52. package/dist/{dist-BO5HRiTf.js → dist-DjQRRttD.js} +2 -2
  53. package/dist/dist-JaoLzZmt.js +5 -0
  54. package/dist/{dist-B2jmQKKx.js → dist-PQDZaPEo.js} +2 -2
  55. package/dist/{dist-4lVIWUT3.js → dist-Slyx4vXr.js} +1 -1
  56. package/dist/{dist-DgjbnqTg.js → dist-dJeh9ef4.js} +2 -2
  57. package/dist/dist-pEX0t8ZV.js +6 -0
  58. package/dist/{dist-w_gWE5Wf.js → dist-v-kAJfMq.js} +1 -1
  59. package/dist/{error-banner-B_GQfxxD.js → error-banner-dmkbm21G.js} +2 -2
  60. package/dist/{esm-DzZVaNH4.js → esm-D8vjxCyn.js} +3 -3
  61. package/dist/{esm-DKOv6P2M.js → esm-DEQU-LUO.js} +22 -22
  62. package/dist/{extends-w2_S44bV.js → extends-DDOVg_b8.js} +5 -5
  63. package/dist/{formats-Dwq1THhr.js → formats-xc-Msa0v.js} +3 -3
  64. package/dist/{ganttDiagram-JELNMOA3-CXXCN7LN.js → ganttDiagram-JELNMOA3-D9ywbC5g.js} +3 -3
  65. package/dist/{glide-data-editor-B9K6-MJe.js → glide-data-editor-CyTNN635.js} +9 -9
  66. package/dist/{html-to-image-CZ1kLKkq.js → html-to-image-DrEMf75G.js} +2219 -2209
  67. package/dist/{input-C5K4VBvB.js → input-B4ddy8Jy.js} +6 -6
  68. package/dist/{label-DjoYwqmj.js → label-CzHncDvS.js} +2 -2
  69. package/dist/{linear-H_vsH9ao.js → linear-BOGUO8Cd.js} +2 -2
  70. package/dist/{loader-DX-IDS7n.js → loader-C7SfUdOD.js} +10 -10
  71. package/dist/main.js +729 -733
  72. package/dist/{mermaid-hv6IckVw.js → mermaid-CpL8y5pw.js} +9 -9
  73. package/dist/{precisionRound-CnHPY_5v.js → precisionRound-Bq50n-bG.js} +1 -1
  74. package/dist/{process-output-bVfbcx5_.js → process-output-B9IHQuus.js} +3 -3
  75. package/dist/{quadrantDiagram-AYHSOK5B-BqDB9tUC.js → quadrantDiagram-AYHSOK5B-DD4QBdSv.js} +2 -2
  76. package/dist/{react-vega-BazDALhI.js → react-vega-Cg17A6rO.js} +8017 -4777
  77. package/dist/{reveal-component-9QGZq7uF.js → reveal-component-CUzZw4ZH.js} +19 -19
  78. package/dist/{spec-CQKL_D3i.js → spec-uMKNvMRZ.js} +4 -4
  79. package/dist/{strings-DIy9NAmg.js → strings-BUDhKc0s.js} +299 -299
  80. package/dist/style.css +1 -1
  81. package/dist/{swiper-component-CEdAYjb7.js → swiper-component-dl1H9WIW.js} +2 -2
  82. package/dist/{time-Bb4A7I6a.js → time-CQnohwNM.js} +2 -2
  83. package/dist/{toDate-CqhBWjvO.js → toDate-BiyuFdnT.js} +3 -3
  84. package/dist/{tooltip-f-qR0iUx.js → tooltip-CkCWlUOf.js} +3 -3
  85. package/dist/{types-DicH9Oi0.js → types-uENjXsiC.js} +1 -1
  86. package/dist/{useAsyncData-CYOQb1EW.js → useAsyncData-DqJLysjC.js} +1 -1
  87. package/dist/{useDateFormatter-Bt2qr_XS.js → useDateFormatter-BeN3fHMH.js} +2 -2
  88. package/dist/{useDeepCompareMemoize-CSHQeQEI.js → useDeepCompareMemoize-CvlmHAmy.js} +1 -1
  89. package/dist/{useIframeCapabilities-kA09ykNq.js → useIframeCapabilities-pLC-ceDP.js} +1 -1
  90. package/dist/{useLifecycle-CMJGqBaY.js → useLifecycle-D4N02q82.js} +3 -3
  91. package/dist/{useTheme-DYfby65G.js → useTheme-Dur2p3iC.js} +4 -3
  92. package/dist/{vega-component-C7nO5zcf.js → vega-component-Cft458Sr.js} +13 -13
  93. package/dist/{vega-embed-container-DAQAMjiO.js → vega-embed-container-S9gRu4TZ.js} +3 -3
  94. package/dist/{vega-loader.browser-DmpxCJqx.js → vega-loader.browser-CmLRI3wk.js} +104 -111
  95. package/dist/{xychartDiagram-PRI3JC2R-BSkNxYNw.js → xychartDiagram-PRI3JC2R-D9DgEtKn.js} +2 -2
  96. package/dist/{zod-BUcyXSdR.js → zod-yTHHzJiv.js} +37 -38
  97. package/package.json +6 -6
  98. package/src/__mocks__/requests.ts +5 -0
  99. package/src/components/app-config/user-config-form.tsx +26 -0
  100. package/src/components/chat/__tests__/chat-abort.test.ts +51 -0
  101. package/src/components/chat/chat-abort.ts +44 -0
  102. package/src/components/chat/chat-display.tsx +17 -0
  103. package/src/components/chat/chat-panel.tsx +85 -37
  104. package/src/components/chat/chat-utils.ts +1 -1
  105. package/src/components/data-table/charts/__tests__/schemas.test.ts +35 -0
  106. package/src/components/data-table/charts/schemas.ts +5 -2
  107. package/src/components/databases/icons/huggingface.svg +8 -0
  108. package/src/components/datasets/__tests__/icons.test.ts +21 -0
  109. package/src/components/datasets/icons.tsx +10 -0
  110. package/src/components/datasources/__tests__/components.test.tsx +29 -0
  111. package/src/components/datasources/components.tsx +8 -3
  112. package/src/components/editor/actions/export-dialog/__tests__/export-dialog.test.tsx +35 -0
  113. package/src/components/editor/actions/export-dialog/__tests__/state.test.ts +61 -0
  114. package/src/components/editor/actions/export-dialog/export-command.ts +4 -9
  115. package/src/components/editor/actions/export-dialog/export-dialog.tsx +27 -23
  116. package/src/components/editor/actions/export-dialog/format-notice.tsx +28 -0
  117. package/src/components/editor/actions/export-dialog/state.ts +23 -5
  118. package/src/components/editor/actions/export-dialog/use-export-dialog.ts +7 -15
  119. package/src/components/editor/actions/useConfigActions.tsx +24 -0
  120. package/src/components/editor/ai/add-cell-with-ai.tsx +2 -2
  121. package/src/components/editor/ai/ai-completion-editor.tsx +2 -2
  122. package/src/components/editor/chrome/panels/outline/__tests__/useActiveOutline.test.ts +26 -0
  123. package/src/components/editor/code/__tests__/readonly-python-code.test.tsx +114 -2
  124. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +14 -0
  125. package/src/components/editor/connections/storage/__tests__/as-code.test.ts +20 -0
  126. package/src/components/editor/connections/storage/add-storage-form.tsx +10 -0
  127. package/src/components/editor/connections/storage/as-code.ts +19 -1
  128. package/src/components/editor/connections/storage/schemas.ts +19 -0
  129. package/src/components/storage/__tests__/storage-snippets.test.ts +88 -0
  130. package/src/components/storage/components.tsx +2 -0
  131. package/src/components/storage/storage-snippets.ts +58 -0
  132. package/src/core/__tests__/mode.test.ts +85 -0
  133. package/src/core/ai/constants.ts +7 -0
  134. package/src/core/ai/staged-cells.ts +3 -0
  135. package/src/core/codemirror/__tests__/setup.test.ts +1 -1
  136. package/src/core/codemirror/cm.ts +2 -2
  137. package/src/core/codemirror/code-lens/__tests__/extension.test.ts +4 -5
  138. package/src/core/codemirror/code-lens/extension.ts +3 -3
  139. package/src/core/codemirror/find-replace/search-highlight.ts +8 -3
  140. package/src/core/codemirror/language/languages/sql/__tests__/renderers.test.tsx +44 -0
  141. package/src/core/codemirror/language/languages/sql/renderers.tsx +3 -3
  142. package/src/core/codemirror/theme/__tests__/light.test.ts +59 -123
  143. package/src/core/codemirror/theme/dark.ts +6 -5
  144. package/src/core/codemirror/theme/light.ts +6 -4
  145. package/src/core/config/__tests__/config-schema.test.ts +2 -0
  146. package/src/core/config/config-schema.ts +1 -0
  147. package/src/core/config/feature-flag.tsx +0 -2
  148. package/src/core/dom/outline.ts +25 -2
  149. package/src/core/hotkeys/hotkeys.ts +2 -0
  150. package/src/core/mode.ts +11 -9
  151. package/src/core/network/__tests__/api.test.ts +132 -17
  152. package/src/core/network/__tests__/export-filename.test.ts +43 -0
  153. package/src/core/network/__tests__/requests-lazy.test.ts +1 -0
  154. package/src/core/network/api.ts +47 -12
  155. package/src/core/network/export-filename.ts +37 -0
  156. package/src/core/network/markdown-export.ts +19 -0
  157. package/src/core/network/requests-network.ts +29 -5
  158. package/src/core/network/types.ts +3 -0
  159. package/src/core/storage/types.ts +1 -0
  160. package/src/css/app/codemirror.css +11 -7
  161. package/src/css/globals.css +8 -0
  162. package/src/plugins/impl/DataEditorPlugin.tsx +2 -9
  163. package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +18 -0
  164. package/src/plugins/impl/chat/chat-ui.tsx +51 -3
  165. package/src/plugins/impl/data-frames/__tests__/schema.test.ts +30 -0
  166. package/src/plugins/impl/data-frames/schema.ts +4 -1
  167. package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +20 -1
  168. package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +58 -0
  169. package/src/stories/theme.stories.tsx +71 -1
  170. package/dist/assets/__vite-browser-external-DltVXDv7.js +0 -1
  171. package/dist/chat-ui-DsZJj75A.js +0 -8369
  172. package/dist/dist-5o9uz19x.js +0 -5
  173. package/dist/dist-BpDH0DEP.js +0 -5
  174. package/dist/dist-BpXhbQXO.js +0 -8
  175. package/dist/dist-ByadAk_L.js +0 -5
  176. package/dist/dist-CK0g7JvP.js +0 -8
  177. package/dist/dist-CfzCtiq2.js +0 -5
  178. package/dist/dist-D8JtVFrW.js +0 -8
  179. package/dist/dist-DK2Oocpu.js +0 -6
  180. package/dist/dist-DnSu977r.js +0 -5
  181. package/dist/dist-UmxJm6sW.js +0 -8
  182. package/dist/dist-aYSBQSyM.js +0 -5
  183. package/dist/dist-kkZ1Ztlh.js +0 -6
  184. package/dist/dist-ngPczwNi.js +0 -5
  185. package/dist/dist-wQRyxyTV.js +0 -5
@@ -4,11 +4,14 @@ import { python } from "@codemirror/lang-python";
4
4
  import { EditorState, type Extension } from "@codemirror/state";
5
5
  import { EditorView } from "@codemirror/view";
6
6
  import type { Meta, StoryObj } from "@storybook/react-vite";
7
- import React, { useEffect, useRef } from "react";
7
+ import React, { useEffect, useRef, useState } from "react";
8
+ import { ReadonlyCode } from "../components/editor/code/readonly-python-code";
8
9
  import { basicBundle, type CodeMirrorSetupOpts } from "../core/codemirror/cm";
10
+ import { userConfigAtom } from "../core/config/config";
9
11
  import { darkTheme } from "../core/codemirror/theme/dark";
10
12
  import { lightTheme } from "../core/codemirror/theme/light";
11
13
  import { OverridingHotkeyProvider } from "../core/hotkeys/hotkeys";
14
+ import { store } from "../core/state/jotai";
12
15
 
13
16
  // Partial config for storybook demo
14
17
  const demoConfig: Partial<CodeMirrorSetupOpts> = {
@@ -52,6 +55,11 @@ result = example.get_value()
52
55
  size = example.data_size
53
56
  `.trim();
54
57
 
58
+ const READONLY_CONTENT = Array.from(
59
+ { length: 80 },
60
+ (_, index) => `value_${index + 1} = ${index + 1}`,
61
+ ).join("\n");
62
+
55
63
  const Editor = (opts: { extensions?: Extension[] }): React.ReactNode => {
56
64
  const ref = useRef<HTMLDivElement>(null);
57
65
  useEffect(() => {
@@ -110,3 +118,65 @@ export const ThemeComparison: Story = {
110
118
  </div>
111
119
  ),
112
120
  };
121
+
122
+ const ReadonlyCodeThemeFixture = (): React.ReactNode => {
123
+ const [theme, setTheme] = useState<"light" | "dark">("light");
124
+ const [initialTheme] = useState(
125
+ () => store.get(userConfigAtom).display.theme,
126
+ );
127
+
128
+ useEffect(() => {
129
+ store.set(userConfigAtom, (config) => ({
130
+ ...config,
131
+ display: { ...config.display, theme },
132
+ }));
133
+ }, [theme]);
134
+
135
+ useEffect(() => {
136
+ // Leave Storybook's theme in the state it had before this fixture mounted.
137
+ return () => {
138
+ store.set(userConfigAtom, (config) => ({
139
+ ...config,
140
+ display: { ...config.display, theme: initialTheme },
141
+ }));
142
+ };
143
+ }, [initialTheme]);
144
+
145
+ return (
146
+ <div className="max-w-3xl space-y-3" style={{ colorScheme: theme }}>
147
+ <div className="flex items-center justify-between gap-4">
148
+ <div>
149
+ <h3 className="text-lg font-semibold">ReadonlyCode fixture</h3>
150
+ <p className="text-sm text-muted-foreground">
151
+ Select text, scroll, then switch themes to check that both remain.
152
+ </p>
153
+ </div>
154
+ <div className="flex gap-2" role="group" aria-label="Theme">
155
+ {(["light", "dark"] as const).map((nextTheme) => (
156
+ <button
157
+ aria-pressed={theme === nextTheme}
158
+ className="rounded border px-3 py-1 text-sm"
159
+ key={nextTheme}
160
+ onClick={() => setTheme(nextTheme)}
161
+ type="button"
162
+ >
163
+ {nextTheme}
164
+ </button>
165
+ ))}
166
+ </div>
167
+ </div>
168
+ <div className="h-64 overflow-hidden rounded border">
169
+ <ReadonlyCode
170
+ className="h-full [&_.cm-editor]:h-full [&_.cm-scroller]:h-full [&_.cm-theme-none]:h-full"
171
+ code={READONLY_CONTENT}
172
+ showCopyCode={false}
173
+ showHideCode={false}
174
+ />
175
+ </div>
176
+ </div>
177
+ );
178
+ };
179
+
180
+ export const ReadonlyCodeThemeReconfiguration: Story = {
181
+ render: () => <ReadonlyCodeThemeFixture />,
182
+ };
@@ -1 +0,0 @@
1
- import{t as e}from"./worker-CDEKsBgX.js";var t=e(((e,t)=>{t.exports={}}));export default t();