@marimo-team/frontend 0.15.1-dev32 → 0.15.1-dev34

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 (100) hide show
  1. package/dist/assets/{ConnectedDataExplorerComponent-A1945Aso.js → ConnectedDataExplorerComponent-BcJwEN2q.js} +1 -1
  2. package/dist/assets/{ImageComparisonComponent-D1NsIUty.js → ImageComparisonComponent-CnwGwcTi.js} +1 -1
  3. package/dist/assets/{VegaLite-BGGfcUZn.js → VegaLite-Cnk7Ozer.js} +1 -1
  4. package/dist/assets/{_baseEach-D3nH_2xn.js → _baseEach-DJPM6ZzY.js} +1 -1
  5. package/dist/assets/_baseMap-u5TY8JMW.js +1 -0
  6. package/dist/assets/{_baseUniq-CQqCX6A5.js → _baseUniq-CrXjB6JP.js} +1 -1
  7. package/dist/assets/{_createAggregator-CcFqySRL.js → _createAggregator-Cd0noqMc.js} +1 -1
  8. package/dist/assets/{any-language-editor-BCrWEpOh.js → any-language-editor-ZfVYrHPH.js} +1 -1
  9. package/dist/assets/{architectureDiagram-KFL7JDKH-Bi-k1FzL.js → architectureDiagram-KFL7JDKH-DuJCaD_M.js} +1 -1
  10. package/dist/assets/{blockDiagram-ZYB65J3Q-Dmpjl7Rr.js → blockDiagram-ZYB65J3Q-B0f3bVJ0.js} +1 -1
  11. package/dist/assets/{c4Diagram-AAMF2YG6-adiBTZJE.js → c4Diagram-AAMF2YG6-3srX8_ui.js} +1 -1
  12. package/dist/assets/channel-BIZI32eZ.js +1 -0
  13. package/dist/assets/{chunk-ANTBXLJU-DwXFMulX.js → chunk-ANTBXLJU-CD8Ya77t.js} +1 -1
  14. package/dist/assets/{chunk-FHKO5MBM-xaGLB2hd.js → chunk-FHKO5MBM-34L0hhh_.js} +1 -1
  15. package/dist/assets/{chunk-GLLZNHP4-Cit8A-EP.js → chunk-GLLZNHP4-CRWkmhQj.js} +1 -1
  16. package/dist/assets/{chunk-JBRWN2VN-bXiYdBHm.js → chunk-JBRWN2VN-CB8a_SQv.js} +1 -1
  17. package/dist/assets/{chunk-LXBSTHXV-BP4Soimz.js → chunk-LXBSTHXV-YNRk01ob.js} +1 -1
  18. package/dist/assets/{chunk-NRVI72HA-Caq7CUfs.js → chunk-NRVI72HA-nFtyi9pH.js} +1 -1
  19. package/dist/assets/{chunk-OMD6QJNC-54ZKr9c_.js → chunk-OMD6QJNC-BXZ4Kapq.js} +1 -1
  20. package/dist/assets/{chunk-WVR4S24B-BdZs7vKR.js → chunk-WVR4S24B-ZnYlHppS.js} +1 -1
  21. package/dist/assets/{circle-play-BDHXCb0Y.js → circle-play-k88jloBa.js} +1 -1
  22. package/dist/assets/classDiagram-3BZAVTQC-DfPpF-gd.js +1 -0
  23. package/dist/assets/classDiagram-v2-QTMF73CY-DfPpF-gd.js +1 -0
  24. package/dist/assets/clone-yHYNh3QG.js +1 -0
  25. package/dist/assets/{compile-CGvn-4st.js → compile-CDMtSySK.js} +1 -1
  26. package/dist/assets/{dagre-2BBEFEWP-BEa1obN_.js → dagre-2BBEFEWP-Bfm20vyd.js} +1 -1
  27. package/dist/assets/{data-grid-overlay-editor-BsrLkNwc.js → data-grid-overlay-editor-CwEfDFcK.js} +1 -1
  28. package/dist/assets/{diagram-4IRLE6MV-Cf3FnnYp.js → diagram-4IRLE6MV-A9psNOWP.js} +1 -1
  29. package/dist/assets/{diagram-GUPCWM2R-Cty98at3.js → diagram-GUPCWM2R-B23WLgai.js} +1 -1
  30. package/dist/assets/{diagram-RP2FKANI-DWVcFwOr.js → diagram-RP2FKANI-CU5qL55k.js} +1 -1
  31. package/dist/assets/{edit-page-DMaQm3LE.js → edit-page-DYm-s1ff.js} +58 -58
  32. package/dist/assets/{erDiagram-HZWUO2LU-CyO1eOOE.js → erDiagram-HZWUO2LU-D31RvIVf.js} +1 -1
  33. package/dist/assets/{flowDiagram-THRYKUMA-CRj5oK-a.js → flowDiagram-THRYKUMA-ClYGAL8Y.js} +1 -1
  34. package/dist/assets/{ganttDiagram-WV7ZQ7D5-2EImeZRg.js → ganttDiagram-WV7ZQ7D5-Cmed9KL9.js} +1 -1
  35. package/dist/assets/{gitGraphDiagram-OJR772UL-B9tcK9BT.js → gitGraphDiagram-OJR772UL-CWvdnGVc.js} +1 -1
  36. package/dist/assets/{glide-data-editor-BvISYI3t.js → glide-data-editor-CFVz2aZ5.js} +4 -4
  37. package/dist/assets/{graph-D9tj17QN.js → graph-OxTx0_rA.js} +1 -1
  38. package/dist/assets/{home-page-p4uSMJRW.js → home-page-Dt3nnRSz.js} +1 -1
  39. package/dist/assets/{index-CvsUfIK9.js → index-4GKIL9qL.js} +1 -1
  40. package/dist/assets/{index-esTG9RN-.js → index-B-P7QUhF.js} +1 -1
  41. package/dist/assets/{index-H-k8tqNe.js → index-BLXqwIOX.js} +1 -1
  42. package/dist/assets/{index-Boz2pcJb.js → index-BM1NAxco.js} +1 -1
  43. package/dist/assets/{index-COVExp2x.js → index-BOFl7de8.js} +1 -1
  44. package/dist/assets/{index-_uCXr0qE.js → index-BUwTI3go.js} +1 -1
  45. package/dist/assets/{index-DgR-q7Mi.js → index-Baw8vWOg.js} +1 -1
  46. package/dist/assets/{index-BytvWT4g.js → index-Bd2C9zUZ.js} +1 -1
  47. package/dist/assets/{index-0xnfM4P4.js → index-Bu3XvTHk.js} +1 -1
  48. package/dist/assets/{index-DcxPzpNS.js → index-C0Q8e5FM.js} +1 -1
  49. package/dist/assets/{index-CTYfpi2J.js → index-CQFSXxPp.js} +166 -166
  50. package/dist/assets/{index-C3iPkq79.js → index-D4HfKv3U.js} +1 -1
  51. package/dist/assets/{index-BRMp4xor.js → index-DETsDEp1.js} +1 -1
  52. package/dist/assets/{index-DiBzOhAN.js → index-DHlxJ27b.js} +1 -1
  53. package/dist/assets/{index-CLUiiUWQ.js → index-DLO62gfd.js} +1 -1
  54. package/dist/assets/{index-DgQigf_R.js → index-DjT-1R5N.js} +1 -1
  55. package/dist/assets/{index-BII3QszR.js → index-DsWckHTg.js} +1 -1
  56. package/dist/assets/{index-eROqpTg3.js → index-KCIhgRrL.js} +1 -1
  57. package/dist/assets/{index-CqyRpjaT.js → index-WltWzc1Z.js} +1 -1
  58. package/dist/assets/{index-BuFQpizN.js → index-quG0To4_.js} +1 -1
  59. package/dist/assets/{infoDiagram-6WOFNB3A-DRPEjZ3d.js → infoDiagram-6WOFNB3A-BQOY1VMN.js} +1 -1
  60. package/dist/assets/{journeyDiagram-FFXJYRFH-D-bCUgMG.js → journeyDiagram-FFXJYRFH-BLEcUGJo.js} +1 -1
  61. package/dist/assets/{kanban-definition-KOZQBZVT-B85i5eC4.js → kanban-definition-KOZQBZVT-RanT6u8e.js} +1 -1
  62. package/dist/assets/{layout-BGrsINEZ.js → layout-D4n_CEl8.js} +1 -1
  63. package/dist/assets/{linear-pcSEPOwJ.js → linear-BbPKk0w3.js} +1 -1
  64. package/dist/assets/{links-DZr8KDfw.js → links-B7_BzQLv.js} +1 -1
  65. package/dist/assets/{mermaid-Bu7PGvSJ.js → mermaid-CUkYs7pX.js} +4 -4
  66. package/dist/assets/{min-BIbDgP5-.js → min-Yuyj_o4k.js} +1 -1
  67. package/dist/assets/{mindmap-definition-LNHGMQRG-tCRSnTL_.js → mindmap-definition-LNHGMQRG-x4MjCJ_j.js} +1 -1
  68. package/dist/assets/{number-overlay-editor-Cmym0e23.js → number-overlay-editor-DeKR_mfB.js} +1 -1
  69. package/dist/assets/{pieDiagram-DBDJKBY4-DpkXENah.js → pieDiagram-DBDJKBY4-ZOMhJp-a.js} +1 -1
  70. package/dist/assets/{quadrantDiagram-YPSRARAO-CeVsWIL4.js → quadrantDiagram-YPSRARAO-vZeyiYxN.js} +1 -1
  71. package/dist/assets/{react-plotly-bhihEFAw.js → react-plotly-BV6-1ruP.js} +1 -1
  72. package/dist/assets/{requirementDiagram-EGVEC5DT-BvoCOWRy.js → requirementDiagram-EGVEC5DT-DkgbH0oi.js} +1 -1
  73. package/dist/assets/{run-page-DbSZPud1.js → run-page-0slxHZwl.js} +1 -1
  74. package/dist/assets/{sankeyDiagram-HRAUVNP4-Cu7q4U4c.js → sankeyDiagram-HRAUVNP4-BuFPw2i8.js} +1 -1
  75. package/dist/assets/{sequenceDiagram-WFGC7UMF-Bxyr66jz.js → sequenceDiagram-WFGC7UMF-BKGIaix6.js} +1 -1
  76. package/dist/assets/{slides-component-CR8YzEwo.js → slides-component-DYhLRND3.js} +1 -1
  77. package/dist/assets/{sortBy-viAGx73S.js → sortBy-C_bWmRoh.js} +1 -1
  78. package/dist/assets/{stateDiagram-UUKSUZ4H-DJJ0rAf0.js → stateDiagram-UUKSUZ4H-Cm2zkw0M.js} +1 -1
  79. package/dist/assets/stateDiagram-v2-EYPG3UTE-DX5NRIHK.js +1 -0
  80. package/dist/assets/{storage-TM0i2hq2.js → storage-Dk-ciwQU.js} +3 -3
  81. package/dist/assets/{terminal-BbRCg6oH.js → terminal-DrDWxiEU.js} +1 -1
  82. package/dist/assets/{time-B4nktxEd.js → time-DW3BCgky.js} +1 -1
  83. package/dist/assets/{timeline-definition-3HZDQTIS-6vQ8-7Z5.js → timeline-definition-3HZDQTIS-B_ZdpuLp.js} +1 -1
  84. package/dist/assets/{tracing-Cd6LslAY.js → tracing-BuGDnWcg.js} +2 -2
  85. package/dist/assets/{trash-DROPVtiT.js → trash-BKmRbRfw.js} +1 -1
  86. package/dist/assets/{treemap-75Q7IDZK-Bfo3G5Mq.js → treemap-75Q7IDZK-BBbbCdps.js} +1 -1
  87. package/dist/assets/{vega-component-BKsG4gHo.js → vega-component-DogOWa6S.js} +1 -1
  88. package/dist/assets/{xychartDiagram-FDP5SA34-BgTU9DKZ.js → xychartDiagram-FDP5SA34-3B1j_9pq.js} +1 -1
  89. package/dist/index.html +1 -1
  90. package/package.json +1 -1
  91. package/src/components/chat/chat-panel.tsx +17 -9
  92. package/src/components/editor/ai/add-cell-with-ai.tsx +19 -16
  93. package/src/components/editor/ai/ai-completion-editor.tsx +4 -0
  94. package/src/core/dom/outline.ts +16 -2
  95. package/dist/assets/_baseMap-DLtMmtEG.js +0 -1
  96. package/dist/assets/channel-7kaxt7IF.js +0 -1
  97. package/dist/assets/classDiagram-3BZAVTQC-Djy0cY4g.js +0 -1
  98. package/dist/assets/classDiagram-v2-QTMF73CY-Djy0cY4g.js +0 -1
  99. package/dist/assets/clone-BwvK2dmW.js +0 -1
  100. package/dist/assets/stateDiagram-v2-EYPG3UTE-CT0Gpq7L.js +0 -1
