@marimo-team/islands 0.20.5-dev5 → 0.20.5-dev52
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/{Combination-Du-o_hC9.js → Combination-Dk6JxauT.js} +1 -1
- package/dist/{ConnectedDataExplorerComponent-DUS-zJoR.js → ConnectedDataExplorerComponent-B07FkeWC.js} +10 -10
- package/dist/{any-language-editor-BL9o7y0_.js → any-language-editor-BIj11a2e.js} +19 -19
- package/dist/{architectureDiagram-VXUJARFQ-DrJeyFHq.js → architectureDiagram-VXUJARFQ-IZt4NuSd.js} +5 -5
- package/dist/{blockDiagram-VD42YOAC-BJrP6qKc.js → blockDiagram-VD42YOAC-mhFHC3Ty.js} +5 -5
- package/dist/{button-KYalaJYu.js → button-DQpBib29.js} +24 -11
- package/dist/{c4Diagram-YG6GDRKO-Bo4gytQ5.js → c4Diagram-YG6GDRKO-BzStmvfT.js} +4 -4
- package/dist/{channel-IWLGkaBE.js → channel-CUFaIkTh.js} +1 -1
- package/dist/{check-C50jsehH.js → check-DpqPQmzz.js} +1 -1
- package/dist/{chunk-ABZYJK2D-CRwanrkd.js → chunk-ABZYJK2D-7QYXAAhe.js} +1 -1
- package/dist/{chunk-ATLVNIR6-CMMCMvOK.js → chunk-ATLVNIR6-pmHPAPSd.js} +1 -1
- package/dist/{chunk-B4BG7PRW-BNsHrGHG.js → chunk-B4BG7PRW-C9mfKT9i.js} +4 -4
- package/dist/{chunk-DI55MBZ5-DQeYbfMV.js → chunk-DI55MBZ5-IKrK49rX.js} +4 -4
- package/dist/{chunk-EXTU4WIE-CV_DQeaX.js → chunk-EXTU4WIE-BRFl4iNd.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-Cmt--e0q.js → chunk-JA3XYJ7Z-C9q_MXZQ.js} +2 -2
- package/dist/{chunk-JZLCHNYA-CkyMJnI9.js → chunk-JZLCHNYA-DVjoFib5.js} +4 -4
- package/dist/{chunk-N4CR4FBY-BJfHtJbD.js → chunk-N4CR4FBY-BYr5N5mX.js} +5 -5
- package/dist/{chunk-QN33PNHL-WOLIPUAJ.js → chunk-QN33PNHL-CXfJywHv.js} +1 -1
- package/dist/{chunk-QXUST7PY-DYuD50pU.js → chunk-QXUST7PY-YO0PM8b3.js} +5 -5
- package/dist/{chunk-S3R3BYOJ-CsnX6RKs.js → chunk-S3R3BYOJ-DgI4FlvW.js} +1 -1
- package/dist/{chunk-TZMSLE5B-B3eYTGCw.js → chunk-TZMSLE5B-DSfBOnzx.js} +1 -1
- package/dist/{classDiagram-2ON5EDUG-C7C-oefv.js → classDiagram-2ON5EDUG-CvpnTWzz.js} +10 -10
- package/dist/{classDiagram-v2-WZHVMYZB-UTw37Gg8.js → classDiagram-v2-WZHVMYZB-DEQrBHLI.js} +10 -10
- package/dist/{copy-oc-FcZzt.js → copy-BkBF0Xgk.js} +2 -2
- package/dist/{dagre-6UL2VRFP-BgsUhJrV.js → dagre-6UL2VRFP-DC-emrm5.js} +7 -7
- package/dist/{diagram-PSM6KHXK-BIUUOfKo.js → diagram-PSM6KHXK-BAgNlpL8.js} +6 -6
- package/dist/{diagram-QEK2KX5R-BFjolZQv.js → diagram-QEK2KX5R-BM7QE5WA.js} +4 -4
- package/dist/{diagram-S2PKOQOG-4jfkWoZw.js → diagram-S2PKOQOG-qs4mB1gW.js} +4 -4
- package/dist/dist-B4MxkKHf.js +8 -0
- package/dist/{dist-De9X_Des.js → dist-B9EjSb9T.js} +1 -1
- package/dist/{dist-IW_ARJ3S.js → dist-BFxYppVR.js} +4 -4
- package/dist/{dist-D7ZGWV_9.js → dist-BGZ7TWS9.js} +3 -3
- package/dist/{dist-CwtEWuFb.js → dist-BSfYc7vq.js} +2 -2
- package/dist/{dist-DMS81OrU.js → dist-BUrWeMEP.js} +1 -1
- package/dist/dist-BYghZv6b.js +5 -0
- package/dist/dist-Be-uQhz5.js +6 -0
- package/dist/{dist-Ch_JuCvc.js → dist-BpMlUdNO.js} +3 -3
- package/dist/{dist-C6z8U-ms.js → dist-Bq5eYK43.js} +2 -2
- package/dist/{dist-BFL9TlzD.js → dist-Bq9zYwJs.js} +5 -5
- package/dist/{dist-7ZF--V_D.js → dist-C4K7pumm.js} +2 -2
- package/dist/{dist-Qjf6pcqK.js → dist-CAKwXCWI.js} +2 -2
- package/dist/dist-CB_xf0ju.js +5 -0
- package/dist/{dist-BwQHkjA9.js → dist-CDHl2i1x.js} +4 -4
- package/dist/dist-CK0qFAbF.js +8 -0
- package/dist/{dist-C4XMUaob.js → dist-CPlGUbk-.js} +2 -2
- package/dist/{dist-BT6_J2eq.js → dist-CSEWGuDq.js} +7 -2
- package/dist/dist-CYEk-qrr.js +8 -0
- package/dist/{dist-CYo3w-nC.js → dist-Cl5iM8xL.js} +3 -3
- package/dist/dist-CmKoWpMk.js +5 -0
- package/dist/{dist-I8MQW60_.js → dist-CseYuPtL.js} +2 -2
- package/dist/dist-D1nf4IQl.js +5 -0
- package/dist/{dist-CsqiXw7J.js → dist-D4gcY469.js} +2 -2
- package/dist/{dist-DUxS2paD.js → dist-D5NMgbbv.js} +2 -2
- package/dist/{dist-UYm1IE5s.js → dist-DERtJN02.js} +2 -2
- package/dist/{dist-CFToYDWO.js → dist-DEj2X26M.js} +2 -2
- package/dist/{dist-BuapEdlD.js → dist-DOoqn-VL.js} +70 -67
- package/dist/{dist-BLThQiU4.js → dist-DUretbKK.js} +2 -2
- package/dist/{dist-DEFZ7dnD.js → dist-D_-CGmlh.js} +2 -2
- package/dist/dist-Df3AcKpt.js +6 -0
- package/dist/dist-DgaFHt_I.js +5 -0
- package/dist/dist-Dk10C3ui.js +5 -0
- package/dist/{dist-D0f6Yrrb.js → dist-DodLQWPg.js} +1 -1
- package/dist/dist-DtyPVMHR.js +5 -0
- package/dist/{dist-Cb3cLT39.js → dist-HoZO6brh.js} +2 -2
- package/dist/{dist-Cqpjy6bK.js → dist-RNGn_-uD.js} +1 -1
- package/dist/{dist-BBcqvpvP.js → dist-Ux6dL_VB.js} +1 -1
- package/dist/{dist-B8Y11RWn.js → dist-WIWVvdBh.js} +2 -2
- package/dist/{dist-CB6qhQ8K.js → dist-gc9KgJuA.js} +1 -1
- package/dist/{dist-ovDpXuSB.js → dist-i-ud9aCA.js} +1 -1
- package/dist/dist-ko7WnHAO.js +5 -0
- package/dist/{dist-BTQbjEKU.js → dist-lNe4i1Nm.js} +1 -1
- package/dist/dist-of7gLRFK.js +8 -0
- package/dist/{erDiagram-Q2GNP2WA-Cq5Bz5lG.js → erDiagram-Q2GNP2WA-Dh5nhgY3.js} +10 -10
- package/dist/{error-banner-D0tXnwl4.js → error-banner-BctofTCP.js} +2 -2
- package/dist/{esm-BxMbHo0y.js → esm-BBkPJL8N.js} +29 -27
- package/dist/{flowDiagram-NV44I4VS-6WPJVFl7.js → flowDiagram-NV44I4VS-ChR1Vbmj.js} +10 -10
- package/dist/{ganttDiagram-JELNMOA3-AfDhh9CI.js → ganttDiagram-JELNMOA3-sK0z-5KM.js} +3 -3
- package/dist/{gitGraphDiagram-V2S2FVAM-BRSwuj0Q.js → gitGraphDiagram-V2S2FVAM-9S1VqQrL.js} +3 -3
- package/dist/{glide-data-editor-ByPNTNVG.js → glide-data-editor-DI5VFwRB.js} +63 -63
- package/dist/{infoDiagram-HS3SLOUP-Cmxo6jKx.js → infoDiagram-HS3SLOUP-C5A8b-2O.js} +3 -3
- package/dist/{journeyDiagram-XKPGCS4Q-CKYr8cSR.js → journeyDiagram-XKPGCS4Q-D5BIjS4N.js} +3 -3
- package/dist/{kanban-definition-3W4ZIXB7-DVvAZzQD.js → kanban-definition-3W4ZIXB7-C1vZZabj.js} +7 -7
- package/dist/{label-CV0KYhtH.js → label-Cx28eo0O.js} +5 -5
- package/dist/{loader-eJCvvApN.js → loader-C62dRCuy.js} +1 -1
- package/dist/main.js +1542 -1072
- package/dist/{mermaid-COOB_abB.js → mermaid-BgeZPIms.js} +41 -41
- package/dist/{mindmap-definition-VGOIOE7T-1ExmnvYy.js → mindmap-definition-VGOIOE7T-Cn9_H_5f.js} +9 -9
- package/dist/{pieDiagram-ADFJNKIX-CJlIsdsU.js → pieDiagram-ADFJNKIX-iA0mvRW9.js} +4 -4
- package/dist/{purify.es-CyOIw8ru.js → purify.es-DGenX2XH.js} +67 -67
- package/dist/{quadrantDiagram-AYHSOK5B-BU78RiaH.js → quadrantDiagram-AYHSOK5B-CAcVWXc-.js} +2 -2
- package/dist/{requirementDiagram-UZGBJVZJ-DACHtrFr.js → requirementDiagram-UZGBJVZJ-1HxQ6I5Z.js} +9 -9
- package/dist/{sankeyDiagram-TZEHDZUN-Bzg7_UWs.js → sankeyDiagram-TZEHDZUN-BVJnR4_b.js} +2 -2
- package/dist/{sequenceDiagram-WL72ISMW-agybEe9J.js → sequenceDiagram-WL72ISMW-ByirOtHb.js} +4 -4
- package/dist/{slides-component-B0yK5GXP.js → slides-component-DwvL_HJi.js} +2 -2
- package/dist/{spec-Dq_reDGM.js → spec-B8V2Bcbi.js} +4 -4
- package/dist/{stateDiagram-FKZM4ZOC-DehQAt8g.js → stateDiagram-FKZM4ZOC-DrYNXdQr.js} +10 -10
- package/dist/{stateDiagram-v2-4FDKWEC3-8VzeREl9.js → stateDiagram-v2-4FDKWEC3-C9CFKCSr.js} +10 -10
- package/dist/style.css +1 -1
- package/dist/{timeline-definition-IT6M3QCI-CdCfdaCF.js → timeline-definition-IT6M3QCI-D8B3p7ID.js} +2 -2
- package/dist/{tooltip-CL8m4f9y.js → tooltip-SPkubVH3.js} +3 -3
- package/dist/{types-BwnzGcE4.js → types-DqrGPzsT.js} +517 -406
- package/dist/{useAsyncData-B4hMFGnF.js → useAsyncData-Ioeh75f8.js} +1 -1
- package/dist/{useDeepCompareMemoize-DuPhOXzr.js → useDeepCompareMemoize-DtbTAJq3.js} +4 -4
- package/dist/{useIframeCapabilities-CAt6D2EI.js → useIframeCapabilities-DFGZKWkO.js} +1 -1
- package/dist/{useTheme-BNYQnvu-.js → useTheme-OvBNH9t3.js} +2 -2
- package/dist/{vega-component-DouPy8AI.js → vega-component-B_4Lp3hK.js} +8 -8
- package/dist/{xychartDiagram-PRI3JC2R-rEm_SIsC.js → xychartDiagram-PRI3JC2R-KuxgQuK9.js} +5 -5
- package/package.json +9 -9
- package/src/__mocks__/requests.ts +1 -0
- package/src/components/app-config/ai-config.tsx +10 -0
- package/src/components/datasources/components.tsx +3 -6
- package/src/components/datasources/datasources.tsx +8 -21
- package/src/components/editor/actions/types.ts +6 -1
- package/src/components/editor/actions/useNotebookActions.tsx +50 -13
- package/src/components/editor/chrome/types.ts +17 -0
- package/src/components/editor/controls/command-palette.tsx +7 -0
- package/src/components/editor/controls/keyboard-shortcuts.tsx +3 -1
- package/src/components/editor/file-tree/file-explorer.tsx +48 -62
- package/src/components/editor/file-tree/file-icons.tsx +132 -0
- package/src/components/editor/file-tree/file-viewer.tsx +1 -1
- package/src/components/editor/file-tree/tree-actions.tsx +107 -0
- package/src/components/editor/file-tree/types.ts +2 -96
- package/src/components/editor/header/filename-input.tsx +4 -1
- package/src/components/icons/marimo-icons.tsx +2 -2
- package/src/components/pages/home-page.tsx +5 -5
- package/src/components/storage/__tests__/storage-snippets.test.ts +253 -0
- package/src/components/storage/components.tsx +0 -38
- package/src/components/storage/storage-file-viewer.tsx +1 -1
- package/src/components/storage/storage-inspector.tsx +65 -50
- package/src/components/storage/storage-snippets.ts +67 -0
- package/src/components/ui/command.tsx +2 -0
- package/src/components/ui/links.tsx +1 -0
- package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +206 -0
- package/src/core/ai/tools/run-cells-tool.ts +75 -40
- package/src/core/hotkeys/__tests__/hotkeys.test.ts +64 -1
- package/src/core/hotkeys/hotkeys.ts +29 -3
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/network/__tests__/requests-network.test.ts +17 -0
- package/src/core/network/requests-lazy.ts +1 -0
- package/src/core/network/requests-network.ts +9 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +1 -0
- package/src/core/storage/__tests__/state.test.ts +1 -0
- package/src/core/wasm/bridge.ts +1 -0
- package/src/plugins/impl/FileBrowserPlugin.tsx +4 -4
- package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +309 -0
- package/src/plugins/impl/mpl-interactive/__tests__/mpl-websocket-shim.test.ts +110 -0
- package/src/plugins/impl/mpl-interactive/mpl-websocket-shim.ts +57 -0
- package/src/plugins/impl/plotly/PlotlyPlugin.tsx +8 -2
- package/src/plugins/plugins.ts +2 -0
- package/src/utils/__tests__/filenames.test.ts +7 -0
- package/src/utils/__tests__/smartMatch.test.ts +61 -0
- package/src/utils/filenames.ts +3 -0
- package/src/utils/smartMatch.ts +62 -0
- package/dist/dist-BAeGo2rp.js +0 -5
- package/dist/dist-BqwCMSEa.js +0 -5
- package/dist/dist-Bum8FwTO.js +0 -6
- package/dist/dist-C0YiOwt_.js +0 -5
- package/dist/dist-C2uPv4iU.js +0 -5
- package/dist/dist-C5hOLsJN.js +0 -8
- package/dist/dist-C9NIAKMs.js +0 -8
- package/dist/dist-CCrzTtvk.js +0 -5
- package/dist/dist-CFS9i1rS.js +0 -8
- package/dist/dist-CyHZuhPH.js +0 -5
- package/dist/dist-CzcjWdIk.js +0 -6
- package/dist/dist-DaYyUSNC.js +0 -5
- package/dist/dist-DpDcJYNh.js +0 -8
- package/dist/dist-U_BfxcPn.js +0 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-BNovOVIE.js";
|
|
2
2
|
import { t as require_react } from "./react-Bs6Z0kvn.js";
|
|
3
3
|
import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
|
|
4
|
-
import { C as useEvent_default } from "./useTheme-
|
|
4
|
+
import { C as useEvent_default } from "./useTheme-OvBNH9t3.js";
|
|
5
5
|
import { t as invariant } from "./invariant-D9QLJ4SZ.js";
|
|
6
6
|
var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1), Result = {
|
|
7
7
|
error(e, s) {
|
|
@@ -4,12 +4,12 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4
4
|
import { s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
|
|
5
5
|
import { t as require_react } from "./react-Bs6Z0kvn.js";
|
|
6
6
|
import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
|
|
7
|
-
import { l as createLucideIcon } from "./dist-
|
|
8
|
-
import { a as cva, g as Logger, y as cn } from "./button-
|
|
7
|
+
import { l as createLucideIcon } from "./dist-WIWVvdBh.js";
|
|
8
|
+
import { a as cva, g as Logger, y as cn } from "./button-DQpBib29.js";
|
|
9
9
|
import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
|
|
10
10
|
import { r as KnownQueryParams } from "./constants-D1Tbg_6B.js";
|
|
11
|
-
import { f as waitFor, p as isIslands, u as store, y as atom } from "./useTheme-
|
|
12
|
-
import { i as tableFromIPC } from "./loader-
|
|
11
|
+
import { f as waitFor, p as isIslands, u as store, y as atom } from "./useTheme-OvBNH9t3.js";
|
|
12
|
+
import { i as tableFromIPC } from "./loader-C62dRCuy.js";
|
|
13
13
|
var CircleQuestionMark = createLucideIcon("circle-question-mark", [
|
|
14
14
|
["circle", {
|
|
15
15
|
cx: "12",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-BNovOVIE.js";
|
|
2
2
|
import { t as require_react } from "./react-Bs6Z0kvn.js";
|
|
3
3
|
import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
|
|
4
|
-
import { g as Logger } from "./button-
|
|
4
|
+
import { g as Logger } from "./button-DQpBib29.js";
|
|
5
5
|
import { n as once } from "./once-BqS42WgZ.js";
|
|
6
6
|
function testStorage(e) {
|
|
7
7
|
try {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-BNovOVIE.js";
|
|
2
2
|
import { t as require_react } from "./react-Bs6Z0kvn.js";
|
|
3
3
|
import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
|
|
4
|
-
import { g as Logger, s as OverridingHotkeyProvider, u as resolvePlatform } from "./button-
|
|
5
|
-
import { B as record, H as string, L as number, O as array, P as looseObject, R as object, W as union, k as boolean, w as _enum } from "./Combination-
|
|
4
|
+
import { g as Logger, s as OverridingHotkeyProvider, u as resolvePlatform } from "./button-DQpBib29.js";
|
|
5
|
+
import { B as record, H as string, L as number, O as array, P as looseObject, R as object, W as union, k as boolean, w as _enum } from "./Combination-Dk6JxauT.js";
|
|
6
6
|
import { t as _baseIsEqual_default } from "./_baseIsEqual-5cAxzk6f.js";
|
|
7
7
|
import { t as merge_default } from "./merge-CGQkMGzr.js";
|
|
8
8
|
function isEqual(e, A) {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-BNovOVIE.js";
|
|
2
2
|
import { t as require_react } from "./react-Bs6Z0kvn.js";
|
|
3
3
|
import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
|
|
4
|
-
import { S as CircleQuestionMark, a as AlertTitle, m as asRemoteURL, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-
|
|
5
|
-
import { d as Objects, g as Logger, h as Events } from "./button-
|
|
6
|
-
import "./Combination-
|
|
4
|
+
import { S as CircleQuestionMark, a as AlertTitle, m as asRemoteURL, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-DtbTAJq3.js";
|
|
5
|
+
import { d as Objects, g as Logger, h as Events } from "./button-DQpBib29.js";
|
|
6
|
+
import "./Combination-Dk6JxauT.js";
|
|
7
7
|
import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
|
|
8
8
|
import "./react-dom-CqtLRVZP.js";
|
|
9
|
-
import { t as Tooltip } from "./tooltip-
|
|
9
|
+
import { t as Tooltip } from "./tooltip-SPkubVH3.js";
|
|
10
10
|
import { i as debounce_default } from "./constants-D1Tbg_6B.js";
|
|
11
|
-
import { C as useEvent_default, n as useTheme } from "./useTheme-
|
|
12
|
-
import { a as tooltipHandler, n as vegaLoadData } from "./loader-
|
|
11
|
+
import { C as useEvent_default, n as useTheme } from "./useTheme-OvBNH9t3.js";
|
|
12
|
+
import { a as tooltipHandler, n as vegaLoadData } from "./loader-C62dRCuy.js";
|
|
13
13
|
import { t as uniq_default } from "./uniq-cCc07Q8K.js";
|
|
14
|
-
import { n as ErrorBanner } from "./error-banner-
|
|
14
|
+
import { n as ErrorBanner } from "./error-banner-BctofTCP.js";
|
|
15
15
|
import { n as formats } from "./vega-loader.browser-CQ-lnUkI.js";
|
|
16
|
-
import { t as useAsyncData } from "./useAsyncData-
|
|
16
|
+
import { t as useAsyncData } from "./useAsyncData-Ioeh75f8.js";
|
|
17
17
|
import { t as j } from "./react-vega-C6kwcd86.js";
|
|
18
18
|
import "./defaultLocale-Bklbu-Tp.js";
|
|
19
19
|
import "./defaultLocale-CfQ4kBaV.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2
|
-
import "./purify.es-
|
|
2
|
+
import "./purify.es-DGenX2XH.js";
|
|
3
3
|
import { t as linear } from "./linear-DIp6l9sg.js";
|
|
4
4
|
import { n as ordinal } from "./ordinal-Dcvf4J1m.js";
|
|
5
5
|
import { t as range } from "./range-BToS7LsA.js";
|
|
6
6
|
import "./defaultLocale-Bklbu-Tp.js";
|
|
7
7
|
import { t as line_default } from "./line-C1k1rG3Z.js";
|
|
8
|
-
import { i as cleanAndMerge } from "./chunk-S3R3BYOJ-
|
|
8
|
+
import { i as cleanAndMerge } from "./chunk-S3R3BYOJ-DgI4FlvW.js";
|
|
9
9
|
import { n as initRange } from "./init-Ci8VD8ZH.js";
|
|
10
10
|
import { i as log, r as __name } from "./src-CHUphWwL.js";
|
|
11
|
-
import { B as setAccTitle, C as getDiagramTitle, I as sanitizeText, T as getThemeVariables3, U as setDiagramTitle, _ as getAccDescription, a as clear, c as configureSvgSize, d as defaultConfig_default, v as getAccTitle, y as getConfig, z as setAccDescription } from "./chunk-ABZYJK2D-
|
|
12
|
-
import { t as selectSvgElement } from "./chunk-EXTU4WIE-
|
|
11
|
+
import { B as setAccTitle, C as getDiagramTitle, I as sanitizeText, T as getThemeVariables3, U as setDiagramTitle, _ as getAccDescription, a as clear, c as configureSvgSize, d as defaultConfig_default, v as getAccTitle, y as getConfig, z as setAccDescription } from "./chunk-ABZYJK2D-7QYXAAhe.js";
|
|
12
|
+
import { t as selectSvgElement } from "./chunk-EXTU4WIE-BRFl4iNd.js";
|
|
13
13
|
import "./dist-Bymy0kEH.js";
|
|
14
|
-
import { t as computeDimensionOfText } from "./chunk-JA3XYJ7Z-
|
|
14
|
+
import { t as computeDimensionOfText } from "./chunk-JA3XYJ7Z-C9q_MXZQ.js";
|
|
15
15
|
function band() {
|
|
16
16
|
var e = ordinal().unknown(void 0), w = e.domain, T = e.range, D = 0, O = 1, k, A, j = false, M = 0, N = 0, P = 0.5;
|
|
17
17
|
delete e.unknown;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marimo-team/islands",
|
|
3
|
-
"version": "0.20.5-
|
|
3
|
+
"version": "0.20.5-dev52",
|
|
4
4
|
"main": "dist/main.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -23,20 +23,20 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@ai-sdk/react": "^2.0.125",
|
|
25
25
|
"@anywidget/types": "^0.2.0",
|
|
26
|
-
"@codemirror/autocomplete": "^6.20.
|
|
26
|
+
"@codemirror/autocomplete": "^6.20.1",
|
|
27
27
|
"@codemirror/commands": "^6.10.2",
|
|
28
28
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
29
29
|
"@codemirror/lang-python": "^6.2.1",
|
|
30
30
|
"@codemirror/lang-sql": "^6.10.0",
|
|
31
|
-
"@codemirror/language": "^6.12.
|
|
31
|
+
"@codemirror/language": "^6.12.2",
|
|
32
32
|
"@codemirror/language-data": "^6.5.2",
|
|
33
33
|
"@codemirror/legacy-modes": "^6.5.2",
|
|
34
|
-
"@codemirror/lint": "^6.9.
|
|
35
|
-
"@codemirror/merge": "^6.
|
|
34
|
+
"@codemirror/lint": "^6.9.5",
|
|
35
|
+
"@codemirror/merge": "^6.12.0",
|
|
36
36
|
"@codemirror/search": "^6.6.0",
|
|
37
37
|
"@codemirror/state": "^6.5.4",
|
|
38
38
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
39
|
-
"@codemirror/view": "^6.39.
|
|
39
|
+
"@codemirror/view": "^6.39.16",
|
|
40
40
|
"@dagrejs/dagre": "^1.1.8",
|
|
41
41
|
"@date-fns/tz": "^1.4.1",
|
|
42
42
|
"@dnd-kit/core": "^6.3.1",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"@types/jsdom": "^21.1.7",
|
|
103
103
|
"@types/react-grid-layout": "^1.3.6",
|
|
104
104
|
"@uidotdev/usehooks": "^2.4.1",
|
|
105
|
-
"@uiw/codemirror-extensions-langs": "^4.25.
|
|
105
|
+
"@uiw/codemirror-extensions-langs": "^4.25.7",
|
|
106
106
|
"@uiw/react-codemirror": "4.25.4",
|
|
107
107
|
"@uwdata/flechette": "^1.1.2",
|
|
108
108
|
"@valtown/codemirror-codeium": "^1.1.1",
|
|
@@ -147,8 +147,8 @@
|
|
|
147
147
|
"plotly.js": "^3.3.1",
|
|
148
148
|
"pyodide": "0.27.7",
|
|
149
149
|
"react-arborist": "^3.4.3",
|
|
150
|
-
"react-aria": "3.
|
|
151
|
-
"react-aria-components": "1.
|
|
150
|
+
"react-aria": "3.47.0",
|
|
151
|
+
"react-aria-components": "1.16.0",
|
|
152
152
|
"react-codemirror-merge": "4.25.4",
|
|
153
153
|
"react-dnd": "^16.0.1",
|
|
154
154
|
"react-dnd-html5-backend": "^16.0.1",
|
|
@@ -59,6 +59,7 @@ export const MockRequestClient = {
|
|
|
59
59
|
getRunningNotebooks: vi.fn().mockResolvedValue({ files: [] }),
|
|
60
60
|
shutdownSession: vi.fn().mockResolvedValue({}),
|
|
61
61
|
exportAsHTML: vi.fn().mockResolvedValue({ html: "" }),
|
|
62
|
+
exportAsIPYNB: vi.fn().mockResolvedValue(""),
|
|
62
63
|
exportAsMarkdown: vi.fn().mockResolvedValue({ markdown: "" }),
|
|
63
64
|
exportAsPDF: vi.fn().mockResolvedValue(new Blob()),
|
|
64
65
|
autoExportAsHTML: vi.fn().mockResolvedValue({}),
|
|
@@ -60,6 +60,7 @@ import {
|
|
|
60
60
|
AccordionItem,
|
|
61
61
|
AccordionTrigger,
|
|
62
62
|
} from "../ui/accordion";
|
|
63
|
+
import { Alert, AlertDescription } from "../ui/alert";
|
|
63
64
|
import { Button } from "../ui/button";
|
|
64
65
|
import { Checkbox } from "../ui/checkbox";
|
|
65
66
|
import { DropdownMenuSeparator } from "../ui/dropdown-menu";
|
|
@@ -966,6 +967,15 @@ export const AiProvidersConfig: React.FC<AiConfigProps> = ({
|
|
|
966
967
|
provider="github"
|
|
967
968
|
isConfigured={hasValue("ai.github.api_key")}
|
|
968
969
|
>
|
|
970
|
+
<Alert variant="warning" className="py-1.5 px-3 text-xs">
|
|
971
|
+
<AlertDescription>
|
|
972
|
+
Free tier models have low token limits which can cause errors with
|
|
973
|
+
larger prompts.{" "}
|
|
974
|
+
<ExternalLink href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits">
|
|
975
|
+
Learn more
|
|
976
|
+
</ExternalLink>
|
|
977
|
+
</AlertDescription>
|
|
978
|
+
</Alert>
|
|
969
979
|
<ApiKey
|
|
970
980
|
form={form}
|
|
971
981
|
config={config}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { LoaderCircle, XIcon } from "lucide-react";
|
|
4
4
|
import type { CSSProperties } from "react";
|
|
5
|
+
import { TreeChevron } from "@/components/editor/file-tree/tree-actions";
|
|
5
6
|
import type { DataType } from "@/core/kernel/messages";
|
|
6
7
|
import { cn } from "@/utils/cn";
|
|
7
8
|
import { DATA_TYPE_ICON, getDataTypeColor } from "../datasets/icons";
|
|
8
9
|
|
|
9
10
|
export const RotatingChevron: React.FC<{ isExpanded: boolean }> = ({
|
|
10
11
|
isExpanded,
|
|
11
|
-
}) =>
|
|
12
|
-
<ChevronRightIcon
|
|
13
|
-
className={cn("h-3 w-3 transition-transform", isExpanded && "rotate-90")}
|
|
14
|
-
/>
|
|
15
|
-
);
|
|
12
|
+
}) => <TreeChevron isExpanded={isExpanded} className="h-3 w-3" />;
|
|
16
13
|
|
|
17
14
|
export const DatasourceLabel: React.FC<{
|
|
18
15
|
children: React.ReactNode;
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
import { CommandList } from "cmdk";
|
|
4
4
|
import { atom, useAtomValue, useSetAtom } from "jotai";
|
|
5
5
|
import { sortBy } from "lodash-es";
|
|
6
|
-
import { PlusIcon, PlusSquareIcon,
|
|
6
|
+
import { PlusIcon, PlusSquareIcon, XIcon } from "lucide-react";
|
|
7
7
|
import React from "react";
|
|
8
8
|
import { dbDisplayName } from "@/components/databases/display";
|
|
9
9
|
import { EngineVariable } from "@/components/databases/engine-variable";
|
|
10
10
|
import { DatabaseLogo } from "@/components/databases/icon";
|
|
11
|
+
import { RefreshIconButton } from "@/components/editor/file-tree/tree-actions";
|
|
11
12
|
import { CopyClipboardIcon } from "@/components/icons/copy-icon";
|
|
12
13
|
import { Button } from "@/components/ui/button";
|
|
13
14
|
import { Command, CommandInput, CommandItem } from "@/components/ui/command";
|
|
@@ -265,15 +266,10 @@ const Engine: React.FC<{
|
|
|
265
266
|
const engineName = internalEngine ? "In-Memory" : connection.name;
|
|
266
267
|
const { previewDataSourceConnection } = useRequestClient();
|
|
267
268
|
|
|
268
|
-
const [isSpinning, setIsSpinning] = React.useState(false);
|
|
269
|
-
|
|
270
269
|
const handleRefreshConnection = async () => {
|
|
271
|
-
setIsSpinning(true);
|
|
272
270
|
await previewDataSourceConnection({
|
|
273
271
|
engine: connection.name,
|
|
274
272
|
});
|
|
275
|
-
// Artificially spin the icon if the request is really fast
|
|
276
|
-
setTimeout(() => setIsSpinning(false), 500);
|
|
277
273
|
};
|
|
278
274
|
|
|
279
275
|
return (
|
|
@@ -288,21 +284,12 @@ const Engine: React.FC<{
|
|
|
288
284
|
(<EngineVariable variableName={engineName as VariableName} />)
|
|
289
285
|
</span>
|
|
290
286
|
{!internalEngine && (
|
|
291
|
-
<
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
>
|
|
298
|
-
<RefreshCwIcon
|
|
299
|
-
className={cn(
|
|
300
|
-
"h-4 w-4 text-muted-foreground hover:text-foreground",
|
|
301
|
-
isSpinning && "animate-[spin_0.5s]",
|
|
302
|
-
)}
|
|
303
|
-
/>
|
|
304
|
-
</Button>
|
|
305
|
-
</Tooltip>
|
|
287
|
+
<RefreshIconButton
|
|
288
|
+
onClick={handleRefreshConnection}
|
|
289
|
+
tooltip="Refresh connection"
|
|
290
|
+
className="ml-auto h-4 p-0"
|
|
291
|
+
iconClassName="h-3.5 w-3.5"
|
|
292
|
+
/>
|
|
306
293
|
)}
|
|
307
294
|
</DatasourceLabel>
|
|
308
295
|
{hasChildren ? (
|
|
@@ -27,6 +27,7 @@ export interface ActionButton {
|
|
|
27
27
|
handleHeadless?: (event?: Event) => void;
|
|
28
28
|
divider?: boolean;
|
|
29
29
|
dropdown?: ActionButton[];
|
|
30
|
+
additionalKeywords?: string[];
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
export function isParentAction(
|
|
@@ -51,6 +52,10 @@ export function flattenActions(
|
|
|
51
52
|
if (isParentAction(action)) {
|
|
52
53
|
return flattenActions(action.dropdown, `${prevLabel + action.label} > `);
|
|
53
54
|
}
|
|
54
|
-
return {
|
|
55
|
+
return {
|
|
56
|
+
...action,
|
|
57
|
+
label: prevLabel + action.label,
|
|
58
|
+
additionalKeywords: action.additionalKeywords,
|
|
59
|
+
};
|
|
55
60
|
});
|
|
56
61
|
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
LayoutTemplateIcon,
|
|
32
32
|
LinkIcon,
|
|
33
33
|
MessagesSquareIcon,
|
|
34
|
+
NotebookIcon,
|
|
34
35
|
PanelLeftIcon,
|
|
35
36
|
PowerSquareIcon,
|
|
36
37
|
PresentationIcon,
|
|
@@ -123,8 +124,13 @@ export function useNotebookActions() {
|
|
|
123
124
|
const setCommandPaletteOpen = useSetAtom(commandPaletteAtom);
|
|
124
125
|
const setSettingsDialogOpen = useSetAtom(settingDialogAtom);
|
|
125
126
|
const setKeyboardShortcutsOpen = useSetAtom(keyboardShortcutsAtom);
|
|
126
|
-
const {
|
|
127
|
-
|
|
127
|
+
const {
|
|
128
|
+
exportAsIPYNB,
|
|
129
|
+
exportAsMarkdown,
|
|
130
|
+
readCode,
|
|
131
|
+
saveCellConfig,
|
|
132
|
+
updateCellOutputs,
|
|
133
|
+
} = useRequestClient();
|
|
128
134
|
const takeScreenshots = useEnrichCellOutputs();
|
|
129
135
|
|
|
130
136
|
const hasDisabledCells = useAtomValue(hasDisabledCellsAtom);
|
|
@@ -199,6 +205,27 @@ export function useNotebookActions() {
|
|
|
199
205
|
setTimeout(() => window.dispatchEvent(afterprint), 0);
|
|
200
206
|
};
|
|
201
207
|
|
|
208
|
+
const handleDownloadAsIPYNB = async () => {
|
|
209
|
+
if (!filename) {
|
|
210
|
+
toastNotebookMustBeNamed();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const runDownload = async (progress: ProgressState) => {
|
|
215
|
+
await updateCellOutputsWithScreenshots({
|
|
216
|
+
takeScreenshots: () => takeScreenshots({ progress }),
|
|
217
|
+
updateCellOutputs,
|
|
218
|
+
});
|
|
219
|
+
const ipynb = await exportAsIPYNB({ download: false });
|
|
220
|
+
downloadBlob(
|
|
221
|
+
new Blob([ipynb], { type: "application/x-ipynb+json" }),
|
|
222
|
+
Filenames.toIPYNB(document.title),
|
|
223
|
+
);
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
await withLoadingToast("Downloading IPYNB...", runDownload);
|
|
227
|
+
};
|
|
228
|
+
|
|
202
229
|
const actions: ActionButton[] = [
|
|
203
230
|
{
|
|
204
231
|
icon: <DownloadIcon size={14} strokeWidth={1.5} />,
|
|
@@ -240,6 +267,11 @@ export function useNotebookActions() {
|
|
|
240
267
|
);
|
|
241
268
|
},
|
|
242
269
|
},
|
|
270
|
+
{
|
|
271
|
+
icon: <NotebookIcon size={14} strokeWidth={1.5} />,
|
|
272
|
+
label: "Download as ipynb",
|
|
273
|
+
handle: handleDownloadAsIPYNB,
|
|
274
|
+
},
|
|
243
275
|
{
|
|
244
276
|
icon: <CodeIcon size={14} strokeWidth={1.5} />,
|
|
245
277
|
label: "Download Python code",
|
|
@@ -347,17 +379,20 @@ export function useNotebookActions() {
|
|
|
347
379
|
label: "Helper panel",
|
|
348
380
|
redundant: true,
|
|
349
381
|
handle: NOOP_HANDLER,
|
|
350
|
-
dropdown: PANELS.flatMap(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
382
|
+
dropdown: PANELS.flatMap(
|
|
383
|
+
({ type: id, Icon, hidden, additionalKeywords }) => {
|
|
384
|
+
if (hidden) {
|
|
385
|
+
return [];
|
|
386
|
+
}
|
|
387
|
+
return {
|
|
388
|
+
label: startCase(id),
|
|
389
|
+
rightElement: renderCheckboxElement(selectedPanel === id),
|
|
390
|
+
icon: <Icon size={14} strokeWidth={1.5} />,
|
|
391
|
+
handle: () => toggleApplication(id),
|
|
392
|
+
additionalKeywords,
|
|
393
|
+
};
|
|
394
|
+
},
|
|
395
|
+
),
|
|
361
396
|
},
|
|
362
397
|
|
|
363
398
|
{
|
|
@@ -478,6 +513,7 @@ export function useNotebookActions() {
|
|
|
478
513
|
label: "Restart kernel",
|
|
479
514
|
variant: "danger",
|
|
480
515
|
handle: restartKernel,
|
|
516
|
+
additionalKeywords: ["reset", "reload", "restart"],
|
|
481
517
|
},
|
|
482
518
|
{
|
|
483
519
|
icon: <FastForwardIcon size={14} strokeWidth={1.5} />,
|
|
@@ -535,6 +571,7 @@ export function useNotebookActions() {
|
|
|
535
571
|
label: "User settings",
|
|
536
572
|
handle: () => setSettingsDialogOpen((open) => !open),
|
|
537
573
|
redundant: true,
|
|
574
|
+
additionalKeywords: ["preferences", "options", "configuration"],
|
|
538
575
|
},
|
|
539
576
|
{
|
|
540
577
|
icon: <ExternalLinkIcon size={14} strokeWidth={1.5} />,
|
|
@@ -59,6 +59,8 @@ export interface PanelDescriptor {
|
|
|
59
59
|
defaultSection: PanelSection;
|
|
60
60
|
/** Capability required for this panel to be visible. If the capability is false, the panel is hidden. */
|
|
61
61
|
requiredCapability?: keyof Capabilities;
|
|
62
|
+
/** Additional search keywords for the command palette */
|
|
63
|
+
additionalKeywords?: string[];
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
/**
|
|
@@ -73,6 +75,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
73
75
|
label: "Files",
|
|
74
76
|
tooltip: "View files",
|
|
75
77
|
defaultSection: "sidebar",
|
|
78
|
+
additionalKeywords: ["explorer", "browser", "directory"],
|
|
76
79
|
},
|
|
77
80
|
{
|
|
78
81
|
type: "variables",
|
|
@@ -80,6 +83,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
80
83
|
label: "Variables",
|
|
81
84
|
tooltip: "Explore variables and data sources",
|
|
82
85
|
defaultSection: "sidebar",
|
|
86
|
+
additionalKeywords: ["state", "scope", "inspector"],
|
|
83
87
|
},
|
|
84
88
|
{
|
|
85
89
|
type: "packages",
|
|
@@ -87,6 +91,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
87
91
|
label: "Packages",
|
|
88
92
|
tooltip: "Manage packages",
|
|
89
93
|
defaultSection: "sidebar",
|
|
94
|
+
additionalKeywords: ["dependencies", "pip", "install"],
|
|
90
95
|
},
|
|
91
96
|
{
|
|
92
97
|
type: "ai",
|
|
@@ -94,6 +99,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
94
99
|
label: "AI",
|
|
95
100
|
tooltip: "Chat & Agents",
|
|
96
101
|
defaultSection: "sidebar",
|
|
102
|
+
additionalKeywords: ["chat", "copilot", "assistant"],
|
|
97
103
|
},
|
|
98
104
|
{
|
|
99
105
|
type: "outline",
|
|
@@ -101,6 +107,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
101
107
|
label: "Outline",
|
|
102
108
|
tooltip: "View outline",
|
|
103
109
|
defaultSection: "sidebar",
|
|
110
|
+
additionalKeywords: ["toc", "structure", "headings"],
|
|
104
111
|
},
|
|
105
112
|
{
|
|
106
113
|
type: "documentation",
|
|
@@ -108,6 +115,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
108
115
|
label: "Docs",
|
|
109
116
|
tooltip: "View live docs",
|
|
110
117
|
defaultSection: "sidebar",
|
|
118
|
+
additionalKeywords: ["reference", "api"],
|
|
111
119
|
},
|
|
112
120
|
{
|
|
113
121
|
type: "dependencies",
|
|
@@ -115,6 +123,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
115
123
|
label: "Dependencies",
|
|
116
124
|
tooltip: "Explore dependencies",
|
|
117
125
|
defaultSection: "sidebar",
|
|
126
|
+
additionalKeywords: ["graph", "imports"],
|
|
118
127
|
},
|
|
119
128
|
// Developer panel defaults
|
|
120
129
|
{
|
|
@@ -123,6 +132,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
123
132
|
label: "Errors",
|
|
124
133
|
tooltip: "View errors",
|
|
125
134
|
defaultSection: "developer-panel",
|
|
135
|
+
additionalKeywords: ["exceptions", "problems", "diagnostics"],
|
|
126
136
|
},
|
|
127
137
|
{
|
|
128
138
|
type: "scratchpad",
|
|
@@ -130,6 +140,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
130
140
|
label: "Scratchpad",
|
|
131
141
|
tooltip: "Scratchpad",
|
|
132
142
|
defaultSection: "developer-panel",
|
|
143
|
+
additionalKeywords: ["scratch", "draft", "playground"],
|
|
133
144
|
},
|
|
134
145
|
{
|
|
135
146
|
type: "tracing",
|
|
@@ -137,6 +148,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
137
148
|
label: "Tracing",
|
|
138
149
|
tooltip: "View tracing",
|
|
139
150
|
defaultSection: "developer-panel",
|
|
151
|
+
additionalKeywords: ["profiling", "performance"],
|
|
140
152
|
},
|
|
141
153
|
{
|
|
142
154
|
type: "secrets",
|
|
@@ -145,6 +157,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
145
157
|
tooltip: "Manage secrets",
|
|
146
158
|
defaultSection: "developer-panel",
|
|
147
159
|
hidden: isWasm(),
|
|
160
|
+
additionalKeywords: ["env", "environment", "keys", "credentials"],
|
|
148
161
|
},
|
|
149
162
|
{
|
|
150
163
|
type: "logs",
|
|
@@ -152,6 +165,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
152
165
|
label: "Logs",
|
|
153
166
|
tooltip: "View logs",
|
|
154
167
|
defaultSection: "developer-panel",
|
|
168
|
+
additionalKeywords: ["console", "stdout"],
|
|
155
169
|
},
|
|
156
170
|
{
|
|
157
171
|
type: "terminal",
|
|
@@ -161,6 +175,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
161
175
|
hidden: isWasm(),
|
|
162
176
|
defaultSection: "developer-panel",
|
|
163
177
|
requiredCapability: "terminal",
|
|
178
|
+
additionalKeywords: ["shell", "console", "bash", "command"],
|
|
164
179
|
},
|
|
165
180
|
{
|
|
166
181
|
type: "snippets",
|
|
@@ -168,6 +183,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
168
183
|
label: "Snippets",
|
|
169
184
|
tooltip: "Snippets",
|
|
170
185
|
defaultSection: "developer-panel",
|
|
186
|
+
additionalKeywords: ["templates", "examples"],
|
|
171
187
|
},
|
|
172
188
|
{
|
|
173
189
|
type: "cache",
|
|
@@ -176,6 +192,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
176
192
|
tooltip: "View cache",
|
|
177
193
|
defaultSection: "developer-panel",
|
|
178
194
|
hidden: !getFeatureFlag("cache_panel"),
|
|
195
|
+
additionalKeywords: ["memory", "memoize"],
|
|
179
196
|
},
|
|
180
197
|
];
|
|
181
198
|
|
|
@@ -78,6 +78,7 @@ const CommandPalette = () => {
|
|
|
78
78
|
return (
|
|
79
79
|
<CommandItem
|
|
80
80
|
disabled={props.disabled}
|
|
81
|
+
keywords={hotkey.additionalKeywords}
|
|
81
82
|
onSelect={() => {
|
|
82
83
|
addRecentCommand(shortcut);
|
|
83
84
|
// Close first and then run the action, so the dialog doesn't steal focus
|
|
@@ -105,15 +106,18 @@ const CommandPalette = () => {
|
|
|
105
106
|
handle,
|
|
106
107
|
props = {},
|
|
107
108
|
hotkey,
|
|
109
|
+
additionalKeywords,
|
|
108
110
|
}: {
|
|
109
111
|
label: string;
|
|
110
112
|
handle: () => void;
|
|
111
113
|
props?: { disabled?: boolean; tooltip?: React.ReactNode };
|
|
112
114
|
hotkey?: HotkeyAction;
|
|
115
|
+
additionalKeywords?: string[];
|
|
113
116
|
}) => {
|
|
114
117
|
return (
|
|
115
118
|
<CommandItem
|
|
116
119
|
disabled={props.disabled}
|
|
120
|
+
keywords={additionalKeywords}
|
|
117
121
|
onSelect={() => {
|
|
118
122
|
addRecentCommand(label);
|
|
119
123
|
setOpen(false);
|
|
@@ -163,6 +167,7 @@ const CommandPalette = () => {
|
|
|
163
167
|
disabled: action.disabled,
|
|
164
168
|
tooltip: action.tooltip,
|
|
165
169
|
},
|
|
170
|
+
additionalKeywords: action.additionalKeywords,
|
|
166
171
|
});
|
|
167
172
|
}
|
|
168
173
|
return null;
|
|
@@ -190,6 +195,7 @@ const CommandPalette = () => {
|
|
|
190
195
|
label: action.label,
|
|
191
196
|
handle: action.handleHeadless || action.handle,
|
|
192
197
|
props: { disabled: action.disabled, tooltip: action.tooltip },
|
|
198
|
+
additionalKeywords: action.additionalKeywords,
|
|
193
199
|
});
|
|
194
200
|
})}
|
|
195
201
|
{cellActions.map((action) => {
|
|
@@ -200,6 +206,7 @@ const CommandPalette = () => {
|
|
|
200
206
|
label: `Cell > ${action.label}`,
|
|
201
207
|
handle: action.handleHeadless || action.handle,
|
|
202
208
|
props: { disabled: action.disabled, tooltip: action.tooltip },
|
|
209
|
+
additionalKeywords: action.additionalKeywords,
|
|
203
210
|
});
|
|
204
211
|
})}
|
|
205
212
|
</CommandGroup>
|
|
@@ -174,7 +174,9 @@ export const KeyboardShortcuts: React.FC = () => {
|
|
|
174
174
|
return;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
// Single character keys are always lowercase (e.g. "a", "b", "c")
|
|
178
|
+
// But we should preserve the original case for other keys (e.g. "Enter", "Escape")
|
|
179
|
+
let key = e.key.length === 1 ? e.key.toLowerCase() : e.key;
|
|
178
180
|
// Handle edge cases
|
|
179
181
|
if (e.key === " ") {
|
|
180
182
|
key = "Space";
|