@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.
- package/dist/assets/{ConnectedDataExplorerComponent-A1945Aso.js → ConnectedDataExplorerComponent-BcJwEN2q.js} +1 -1
- package/dist/assets/{ImageComparisonComponent-D1NsIUty.js → ImageComparisonComponent-CnwGwcTi.js} +1 -1
- package/dist/assets/{VegaLite-BGGfcUZn.js → VegaLite-Cnk7Ozer.js} +1 -1
- package/dist/assets/{_baseEach-D3nH_2xn.js → _baseEach-DJPM6ZzY.js} +1 -1
- package/dist/assets/_baseMap-u5TY8JMW.js +1 -0
- package/dist/assets/{_baseUniq-CQqCX6A5.js → _baseUniq-CrXjB6JP.js} +1 -1
- package/dist/assets/{_createAggregator-CcFqySRL.js → _createAggregator-Cd0noqMc.js} +1 -1
- package/dist/assets/{any-language-editor-BCrWEpOh.js → any-language-editor-ZfVYrHPH.js} +1 -1
- package/dist/assets/{architectureDiagram-KFL7JDKH-Bi-k1FzL.js → architectureDiagram-KFL7JDKH-DuJCaD_M.js} +1 -1
- package/dist/assets/{blockDiagram-ZYB65J3Q-Dmpjl7Rr.js → blockDiagram-ZYB65J3Q-B0f3bVJ0.js} +1 -1
- package/dist/assets/{c4Diagram-AAMF2YG6-adiBTZJE.js → c4Diagram-AAMF2YG6-3srX8_ui.js} +1 -1
- package/dist/assets/channel-BIZI32eZ.js +1 -0
- package/dist/assets/{chunk-ANTBXLJU-DwXFMulX.js → chunk-ANTBXLJU-CD8Ya77t.js} +1 -1
- package/dist/assets/{chunk-FHKO5MBM-xaGLB2hd.js → chunk-FHKO5MBM-34L0hhh_.js} +1 -1
- package/dist/assets/{chunk-GLLZNHP4-Cit8A-EP.js → chunk-GLLZNHP4-CRWkmhQj.js} +1 -1
- package/dist/assets/{chunk-JBRWN2VN-bXiYdBHm.js → chunk-JBRWN2VN-CB8a_SQv.js} +1 -1
- package/dist/assets/{chunk-LXBSTHXV-BP4Soimz.js → chunk-LXBSTHXV-YNRk01ob.js} +1 -1
- package/dist/assets/{chunk-NRVI72HA-Caq7CUfs.js → chunk-NRVI72HA-nFtyi9pH.js} +1 -1
- package/dist/assets/{chunk-OMD6QJNC-54ZKr9c_.js → chunk-OMD6QJNC-BXZ4Kapq.js} +1 -1
- package/dist/assets/{chunk-WVR4S24B-BdZs7vKR.js → chunk-WVR4S24B-ZnYlHppS.js} +1 -1
- package/dist/assets/{circle-play-BDHXCb0Y.js → circle-play-k88jloBa.js} +1 -1
- package/dist/assets/classDiagram-3BZAVTQC-DfPpF-gd.js +1 -0
- package/dist/assets/classDiagram-v2-QTMF73CY-DfPpF-gd.js +1 -0
- package/dist/assets/clone-yHYNh3QG.js +1 -0
- package/dist/assets/{compile-CGvn-4st.js → compile-CDMtSySK.js} +1 -1
- package/dist/assets/{dagre-2BBEFEWP-BEa1obN_.js → dagre-2BBEFEWP-Bfm20vyd.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-BsrLkNwc.js → data-grid-overlay-editor-CwEfDFcK.js} +1 -1
- package/dist/assets/{diagram-4IRLE6MV-Cf3FnnYp.js → diagram-4IRLE6MV-A9psNOWP.js} +1 -1
- package/dist/assets/{diagram-GUPCWM2R-Cty98at3.js → diagram-GUPCWM2R-B23WLgai.js} +1 -1
- package/dist/assets/{diagram-RP2FKANI-DWVcFwOr.js → diagram-RP2FKANI-CU5qL55k.js} +1 -1
- package/dist/assets/{edit-page-DMaQm3LE.js → edit-page-DYm-s1ff.js} +58 -58
- package/dist/assets/{erDiagram-HZWUO2LU-CyO1eOOE.js → erDiagram-HZWUO2LU-D31RvIVf.js} +1 -1
- package/dist/assets/{flowDiagram-THRYKUMA-CRj5oK-a.js → flowDiagram-THRYKUMA-ClYGAL8Y.js} +1 -1
- package/dist/assets/{ganttDiagram-WV7ZQ7D5-2EImeZRg.js → ganttDiagram-WV7ZQ7D5-Cmed9KL9.js} +1 -1
- package/dist/assets/{gitGraphDiagram-OJR772UL-B9tcK9BT.js → gitGraphDiagram-OJR772UL-CWvdnGVc.js} +1 -1
- package/dist/assets/{glide-data-editor-BvISYI3t.js → glide-data-editor-CFVz2aZ5.js} +4 -4
- package/dist/assets/{graph-D9tj17QN.js → graph-OxTx0_rA.js} +1 -1
- package/dist/assets/{home-page-p4uSMJRW.js → home-page-Dt3nnRSz.js} +1 -1
- package/dist/assets/{index-CvsUfIK9.js → index-4GKIL9qL.js} +1 -1
- package/dist/assets/{index-esTG9RN-.js → index-B-P7QUhF.js} +1 -1
- package/dist/assets/{index-H-k8tqNe.js → index-BLXqwIOX.js} +1 -1
- package/dist/assets/{index-Boz2pcJb.js → index-BM1NAxco.js} +1 -1
- package/dist/assets/{index-COVExp2x.js → index-BOFl7de8.js} +1 -1
- package/dist/assets/{index-_uCXr0qE.js → index-BUwTI3go.js} +1 -1
- package/dist/assets/{index-DgR-q7Mi.js → index-Baw8vWOg.js} +1 -1
- package/dist/assets/{index-BytvWT4g.js → index-Bd2C9zUZ.js} +1 -1
- package/dist/assets/{index-0xnfM4P4.js → index-Bu3XvTHk.js} +1 -1
- package/dist/assets/{index-DcxPzpNS.js → index-C0Q8e5FM.js} +1 -1
- package/dist/assets/{index-CTYfpi2J.js → index-CQFSXxPp.js} +166 -166
- package/dist/assets/{index-C3iPkq79.js → index-D4HfKv3U.js} +1 -1
- package/dist/assets/{index-BRMp4xor.js → index-DETsDEp1.js} +1 -1
- package/dist/assets/{index-DiBzOhAN.js → index-DHlxJ27b.js} +1 -1
- package/dist/assets/{index-CLUiiUWQ.js → index-DLO62gfd.js} +1 -1
- package/dist/assets/{index-DgQigf_R.js → index-DjT-1R5N.js} +1 -1
- package/dist/assets/{index-BII3QszR.js → index-DsWckHTg.js} +1 -1
- package/dist/assets/{index-eROqpTg3.js → index-KCIhgRrL.js} +1 -1
- package/dist/assets/{index-CqyRpjaT.js → index-WltWzc1Z.js} +1 -1
- package/dist/assets/{index-BuFQpizN.js → index-quG0To4_.js} +1 -1
- package/dist/assets/{infoDiagram-6WOFNB3A-DRPEjZ3d.js → infoDiagram-6WOFNB3A-BQOY1VMN.js} +1 -1
- package/dist/assets/{journeyDiagram-FFXJYRFH-D-bCUgMG.js → journeyDiagram-FFXJYRFH-BLEcUGJo.js} +1 -1
- package/dist/assets/{kanban-definition-KOZQBZVT-B85i5eC4.js → kanban-definition-KOZQBZVT-RanT6u8e.js} +1 -1
- package/dist/assets/{layout-BGrsINEZ.js → layout-D4n_CEl8.js} +1 -1
- package/dist/assets/{linear-pcSEPOwJ.js → linear-BbPKk0w3.js} +1 -1
- package/dist/assets/{links-DZr8KDfw.js → links-B7_BzQLv.js} +1 -1
- package/dist/assets/{mermaid-Bu7PGvSJ.js → mermaid-CUkYs7pX.js} +4 -4
- package/dist/assets/{min-BIbDgP5-.js → min-Yuyj_o4k.js} +1 -1
- package/dist/assets/{mindmap-definition-LNHGMQRG-tCRSnTL_.js → mindmap-definition-LNHGMQRG-x4MjCJ_j.js} +1 -1
- package/dist/assets/{number-overlay-editor-Cmym0e23.js → number-overlay-editor-DeKR_mfB.js} +1 -1
- package/dist/assets/{pieDiagram-DBDJKBY4-DpkXENah.js → pieDiagram-DBDJKBY4-ZOMhJp-a.js} +1 -1
- package/dist/assets/{quadrantDiagram-YPSRARAO-CeVsWIL4.js → quadrantDiagram-YPSRARAO-vZeyiYxN.js} +1 -1
- package/dist/assets/{react-plotly-bhihEFAw.js → react-plotly-BV6-1ruP.js} +1 -1
- package/dist/assets/{requirementDiagram-EGVEC5DT-BvoCOWRy.js → requirementDiagram-EGVEC5DT-DkgbH0oi.js} +1 -1
- package/dist/assets/{run-page-DbSZPud1.js → run-page-0slxHZwl.js} +1 -1
- package/dist/assets/{sankeyDiagram-HRAUVNP4-Cu7q4U4c.js → sankeyDiagram-HRAUVNP4-BuFPw2i8.js} +1 -1
- package/dist/assets/{sequenceDiagram-WFGC7UMF-Bxyr66jz.js → sequenceDiagram-WFGC7UMF-BKGIaix6.js} +1 -1
- package/dist/assets/{slides-component-CR8YzEwo.js → slides-component-DYhLRND3.js} +1 -1
- package/dist/assets/{sortBy-viAGx73S.js → sortBy-C_bWmRoh.js} +1 -1
- package/dist/assets/{stateDiagram-UUKSUZ4H-DJJ0rAf0.js → stateDiagram-UUKSUZ4H-Cm2zkw0M.js} +1 -1
- package/dist/assets/stateDiagram-v2-EYPG3UTE-DX5NRIHK.js +1 -0
- package/dist/assets/{storage-TM0i2hq2.js → storage-Dk-ciwQU.js} +3 -3
- package/dist/assets/{terminal-BbRCg6oH.js → terminal-DrDWxiEU.js} +1 -1
- package/dist/assets/{time-B4nktxEd.js → time-DW3BCgky.js} +1 -1
- package/dist/assets/{timeline-definition-3HZDQTIS-6vQ8-7Z5.js → timeline-definition-3HZDQTIS-B_ZdpuLp.js} +1 -1
- package/dist/assets/{tracing-Cd6LslAY.js → tracing-BuGDnWcg.js} +2 -2
- package/dist/assets/{trash-DROPVtiT.js → trash-BKmRbRfw.js} +1 -1
- package/dist/assets/{treemap-75Q7IDZK-Bfo3G5Mq.js → treemap-75Q7IDZK-BBbbCdps.js} +1 -1
- package/dist/assets/{vega-component-BKsG4gHo.js → vega-component-DogOWa6S.js} +1 -1
- package/dist/assets/{xychartDiagram-FDP5SA34-BgTU9DKZ.js → xychartDiagram-FDP5SA34-3B1j_9pq.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/components/chat/chat-panel.tsx +17 -9
- package/src/components/editor/ai/add-cell-with-ai.tsx +19 -16
- package/src/components/editor/ai/ai-completion-editor.tsx +4 -0
- package/src/core/dom/outline.ts +16 -2
- package/dist/assets/_baseMap-DLtMmtEG.js +0 -1
- package/dist/assets/channel-7kaxt7IF.js +0 -1
- package/dist/assets/classDiagram-3BZAVTQC-Djy0cY4g.js +0 -1
- package/dist/assets/classDiagram-v2-QTMF73CY-Djy0cY4g.js +0 -1
- package/dist/assets/clone-BwvK2dmW.js +0 -1
- 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
|
}}
|
package/src/core/dom/outline.ts
CHANGED
@@ -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
|
-
|
12
|
-
|
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};
|