@@ -9,6 +9,7 @@ import {
9
9
  import { markdown } from "@codemirror/lang-markdown";
10
10
  import { sql } from "@codemirror/lang-sql";
11
11
  import { Prec } from "@codemirror/state";
12
+ import { promptHistory, storePrompt } from "@marimo-team/codemirror-ai";
12
13
  import ReactCodeMirror, {
13
14
  EditorView,
14
15
  keymap,
@@ -26,8 +27,9 @@ import {
26
27
  SparklesIcon,
27
28
  XIcon,
28
29
  } from "lucide-react";
29
- import { useMemo, useState } from "react";
30
+ import { useMemo, useRef, useState } from "react";
30
31
  import useEvent from "react-use-event-hook";
32
+ import { z } from "zod";
31
33
  import { AIModelDropdown } from "@/components/ai/ai-model-dropdown";
32
34
  import { Button } from "@/components/ui/button";
33
35
  import {
@@ -48,6 +50,7 @@ import { useRuntimeManager } from "@/core/runtime/config";
48
50
  import { useTheme } from "@/theme/useTheme";
49
51
  import { cn } from "@/utils/cn";
50
52
  import { prettyError } from "@/utils/errors";
53
+ import { ZodLocalStorage } from "@/utils/localStorage";
51
54
  import { useCellActions } from "../../../core/cells/cells";
52
55
  import { PythonIcon } from "../cell/code/icons";
53
56
  import {
@@ -71,6 +74,10 @@ const languageAtom = atomWithStorage<"python" | "sql">(
71
74
  "python",
72
75
  );
73
76
 
77
+ const KEY = "marimo:ai-prompt-history";
78
+ // Store the prompt history in local storage
79
+ const promptHistoryStorage = new ZodLocalStorage(z.array(z.string()), () => []);
80
+
74
81
  /**
75
82
  * Add a cell with AI.
76
83
  */
@@ -86,6 +93,7 @@ export const AddCellWithAI: React.FC<{
86
93
  const ai = useAtomValue(aiAtom);
87
94
  const editModel = ai?.models?.edit_model || DEFAULT_AI_MODEL;
88
95
  const { saveModelChange } = useModelChange();
96
+ const inputRef = useRef<ReactCodeMirrorRef>(null);
89
97
 
90
98
  const {
91
99
  completion,
@@ -120,6 +128,9 @@ export const AddCellWithAI: React.FC<{
120
128
 
121
129
  const submit = () => {
122
130
  if (!isLoading) {
131
+ if (inputRef.current?.view) {
132
+ storePrompt(inputRef.current.view);
133
+ }
123
134
  handleSubmit();
124
135
  }
125
136
  };
@@ -185,6 +196,7 @@ export const AddCellWithAI: React.FC<{
185
196
  <div className="flex items-center px-3">
186
197
  <SparklesIcon className="size-4 text-(--blue-11) mr-2" />
187
198
  <PromptInput
199
+ inputRef={inputRef}
188
200
  onClose={() => {
189
201
  setCompletion("");
190
202
  onClose();
@@ -338,6 +350,12 @@ export const PromptInput = ({
338
350
  markdownLanguage.language.data.of({
339
351
  autocomplete: additionalCompletionsSource,
340
352
  }),
353
+ promptHistory({
354
+ storage: {
355
+ load: () => promptHistoryStorage.get(KEY),
356
+ save: (prompts) => promptHistoryStorage.set(KEY, prompts),
357
+ },
358
+ }),
341
359
  EditorView.lineWrapping,
342
360
  minimalSetup(),
343
361
  Prec.highest(
@@ -392,21 +410,6 @@ export const PromptInput = ({
392
410
  },
393
411
  },
394
412
  ]),
395
- // Trap arrow up/down to prevent them from being used to navigate the editor
396
- keymap.of([
397
- {
398
- key: "ArrowUp",
399
- preventDefault: true,
400
- stopPropagation: true,
401
- },
402
- ]),
403
- keymap.of([
404
- {
405
- key: "ArrowDown",
406
- preventDefault: true,
407
- stopPropagation: true,
408
- },
409
- ]),
410
413
  ];
411
414
  }, [store, additionalCompletionsSource, handleSubmit, handleEscape]);
412
415
 
@@ -9,6 +9,7 @@ import { Button } from "@/components/ui/button";
9
9
  import { customPythonLanguageSupport } from "@/core/codemirror/language/languages/python";
10
10
 
11
11
  import "./merge-editor.css";
12
+ import { storePrompt } from "@marimo-team/codemirror-ai";
12
13
  import type { ReactCodeMirrorRef } from "@uiw/react-codemirror";
13
14
  import { useAtom } from "jotai";
14
15
  import { Checkbox } from "@/components/ui/checkbox";
@@ -175,6 +176,9 @@ export const AiCompletionEditor: React.FC<Props> = ({
175
176
  }}
176
177
  onSubmit={() => {
177
178
  if (!isLoading) {
179
+ if (inputRef.current?.view) {
180
+ storePrompt(inputRef.current.view);
181
+ }
178
182
  handleSubmit();
179
183
  }
180
184
  }}
@@ -8,9 +8,23 @@ import type { OutputMessage } from "../kernel/messages";
8
8
  // Tags that we don't want to include in the outline
9
9
  const excludedTags = ["marimo-carousel", "marimo-tabs", "marimo-accordion"];
10
10
 
11
- function getOutline(html: string): Outline {
12
- const items: Outline["items"] = [];
11
+ /**
12
+ * Extracts a table of contents {@link Outline} from an HTML string.
13
+ *
14
+ * Each {@link OutlineItem} corresponds to a heading (h1–h6) found in the input.
15
+ *
16
+ * @param html - The HTML content to parse.
17
+ * @returns An {@link Outline}, otherwise `null` if parsing via isn't supported in JS runtime (e.g., Node).
18
+ */
19
+ function getOutline(html: string): Outline | null {
20
+ // Some JS runtimes (e.g. Node.js for the VSCode extension) do not
21
+ // expose DOMParser globally. In those environments parsing isn't
22
+ // possible (without a polyfill), so return just return `null`.
23
+ if (typeof DOMParser === "undefined") {
24
+ return null;
25
+ }
13
26
 
27
+ const items: Outline["items"] = [];
14
28
  const parser = new DOMParser();
15
29
  const document = parser.parseFromString(html, "text/html");
16
30
 
@@ -1 +0,0 @@
1
- import{b as m}from"./_baseEach-D3nH_2xn.js";import{x as s}from"./index-CTYfpi2J.js";function e(r,o){var a=-1,t=s(r)?Array(r.length):[];return m(r,function(n,f,i){t[++a]=o(n,f,i)}),t}export{e as b};
@@ -1 +0,0 @@
1
- import{U as s,C as o}from"./mermaid-Bu7PGvSJ.js";const n=(a,r)=>s.lang.round(o.parse(a)[r]);export{n as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as t,C as o}from"./chunk-JBRWN2VN-bXiYdBHm.js";import{_ as e}from"./mermaid-Bu7PGvSJ.js";import"./transform-B8bpuzxV.js";import"./chunk-GLLZNHP4-Cit8A-EP.js";import"./chunk-WVR4S24B-BdZs7vKR.js";import"./chunk-NRVI72HA-Caq7CUfs.js";import"./index-CTYfpi2J.js";import"./step-BwsUM5iJ.js";import"./timer-BwIYMJWC.js";var i={parser:t,get db(){return new o},renderer:s,styles:a,init:e(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{i as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as t,C as o}from"./chunk-JBRWN2VN-bXiYdBHm.js";import{_ as e}from"./mermaid-Bu7PGvSJ.js";import"./transform-B8bpuzxV.js";import"./chunk-GLLZNHP4-Cit8A-EP.js";import"./chunk-WVR4S24B-BdZs7vKR.js";import"./chunk-NRVI72HA-Caq7CUfs.js";import"./index-CTYfpi2J.js";import"./step-BwsUM5iJ.js";import"./timer-BwIYMJWC.js";var i={parser:t,get db(){return new o},renderer:s,styles:a,init:e(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{i as diagram};
@@ -1 +0,0 @@
1
- import{b as n}from"./_baseUniq-CQqCX6A5.js";function o(r){return n(r,4)}export{o as c};
@@ -1 +0,0 @@
1
- import{s as t,b as a,a as e,S as o}from"./chunk-LXBSTHXV-BP4Soimz.js";import{_ as s}from"./mermaid-Bu7PGvSJ.js";import"./transform-B8bpuzxV.js";import"./chunk-WVR4S24B-BdZs7vKR.js";import"./chunk-NRVI72HA-Caq7CUfs.js";import"./index-CTYfpi2J.js";import"./step-BwsUM5iJ.js";import"./timer-BwIYMJWC.js";var i={parser:e,get db(){return new o(2)},renderer:a,styles:t,init:s(r=>{r.state||(r.state={}),r.state.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{i as diagram};