@marimo-team/frontend 0.19.3-dev30 → 0.19.3-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 (81) hide show
  1. package/dist/assets/{CellStatus-CGsC_xni.js → CellStatus-C99xWY-n.js} +1 -1
  2. package/dist/assets/{JsonOutput-CCSLhScI.js → JsonOutput-vgVa8Uqm.js} +2 -2
  3. package/dist/assets/{MarimoErrorOutput-CDtUiLzW.js → MarimoErrorOutput-BheMLw1Y.js} +1 -1
  4. package/dist/assets/{RenderHTML-B1PnGgGU.js → RenderHTML-BE1SeEPf.js} +1 -1
  5. package/dist/assets/{add-cell-with-ai-DG5ez5tQ.js → add-cell-with-ai-BQ3faBMp.js} +1 -1
  6. package/dist/assets/{add-database-form-BDC4sw5d.js → add-database-form-Cd6r_tKJ.js} +1 -1
  7. package/dist/assets/{agent-panel-DvdoiTMc.js → agent-panel-B6jmJILp.js} +1 -1
  8. package/dist/assets/{ai-model-dropdown-DSzuccWn.js → ai-model-dropdown-Dv-MPaCU.js} +1 -1
  9. package/dist/assets/{app-config-button-DrOOXwCm.js → app-config-button-Dc-Pr3EG.js} +1 -1
  10. package/dist/assets/{cell-editor-Bowbis7w.js → cell-editor-6RFkGM2j.js} +3 -3
  11. package/dist/assets/cell-link--tfL3CA1.js +1 -0
  12. package/dist/assets/{cells-4S-e0VcC.js → cells-Ba_KE9BT.js} +1 -1
  13. package/dist/assets/{chat-components-Bs4IxADW.js → chat-components-gFovWg-D.js} +1 -1
  14. package/dist/assets/{chat-display-CPq1j1yR.js → chat-display-DnPj1KhL.js} +1 -1
  15. package/dist/assets/{chat-panel-dvZilXEF.js → chat-panel-47KIpqX3.js} +1 -1
  16. package/dist/assets/{client-DdSTQs8P.js → client-ptbakt_D.js} +1 -1
  17. package/dist/assets/{column-preview-DtHgotrc.js → column-preview-DhROBSPD.js} +1 -1
  18. package/dist/assets/{command-NXYtUgbp.js → command-D-UJxuGK.js} +1 -1
  19. package/dist/assets/{command-palette-85dl4RPg.js → command-palette-6sH9E7Dw.js} +1 -1
  20. package/dist/assets/{common-DTmoX7TD.js → common-CTqesfI3.js} +1 -1
  21. package/dist/assets/config-DFDEcYvy.js +1 -0
  22. package/dist/assets/{datasource-CPVUAqzI.js → datasource-D4Z8tdLQ.js} +1 -1
  23. package/dist/assets/{dependency-graph-panel-VYsYCQNm.js → dependency-graph-panel-xSFZomKN.js} +1 -1
  24. package/dist/assets/{documentation-panel-CwAtyJSz.js → documentation-panel-Dm3ob6Ir.js} +1 -1
  25. package/dist/assets/{download-BcXr1SQk.js → download-BjwKjWNy.js} +1 -1
  26. package/dist/assets/{edit-page-CCa1yDjZ.js → edit-page-CZh8JbX5.js} +6 -6
  27. package/dist/assets/{error-panel-BbbZ1gDy.js → error-panel-DMBUp0y7.js} +1 -1
  28. package/dist/assets/{es-B3NV9-gC.js → es-CHi7dcFm.js} +1 -1
  29. package/dist/assets/{file-explorer-panel-JB9Lb6XZ.js → file-explorer-panel-DjUhUpSF.js} +1 -1
  30. package/dist/assets/{floating-outline-BDIr9Bbt.js → floating-outline-ftqqU4Np.js} +1 -1
  31. package/dist/assets/{focus-DAgLzXHM.js → focus-DZZOzpQD.js} +1 -1
  32. package/dist/assets/{form-DVkjQxq_.js → form-CnZqs8Bn.js} +1 -1
  33. package/dist/assets/{globals-BJD8iIVw.js → globals-Dh1hxKNk.js} +1 -1
  34. package/dist/assets/{home-page-5ew0gT8b.js → home-page-BMu2cQgR.js} +1 -1
  35. package/dist/assets/{index-D2zgBMLw.js → index-B41y3eqf.js} +22 -22
  36. package/dist/assets/{kiosk-mode-Cev1VOAm.js → kiosk-mode-lfj9N4vd.js} +1 -1
  37. package/dist/assets/{layout-CurIookF.js → layout-0e9X02ON.js} +1 -1
  38. package/dist/assets/links-DbDrjRnm.js +1 -0
  39. package/dist/assets/{logs-panel-CLsE2AN1.js → logs-panel-pc8_rMGL.js} +1 -1
  40. package/dist/assets/{markdown-renderer-Cc0PiY-K.js → markdown-renderer-DOsqiCxS.js} +1 -1
  41. package/dist/assets/{mode-B3tNMXH2.js → mode-BCyUhVQM.js} +1 -1
  42. package/dist/assets/{name-cell-input-lkGsSC32.js → name-cell-input-DwI5DL4H.js} +1 -1
  43. package/dist/assets/{outline-panel-CR_3Njth.js → outline-panel-BkVymtAn.js} +1 -1
  44. package/dist/assets/{packages-panel-D2JfrhoE.js → packages-panel-C2AcLZfz.js} +1 -1
  45. package/dist/assets/{panels-CpuHPy5a.js → panels-Bw1r9qwY.js} +1 -1
  46. package/dist/assets/{process-output-rKnBuRRW.js → process-output-C46Mdai2.js} +1 -1
  47. package/dist/assets/{readonly-python-code-D7ixCdRP.js → readonly-python-code-C5OixNOu.js} +1 -1
  48. package/dist/assets/{run-page-UbtG3woR.js → run-page-gAREGgIk.js} +1 -1
  49. package/dist/assets/{scratchpad-panel-Bvg9Sbf8.js → scratchpad-panel-CCfSlzxc.js} +1 -1
  50. package/dist/assets/{session-panel-CE7qRaFP.js → session-panel-BuxKOamF.js} +1 -1
  51. package/dist/assets/{snippets-panel-CiNTJKw4.js → snippets-panel-B6_Edpel.js} +1 -1
  52. package/dist/assets/{state-CZqgb3sC.js → state-CSQYiEJY.js} +1 -1
  53. package/dist/assets/{state-lX2Tur1r.js → state-CW2XRi_v.js} +1 -1
  54. package/dist/assets/{switch-utDdERLs.js → switch-eOpIZoDX.js} +1 -1
  55. package/dist/assets/{terminal-BWM0fOMh.js → terminal-BbAhzgnR.js} +1 -1
  56. package/dist/assets/{textarea-CuGxnSJT.js → textarea-niGA0rfg.js} +1 -1
  57. package/dist/assets/{tracing-CfhQiEJB.js → tracing-DkpVk4o4.js} +1 -1
  58. package/dist/assets/{tracing-panel-BES8ykC_.js → tracing-panel-BIncP1rT.js} +2 -2
  59. package/dist/assets/{types-BqIUl7zM.js → types-VIX1OCSW.js} +1 -1
  60. package/dist/assets/{useAddCell-B5Yugh3r.js → useAddCell-B_xjsTBs.js} +1 -1
  61. package/dist/assets/useBoolean-CyOFPk5r.js +1 -0
  62. package/dist/assets/{useCellActionButton-BNKqQ1-h.js → useCellActionButton-Ds3zG2vC.js} +1 -1
  63. package/dist/assets/{useDeleteCell-ChzEFH8j.js → useDeleteCell-BHcO82VK.js} +1 -1
  64. package/dist/assets/{useDependencyPanelTab-MCxvkAot.js → useDependencyPanelTab-D-cjUX7M.js} +1 -1
  65. package/dist/assets/{useNotebookActions-BRPD06EX.js → useNotebookActions-BR0qaiDG.js} +1 -1
  66. package/dist/assets/{useRunCells-Dgv3VAFX.js → useRunCells-DNyvw4YU.js} +1 -1
  67. package/dist/assets/{useSplitCell-_rfoF197.js → useSplitCell-PfU2seYs.js} +1 -1
  68. package/dist/assets/{utilities.esm-C0AZu44u.js → utilities.esm-B52GCDdx.js} +2 -2
  69. package/dist/assets/{vega-component-BoLFf7jF.js → vega-component-dUiiVmIx.js} +1 -1
  70. package/dist/index.html +33 -33
  71. package/package.json +1 -1
  72. package/src/__tests__/mount.test.ts +128 -0
  73. package/src/components/data-table/column-header.tsx +1 -1
  74. package/src/components/editor/alerts/connecting-alert.tsx +33 -6
  75. package/src/core/network/__tests__/requests-network.test.ts +0 -18
  76. package/src/core/network/requests-network.ts +2 -7
  77. package/src/mount.tsx +6 -0
  78. package/dist/assets/cell-link-DXYH8FLx.js +0 -1
  79. package/dist/assets/config-Ba3eeYri.js +0 -1
  80. package/dist/assets/links-Bpd4gqTj.js +0 -1
  81. package/dist/assets/useBoolean-DI-eW-xX.js +0 -1
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useAtomValue } from "jotai";
4
4
  import { LoadingEllipsis } from "@/components/icons/loading-ellipsis";
5
+ import { Spinner } from "@/components/icons/spinner";
5
6
  import { Button } from "@/components/ui/button";
6
7
  import { DelayMount } from "@/components/utils/delay-mount";
7
8
  import {
@@ -10,24 +11,50 @@ import {
10
11
  isNotStartedAtom,
11
12
  } from "@/core/network/connection";
12
13
  import { useConnectToRuntime } from "@/core/runtime/config";
14
+ import { Banner } from "@/plugins/impl/common/error-banner";
13
15
  import { Tooltip } from "../../ui/tooltip";
14
16
  import { FloatingAlert } from "./floating-alert";
15
17
 
16
18
  const SHORT_DELAY_MS = 1000; // 1 second
19
+ const LONG_DELAY_MS = 5000; // 5 seconds
17
20
 
18
21
  export const ConnectingAlert: React.FC = () => {
19
22
  const isConnecting = useAtomValue(isConnectingAtom);
20
23
  const isClosed = useAtomValue(isClosedAtom);
21
24
 
22
25
  if (isConnecting) {
26
+ const subtleNotification = (
27
+ <Tooltip content="Connecting to a marimo runtime">
28
+ <div className="flex items-center">
29
+ <LoadingEllipsis size={5} className="text-yellow-500" />
30
+ </div>
31
+ </Tooltip>
32
+ );
33
+
34
+ const longNotification = (
35
+ <Banner
36
+ kind="info"
37
+ className="flex flex-col rounded py-2 px-4 animate-in slide-in-from-top w-fit"
38
+ >
39
+ <div className="flex flex-col gap-4 justify-between items-start text-muted-foreground text-base">
40
+ <div className="flex items-center gap-2">
41
+ <Spinner className="h-4 w-4" />
42
+ <p>Connecting to a marimo runtime ...</p>
43
+ </div>
44
+ </div>
45
+ </Banner>
46
+ );
47
+
48
+ // This waits for 1 second to show the subtle notification, then shows the long notification after 5 seconds.
23
49
  return (
24
50
  <DelayMount milliseconds={SHORT_DELAY_MS}>
25
- <div className="absolute top-4 m-0 flex items-center min-h-[28px] left-1/2 transform -translate-x-1/2 z-200 ">
26
- <Tooltip content="Connecting to a marimo runtime">
27
- <div className="flex items-center">
28
- <LoadingEllipsis size={5} className="text-yellow-500" />
29
- </div>
30
- </Tooltip>
51
+ <div className="m-0 flex items-center min-h-[28px] fixed top-5 left-1/2 transform -translate-x-1/2 z-200">
52
+ <DelayMount
53
+ milliseconds={LONG_DELAY_MS}
54
+ fallback={subtleNotification}
55
+ >
56
+ {longNotification}
57
+ </DelayMount>
31
58
  </div>
32
59
  </DelayMount>
33
60
  );
@@ -34,12 +34,6 @@ vi.mock("../connection", () => ({
34
34
  waitForConnectionOpen: vi.fn().mockResolvedValue(undefined),
35
35
  }));
36
36
 
37
- vi.mock("../../state/jotai", () => ({
38
- store: {
39
- get: vi.fn(() => true),
40
- },
41
- }));
42
-
43
37
  describe("createNetworkRequests", () => {
44
38
  let mockClient: any;
45
39
  let capturedCalls: Map<string, { hasParams: boolean; endpoint: string }>;
@@ -80,18 +74,6 @@ describe("createNetworkRequests", () => {
80
74
  });
81
75
 
82
76
  describe("special behavior", () => {
83
- it("sendRun should drop requests if not connected", async () => {
84
- const { store } = await import("../../state/jotai");
85
-
86
- vi.mocked(store.get).mockReturnValue(false);
87
-
88
- const requests = createNetworkRequests();
89
- const result = await requests.sendRun({} as any);
90
-
91
- expect(result).toBe(null);
92
- expect(mockClient.POST).not.toHaveBeenCalled();
93
- });
94
-
95
77
  it("exportAsHTML should set assetUrl in dev/test mode", async () => {
96
78
  const originalEnv = process.env.NODE_ENV;
97
79
  process.env.NODE_ENV = "development";
@@ -2,9 +2,8 @@
2
2
 
3
3
  import { once } from "lodash-es";
4
4
  import { getRuntimeManager } from "../runtime/config";
5
- import { store } from "../state/jotai";
6
5
  import { API, createClientWithRuntimeManager } from "./api";
7
- import { isConnectedAtom, waitForConnectionOpen } from "./connection";
6
+ import { waitForConnectionOpen } from "./connection";
8
7
  import type { EditRequests, RunRequests } from "./types";
9
8
 
10
9
  const { handleResponse, handleResponseReturnNull } = API;
@@ -105,11 +104,7 @@ export function createNetworkRequests(): EditRequests & RunRequests {
105
104
  .then(handleResponseReturnNull);
106
105
  },
107
106
  sendRun: async (request) => {
108
- // Rather than waiting, we just drop all sendRun requests if the connection is not open.
109
- // Otherwise we can get into a weird state of sending requests for cells that no longer exist.
110
- if (!store.get(isConnectedAtom)) {
111
- return null;
112
- }
107
+ await waitForConnectionOpen();
113
108
  return getClient()
114
109
  .POST("/api/kernel/run", {
115
110
  body: request,
package/src/mount.tsx CHANGED
@@ -29,6 +29,7 @@ import {
29
29
  import { MarimoApp, preloadPage } from "./core/MarimoApp";
30
30
  import { type AppMode, initialModeAtom, viewStateAtom } from "./core/mode";
31
31
  import { cleanupAuthQueryParams } from "./core/network/auth";
32
+ import { connectionAtom } from "./core/network/connection";
32
33
  import { requestClientAtom } from "./core/network/requests";
33
34
  import { resolveRequestClient } from "./core/network/resolve";
34
35
  import {
@@ -42,6 +43,7 @@ import { isStaticNotebook } from "./core/static/static-state";
42
43
  import { maybeRegisterVSCodeBindings } from "./core/vscode/vscode-bindings";
43
44
  import type { FileStore } from "./core/wasm/store";
44
45
  import { notebookFileStore } from "./core/wasm/store";
46
+ import { WebSocketState } from "./core/websocket/types";
45
47
  import { vegaLoader } from "./plugins/impl/vega/loader";
46
48
  import { initializePlugins } from "./plugins/plugins";
47
49
  import { ThemeProvider } from "./theme/ThemeProvider";
@@ -304,6 +306,10 @@ function initStore(options: unknown) {
304
306
  ...firstRuntimeConfig,
305
307
  serverToken: parsedOptions.data.serverToken,
306
308
  });
309
+ // If the remote runtime is not lazy, start it in CONNECTING
310
+ if (!firstRuntimeConfig.lazy && !isStaticNotebook()) {
311
+ store.set(connectionAtom, { state: WebSocketState.CONNECTING });
312
+ }
307
313
  } else {
308
314
  store.set(runtimeConfigAtom, {
309
315
  ...DEFAULT_RUNTIME_CONFIG,
@@ -1 +0,0 @@
1
- import{s as P}from"./chunk-LvLJmgfZ.js";import{d as j,l as O,n as w,u as y}from"./useEvent-DlWF5OMa.js";import{A,C as L,Gt as E,O as S,Pt as T,Ur as _,ei as $,pt as D}from"./cells-4S-e0VcC.js";import{t as b}from"./compiler-runtime-DeeZ7FnK.js";import{d as F}from"./hotkeys-uKX61F1_.js";import{u as U}from"./utils-CJJIceVn.js";import{r as C}from"./constants-Bkp4R3bQ.js";import{j as q,p as B,w as G}from"./config-Ba3eeYri.js";import{t as H}from"./jsx-runtime-DN_bIXfG.js";import{t as M}from"./cn-C1rgT0yh.js";import{r as R}from"./requests-C0HaHO6a.js";import{n as V}from"./ImperativeModal-DVhvP4lH.js";var z=b();function I(){return y(_)}function J(){let r=(0,z.c)(5),[t]=O(G),e=j(_),{openAlert:a}=V(),{sendRename:o}=R(),s;return r[0]!==t.state||r[1]!==a||r[2]!==o||r[3]!==e?(s=async l=>{let n=U();return t.state===q.OPEN?(B(i=>{l===null?i.delete(C.filePath):i.set(C.filePath,l)}),o({filename:l}).then(()=>(e(l),document.title=n.app_title||T.basename(l)||"Untitled Notebook",l)).catch(i=>(a(i.message),null))):(a("Failed to save notebook: not connected to a kernel."),null)},r[0]=t.state,r[1]=a,r[2]=o,r[3]=e,r[4]=s):s=r[4],w(s)}var p=b(),v=P(H(),1);const k=r=>{let t=(0,p.c)(12),{className:e,cellId:a,variant:o,onClick:s,formatCellName:l,skipScroll:n}=r,i=A()[a]??"",x=S().inOrderIds.indexOf(a),{showCellIfHidden:d}=L(),g=l??W,c;t[0]===e?c=t[1]:(c=M("inline-block cursor-pointer text-link hover:underline",e),t[0]=e,t[1]=c);let m;t[2]!==a||t[3]!==s||t[4]!==d||t[5]!==n||t[6]!==o?(m=h=>{if(a==="__scratch__")return!1;d({cellId:a}),h.stopPropagation(),h.preventDefault(),requestAnimationFrame(()=>{N(a,o,n)&&(s==null||s())})},t[2]=a,t[3]=s,t[4]=d,t[5]=n,t[6]=o,t[7]=m):m=t[7];let f=g(D(i,x)),u;return t[8]!==c||t[9]!==m||t[10]!==f?(u=(0,v.jsx)("div",{className:c,role:"link",tabIndex:-1,onClick:m,children:f}),t[8]=c,t[9]=m,t[10]=f,t[11]=u):u=t[11],u},K=r=>{let t=(0,p.c)(2),e;return t[0]===r?e=t[1]:(e=(0,v.jsx)(k,{...r,variant:"destructive"}),t[0]=r,t[1]=e),e},Q=r=>{let t=(0,p.c)(10),{cellId:e,lineNumber:a}=r,o=I(),s;t[0]!==e||t[1]!==a?(s=()=>E(e,a),t[0]=e,t[1]=a,t[2]=s):s=t[2];let l;t[3]!==e||t[4]!==o?(l=i=>e==="__scratch__"?"scratch":`marimo://${o||"untitled"}#cell=${i}`,t[3]=e,t[4]=o,t[5]=l):l=t[5];let n;return t[6]!==e||t[7]!==s||t[8]!==l?(n=(0,v.jsx)(k,{cellId:e,onClick:s,skipScroll:!0,variant:"destructive",className:"traceback-cell-link",formatCellName:l}),t[6]=e,t[7]=s,t[8]=l,t[9]=n):n=t[9],n};function N(r,t,e){let a=$.create(r),o=document.getElementById(a);return o===null?(F.error(`Cell ${a} not found on page.`),!1):(e||o.scrollIntoView({behavior:"smooth",block:"center"}),t==="destructive"&&(o.classList.add("error-outline"),setTimeout(()=>{o.classList.remove("error-outline")},2e3)),t==="focus"&&(o.classList.add("focus-outline"),setTimeout(()=>{o.classList.remove("focus-outline")},2e3)),!0)}function W(r){return r}export{I as a,N as i,K as n,J as o,Q as r,k as t};
@@ -1 +0,0 @@
1
- var ct=Object.defineProperty;var ht=(t,n,o)=>n in t?ct(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o;var V=(t,n,o)=>ht(t,typeof n!="symbol"?n+"":n,o);import{t as F}from"./chunk-LvLJmgfZ.js";import{i as lt,l as ft,n as dt,o as pt,p as M,u as gt}from"./useEvent-DlWF5OMa.js";import{t as yt}from"./compiler-runtime-DeeZ7FnK.js";import{d as $}from"./hotkeys-uKX61F1_.js";import{t as Lt}from"./utils-CJJIceVn.js";import{r as j}from"./constants-Bkp4R3bQ.js";import{t as wt}from"./Deferred-DzyBMRsy.js";function Y(){return typeof document<"u"&&document.querySelector("marimo-wasm")!==null}const S={NOT_STARTED:"NOT_STARTED",CONNECTING:"CONNECTING",OPEN:"OPEN",CLOSING:"CLOSING",CLOSED:"CLOSED"},mt={KERNEL_DISCONNECTED:"KERNEL_DISCONNECTED",ALREADY_RUNNING:"ALREADY_RUNNING",MALFORMED_QUERY:"MALFORMED_QUERY",KERNEL_STARTUP_ERROR:"KERNEL_STARTUP_ERROR"},W=M({state:S.NOT_STARTED});function bt(){return pt(W,t=>t.state===S.OPEN)}const St=M(t=>t(W).state===S.CONNECTING),Et=M(t=>t(W).state===S.OPEN),Rt=M(t=>{let n=t(W);return n.state===S.OPEN||n.state===S.NOT_STARTED}),Ot=M(t=>t(W).state===S.CLOSED),Ut=M(t=>t(W).state===S.NOT_STARTED);function kt(t){return t===S.CLOSED}function It(t){return t===S.CONNECTING}function vt(t){return t===S.OPEN}function Nt(t){return t===S.CLOSING}function q(t){return t===S.NOT_STARTED}function _t(t){return t===S.CLOSED||t===S.CLOSING||t===S.CONNECTING}function xt(t){switch(t){case S.CLOSED:return"App disconnected";case S.CONNECTING:return"Connecting to a runtime ...";case S.CLOSING:return"App disconnecting...";case S.OPEN:return"";case S.NOT_STARTED:return"Click to connect to a runtime";default:return""}}var Ct=F((t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.toBig=t.shrSL=t.shrSH=t.rotrSL=t.rotrSH=t.rotrBL=t.rotrBH=t.rotr32L=t.rotr32H=t.rotlSL=t.rotlSH=t.rotlBL=t.rotlBH=t.add5L=t.add5H=t.add4L=t.add4H=t.add3L=t.add3H=void 0,t.add=L,t.fromBig=f,t.split=h;var n=BigInt(2**32-1),o=BigInt(32);function f(s,i=!1){return i?{h:Number(s&n),l:Number(s>>o&n)}:{h:Number(s>>o&n)|0,l:Number(s&n)|0}}function h(s,i=!1){let e=s.length,d=new Uint32Array(e),O=new Uint32Array(e);for(let I=0;I<e;I++){let{h:A,l:G}=f(s[I],i);[d[I],O[I]]=[A,G]}return[d,O]}var R=(s,i)=>BigInt(s>>>0)<<o|BigInt(i>>>0);t.toBig=R;var E=(s,i,e)=>s>>>e;t.shrSH=E;var C=(s,i,e)=>s<<32-e|i>>>e;t.shrSL=C;var H=(s,i,e)=>s>>>e|i<<32-e;t.rotrSH=H;var P=(s,i,e)=>s<<32-e|i>>>e;t.rotrSL=P;var v=(s,i,e)=>s<<64-e|i>>>e-32;t.rotrBH=v;var N=(s,i,e)=>s>>>e-32|i<<64-e;t.rotrBL=N;var T=(s,i)=>i;t.rotr32H=T;var D=(s,i)=>s;t.rotr32L=D;var _=(s,i,e)=>s<<e|i>>>32-e;t.rotlSH=_;var k=(s,i,e)=>i<<e|s>>>32-e;t.rotlSL=k;var p=(s,i,e)=>i<<e-32|s>>>64-e;t.rotlBH=p;var w=(s,i,e)=>s<<e-32|i>>>64-e;t.rotlBL=w;function L(s,i,e,d){let O=(i>>>0)+(d>>>0);return{h:s+e+(O/2**32|0)|0,l:O|0}}var y=(s,i,e)=>(s>>>0)+(i>>>0)+(e>>>0);t.add3L=y;var B=(s,i,e,d)=>i+e+d+(s/2**32|0)|0;t.add3H=B;var l=(s,i,e,d)=>(s>>>0)+(i>>>0)+(e>>>0)+(d>>>0);t.add4L=l;var a=(s,i,e,d,O)=>i+e+d+O+(s/2**32|0)|0;t.add4H=a;var c=(s,i,e,d,O)=>(s>>>0)+(i>>>0)+(e>>>0)+(d>>>0)+(O>>>0);t.add5L=c;var g=(s,i,e,d,O,I)=>i+e+d+O+I+(s/2**32|0)|0;t.add5H=g,t.default={fromBig:f,split:h,toBig:R,shrSH:E,shrSL:C,rotrSH:H,rotrSL:P,rotrBH:v,rotrBL:N,rotr32H:T,rotr32L:D,rotlSH:_,rotlSL:k,rotlBH:p,rotlBL:w,add:L,add3L:y,add3H:B,add4L:l,add4H:a,add5H:g,add5L:c}})),Ht=F((t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.crypto=void 0,t.crypto=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0})),Tt=F((t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapXOFConstructorWithOpts=t.wrapConstructorWithOpts=t.wrapConstructor=t.Hash=t.nextTick=t.swap32IfBE=t.byteSwapIfBE=t.swap8IfBE=t.isLE=void 0,t.isBytes=o,t.anumber=f,t.abytes=h,t.ahash=R,t.aexists=E,t.aoutput=C,t.u8=H,t.u32=P,t.clean=v,t.createView=N,t.rotr=T,t.rotl=D,t.byteSwap=_,t.byteSwap32=k,t.bytesToHex=L,t.hexToBytes=l,t.asyncLoop=a,t.utf8ToBytes=c,t.bytesToUtf8=g,t.toBytes=s,t.kdfInputToBytes=i,t.concatBytes=e,t.checkOpts=d,t.createHasher=O,t.createOptHasher=I,t.createXOFer=A,t.randomBytes=G;var n=Ht();function o(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function f(r){if(!Number.isSafeInteger(r)||r<0)throw Error("positive integer expected, got "+r)}function h(r,...u){if(!o(r))throw Error("Uint8Array expected");if(u.length>0&&!u.includes(r.length))throw Error("Uint8Array expected of length "+u+", got length="+r.length)}function R(r){if(typeof r!="function"||typeof r.create!="function")throw Error("Hash should be wrapped by utils.createHasher");f(r.outputLen),f(r.blockLen)}function E(r,u=!0){if(r.destroyed)throw Error("Hash instance has been destroyed");if(u&&r.finished)throw Error("Hash#digest() has already been called")}function C(r,u){h(r);let m=u.outputLen;if(r.length<m)throw Error("digestInto() expects output buffer of length at least "+m)}function H(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function P(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function v(...r){for(let u=0;u<r.length;u++)r[u].fill(0)}function N(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function T(r,u){return r<<32-u|r>>>u}function D(r,u){return r<<u|r>>>32-u>>>0}t.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function _(r){return r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255}t.swap8IfBE=t.isLE?r=>r:r=>_(r),t.byteSwapIfBE=t.swap8IfBE;function k(r){for(let u=0;u<r.length;u++)r[u]=_(r[u]);return r}t.swap32IfBE=t.isLE?r=>r:k;var p=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",w=Array.from({length:256},(r,u)=>u.toString(16).padStart(2,"0"));function L(r){if(h(r),p)return r.toHex();let u="";for(let m=0;m<r.length;m++)u+=w[r[m]];return u}var y={_0:48,_9:57,A:65,F:70,a:97,f:102};function B(r){if(r>=y._0&&r<=y._9)return r-y._0;if(r>=y.A&&r<=y.F)return r-(y.A-10);if(r>=y.a&&r<=y.f)return r-(y.a-10)}function l(r){if(typeof r!="string")throw Error("hex string expected, got "+typeof r);if(p)return Uint8Array.fromHex(r);let u=r.length,m=u/2;if(u%2)throw Error("hex string expected, got unpadded hex of length "+u);let b=new Uint8Array(m);for(let U=0,x=0;U<m;U++,x+=2){let X=B(r.charCodeAt(x)),K=B(r.charCodeAt(x+1));if(X===void 0||K===void 0){let ut=r[x]+r[x+1];throw Error('hex string expected, got non-hex character "'+ut+'" at index '+x)}b[U]=X*16+K}return b}t.nextTick=async()=>{};async function a(r,u,m){let b=Date.now();for(let U=0;U<r;U++){m(U);let x=Date.now()-b;x>=0&&x<u||(await(0,t.nextTick)(),b+=x)}}function c(r){if(typeof r!="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function g(r){return new TextDecoder().decode(r)}function s(r){return typeof r=="string"&&(r=c(r)),h(r),r}function i(r){return typeof r=="string"&&(r=c(r)),h(r),r}function e(...r){let u=0;for(let b=0;b<r.length;b++){let U=r[b];h(U),u+=U.length}let m=new Uint8Array(u);for(let b=0,U=0;b<r.length;b++){let x=r[b];m.set(x,U),U+=x.length}return m}function d(r,u){if(u!==void 0&&{}.toString.call(u)!=="[object Object]")throw Error("options should be object or undefined");return Object.assign(r,u)}t.Hash=class{};function O(r){let u=b=>r().update(s(b)).digest(),m=r();return u.outputLen=m.outputLen,u.blockLen=m.blockLen,u.create=()=>r(),u}function I(r){let u=(b,U)=>r(U).update(s(b)).digest(),m=r({});return u.outputLen=m.outputLen,u.blockLen=m.blockLen,u.create=b=>r(b),u}function A(r){let u=(b,U)=>r(U).update(s(b)).digest(),m=r({});return u.outputLen=m.outputLen,u.blockLen=m.blockLen,u.create=b=>r(b),u}t.wrapConstructor=O,t.wrapConstructorWithOpts=I,t.wrapXOFConstructorWithOpts=A;function G(r=32){if(n.crypto&&typeof n.crypto.getRandomValues=="function")return n.crypto.getRandomValues(new Uint8Array(r));if(n.crypto&&typeof n.crypto.randomBytes=="function")return Uint8Array.from(n.crypto.randomBytes(r));throw Error("crypto.getRandomValues must be defined")}})),Bt=F((t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shake256=t.shake128=t.keccak_512=t.keccak_384=t.keccak_256=t.keccak_224=t.sha3_512=t.sha3_384=t.sha3_256=t.sha3_224=t.Keccak=void 0,t.keccakP=w;var n=Ct(),o=Tt(),f=BigInt(0),h=BigInt(1),R=BigInt(2),E=BigInt(7),C=BigInt(256),H=BigInt(113),P=[],v=[],N=[];for(let l=0,a=h,c=1,g=0;l<24;l++){[c,g]=[g,(2*c+3*g)%5],P.push(2*(5*g+c)),v.push((l+1)*(l+2)/2%64);let s=f;for(let i=0;i<7;i++)a=(a<<h^(a>>E)*H)%C,a&R&&(s^=h<<(h<<BigInt(i))-h);N.push(s)}var T=(0,n.split)(N,!0),D=T[0],_=T[1],k=(l,a,c)=>c>32?(0,n.rotlBH)(l,a,c):(0,n.rotlSH)(l,a,c),p=(l,a,c)=>c>32?(0,n.rotlBL)(l,a,c):(0,n.rotlSL)(l,a,c);function w(l,a=24){let c=new Uint32Array(10);for(let g=24-a;g<24;g++){for(let e=0;e<10;e++)c[e]=l[e]^l[e+10]^l[e+20]^l[e+30]^l[e+40];for(let e=0;e<10;e+=2){let d=(e+8)%10,O=(e+2)%10,I=c[O],A=c[O+1],G=k(I,A,1)^c[d],r=p(I,A,1)^c[d+1];for(let u=0;u<50;u+=10)l[e+u]^=G,l[e+u+1]^=r}let s=l[2],i=l[3];for(let e=0;e<24;e++){let d=v[e],O=k(s,i,d),I=p(s,i,d),A=P[e];s=l[A],i=l[A+1],l[A]=O,l[A+1]=I}for(let e=0;e<50;e+=10){for(let d=0;d<10;d++)c[d]=l[e+d];for(let d=0;d<10;d++)l[e+d]^=~c[(d+2)%10]&c[(d+4)%10]}l[0]^=D[g],l[1]^=_[g]}(0,o.clean)(c)}var L=class at extends o.Hash{constructor(a,c,g,s=!1,i=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=a,this.suffix=c,this.outputLen=g,this.enableXOF=s,this.rounds=i,(0,o.anumber)(g),!(0<a&&a<200))throw Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=(0,o.u32)(this.state)}clone(){return this._cloneInto()}keccak(){(0,o.swap32IfBE)(this.state32),w(this.state32,this.rounds),(0,o.swap32IfBE)(this.state32),this.posOut=0,this.pos=0}update(a){(0,o.aexists)(this),a=(0,o.toBytes)(a),(0,o.abytes)(a);let{blockLen:c,state:g}=this,s=a.length;for(let i=0;i<s;){let e=Math.min(c-this.pos,s-i);for(let d=0;d<e;d++)g[this.pos++]^=a[i++];this.pos===c&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:a,suffix:c,pos:g,blockLen:s}=this;a[g]^=c,c&128&&g===s-1&&this.keccak(),a[s-1]^=128,this.keccak()}writeInto(a){(0,o.aexists)(this,!1),(0,o.abytes)(a),this.finish();let c=this.state,{blockLen:g}=this;for(let s=0,i=a.length;s<i;){this.posOut>=g&&this.keccak();let e=Math.min(g-this.posOut,i-s);a.set(c.subarray(this.posOut,this.posOut+e),s),this.posOut+=e,s+=e}return a}xofInto(a){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(a)}xof(a){return(0,o.anumber)(a),this.xofInto(new Uint8Array(a))}digestInto(a){if((0,o.aoutput)(a,this),this.finished)throw Error("digest() was already called");return this.writeInto(a),this.destroy(),a}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,(0,o.clean)(this.state)}_cloneInto(a){let{blockLen:c,suffix:g,outputLen:s,rounds:i,enableXOF:e}=this;return a||(a=new at(c,g,s,e,i)),a.state32.set(this.state32),a.pos=this.pos,a.posOut=this.posOut,a.finished=this.finished,a.rounds=i,a.suffix=g,a.outputLen=s,a.enableXOF=e,a.destroyed=this.destroyed,a}};t.Keccak=L;var y=(l,a,c)=>(0,o.createHasher)(()=>new L(a,l,c));t.sha3_224=y(6,144,224/8),t.sha3_256=y(6,136,256/8),t.sha3_384=y(6,104,384/8),t.sha3_512=y(6,72,512/8),t.keccak_224=y(1,144,224/8),t.keccak_256=y(1,136,256/8),t.keccak_384=y(1,104,384/8),t.keccak_512=y(1,72,512/8);var B=(l,a,c)=>(0,o.createXOFer)((g={})=>new L(a,l,g.dkLen===void 0?c:g.dkLen,!0));t.shake128=B(31,168,128/8),t.shake256=B(31,136,256/8)})),At=F(((t,n)=>{var{sha3_512:o}=Bt(),f=24,h=32,R=(p=4,w=Math.random)=>{let L="";for(;L.length<p;)L+=Math.floor(w()*36).toString(36);return L};function E(p){let w=0n;for(let L of p.values()){let y=BigInt(L);w=(w<<8n)+y}return w}var C=(p="")=>E(o(p)).toString(36).slice(1),H=Array.from({length:26},(p,w)=>String.fromCharCode(w+97)),P=p=>H[Math.floor(p()*H.length)],v=({globalObj:p=typeof global<"u"?global:typeof window<"u"?window:{},random:w=Math.random}={})=>{let L=Object.keys(p).toString();return C(L.length?L+R(h,w):R(h,w)).substring(0,h)},N=p=>()=>p++,T=476782367,D=({random:p=Math.random,counter:w=N(Math.floor(p()*T)),length:L=f,fingerprint:y=v({random:p})}={})=>function(){let B=P(p),l=Date.now().toString(36),a=w().toString(36);return`${B+C(`${l+R(L,p)+a+y}`).substring(1,L)}`},_=D(),k=(p,{minLength:w=2,maxLength:L=h}={})=>{let y=p.length,B=/^[0-9a-z]+$/;return!!(typeof p=="string"&&y>=w&&y<=L&&B.test(p))};n.exports.getConstants=()=>({defaultLength:f,bigLength:h}),n.exports.init=D,n.exports.createId=_,n.exports.bufToBigInt=E,n.exports.createCounter=N,n.exports.createFingerprint=v,n.exports.isCuid=k})),Q=F(((t,n)=>{var{createId:o,init:f,getConstants:h,isCuid:R}=At();n.exports.createId=o,n.exports.init=f,n.exports.getConstants=h,n.exports.isCuid=R}));function J(t){return new URL(t,document.baseURI)}function Z(t){let n=new URL(window.location.href);t(n.searchParams),window.history.replaceState({},"",n.toString())}function Pt(t,n){if(typeof window>"u")return!1;let o=new URLSearchParams(window.location.search);return n===void 0?o.has(t):o.get(t)===n}function Dt(){return J(`?file=${`__new__${tt()}`}`).toString()}var Mt=/^(https?:\/\/\S+)$/;function $t(t){return typeof t=="string"&&Mt.test(t)}function Wt({href:t,queryParams:n,keys:o}){let f=typeof n=="string"?new URLSearchParams(n):n;if(f.size===0||t.startsWith("http://")||t.startsWith("https://"))return t;let h=t.startsWith("#"),R=h&&t.includes("?");if(h&&!R){let k=o?[...f.entries()].filter(([L])=>o.includes(L)):[...f.entries()],p=new URLSearchParams;for(let[L,y]of k)p.set(L,y);let w=p.toString();return w?`/?${w}${t}`:t}let E=t,C="",H=new URLSearchParams,P=h?1:0,v=t.indexOf("#",P);v!==-1&&(C=t.slice(v),E=t.slice(0,v));let N=E.indexOf("?");N!==-1&&(H=new URLSearchParams(E.slice(N+1)),E=E.slice(0,N));let T=new URLSearchParams(H),D=o?[...f.entries()].filter(([k])=>o.includes(k)):[...f.entries()];for(let[k,p]of D)T.set(k,p);let _=T.toString();return _?`${E}?${_}${C}`:t}var Ft=(0,Q().init)({length:6});function tt(){return`s_${Ft()}`}function rt(t){return t?/^s_[\da-z]{6}$/.test(t):!1}var jt=(()=>{let t=new URL(window.location.href).searchParams.get(j.sessionId);return rt(t)?(Z(n=>{n.has(j.kiosk)||n.delete(j.sessionId)}),$.debug("Connecting to existing session",{sessionId:t}),t):($.debug("Starting a new session",{sessionId:t}),tt())})();function z(){return jt}var Gt=class{constructor(t,n=!1){V(this,"initialHealthyCheck",new wt);this.config=t,this.lazy=n;try{new URL(this.config.url)}catch(o){throw Error(`Invalid runtime URL: ${this.config.url}. ${o instanceof Error?o.message:"Unknown error"}`)}this.lazy||this.init()}get isLazy(){return this.lazy}get httpURL(){return new URL(this.config.url)}get isSameOrigin(){return this.httpURL.origin===window.location.origin}formatHttpURL(t,n,o=!0){t||(t="");let f=this.httpURL,h=new URLSearchParams(window.location.search);if(n)for(let[R,E]of n.entries())f.searchParams.set(R,E);for(let[R,E]of h.entries())o&&!Object.values(j).includes(R)||f.searchParams.set(R,E);return f.pathname=`${f.pathname.replace(/\/$/,"")}/${t.replace(/^\//,"")}`,f.hash="",f}formatWsURL(t,n){return zt(this.formatHttpURL(t,n,!1).toString())}getWsURL(t){let n=new URL(this.config.url),o=new URLSearchParams(n.search);return new URLSearchParams(window.location.search).forEach((f,h)=>{o.has(h)||o.set(h,f)}),o.set(j.sessionId,t),this.formatWsURL("/ws",o)}getWsSyncURL(t){let n=new URL(this.config.url),o=new URLSearchParams(n.search);return new URLSearchParams(window.location.search).forEach((f,h)=>{o.has(h)||o.set(h,f)}),o.set(j.sessionId,t),this.formatWsURL("/ws_sync",o)}getTerminalWsURL(){return this.formatWsURL("/terminal/ws")}getLSPURL(t){if(t==="copilot"){let n=this.formatWsURL(`/lsp/${t}`);return n.search="",n}return this.formatWsURL(`/lsp/${t}`)}getAiURL(t){return this.formatHttpURL(`/api/ai/${t}`)}healthURL(){return this.formatHttpURL("/health")}async isHealthy(){if(Y()||Lt())return!0;try{let t=await fetch(this.healthURL().toString());if(t.redirected){$.debug(`Runtime redirected to ${t.url}`);let o=t.url.replace(/\/health$/,"");this.config.url=o}let n=t.ok;return n&&this.setDOMBaseUri(this.config.url),n}catch{return!1}}setDOMBaseUri(t){t=t.split("?",1)[0],t.endsWith("/")||(t+="/");let n=document.querySelector("base");n?n.setAttribute("href",t):(n=document.createElement("base"),n.setAttribute("href",t),document.head.append(n))}async init(t){$.debug("Initializing runtime...");let n=0;for(;!await this.isHealthy();){if(n>=25){$.error("Failed to connect after 25 retries"),this.initialHealthyCheck.reject(Error("Failed to connect after 25 retries"));return}if(!(t!=null&&t.disableRetryDelay)){let o=Math.min(100*1.2**n,2e3);await new Promise(f=>setTimeout(f,o))}n++}$.debug("Runtime is healthy"),this.initialHealthyCheck.resolve()}async waitForHealthy(){return this.initialHealthyCheck.promise}headers(){let t={"Marimo-Session-Id":z(),"Marimo-Server-Token":this.config.serverToken??"","x-runtime-url":this.httpURL.toString()};return this.config.authToken&&(t.Authorization=`Bearer ${this.config.authToken}`),t}sessionHeaders(){return{"Marimo-Session-Id":z()}}};function zt(t){if(!t.startsWith("http")){$.warn(`URL must start with http: ${t}`);let n=new URL(t);return n.protocol="ws",n}return new URL(t.replace(/^http/,"ws"))}var Xt=yt();function Kt(){let t=new URL(document.baseURI);return t.search="",t.hash="",t.toString()}const nt={lazy:!0,url:Kt()},et=M(nt);var st=M(t=>{let n=t(et);return new Gt(n,n.lazy)});function ot(){return gt(st)}function Vt(){let t=(0,Xt.c)(4),n=ot(),[o,f]=ft(W),h;return t[0]!==o.state||t[1]!==n||t[2]!==f?(h=async()=>{q(o.state)?(f({state:S.CONNECTING}),await n.init()):$.log("Runtime already started or starting...")},t[0]=o.state,t[1]=n,t[2]=f,t[3]=h):h=t[3],dt(h)}function it(){return lt.get(st)}function Yt(t){if(t.startsWith("http"))return new URL(t);let n=it().httpURL.toString();return n.startsWith("blob:")&&(n=n.replace("blob:","")),new URL(t,n)}export{mt as A,Rt as C,St as D,Et as E,Y as M,Ut as O,q as S,Ot as T,kt as _,Vt as a,It as b,rt as c,$t as d,Dt as f,xt as g,Q as h,et as i,S as j,bt as k,Wt as l,J as m,Yt as n,ot as o,Z as p,it as r,z as s,nt as t,Pt as u,Nt as v,W as w,_t as x,vt as y};
@@ -1 +0,0 @@
1
- import{m as n}from"./config-Ba3eeYri.js";function t(o){window.open(n(`?file=${o}`).toString(),"_blank")}export{t};
@@ -1 +0,0 @@
1
- import{s as T}from"./chunk-LvLJmgfZ.js";import{t as N}from"./react-BGmjiNul.js";import{t as _}from"./compiler-runtime-DeeZ7FnK.js";import{d as f,s as b}from"./hotkeys-uKX61F1_.js";import{r as F}from"./constants-Bkp4R3bQ.js";import{M}from"./config-Ba3eeYri.js";import{t as k}from"./createLucideIcon-CW2xpJ57.js";import{F as C}from"./usePress-DTwIUo40.js";var A=k("case-sensitive",[["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16",key:"d5nyq2"}],["path",{d:"M22 9v7",key:"pvm9v3"}],["path",{d:"M3.304 13h6.392",key:"1q3zxz"}],["circle",{cx:"18.5",cy:"12.5",r:"3.5",key:"z97x68"}]]),R=typeof HTMLElement<"u"&&"inert"in HTMLElement.prototype,w=new WeakMap,s=[];function H(t,e){let r=C(t==null?void 0:t[0]),a=e instanceof r.Element?{root:e}:e,l=(a==null?void 0:a.root)??document.body,h=(a==null?void 0:a.shouldUseInert)&&R,m=new Set(t),u=new Set,v=n=>h&&n instanceof r.HTMLElement?n.inert:n.getAttribute("aria-hidden")==="true",o=(n,i)=>{h&&n instanceof r.HTMLElement?n.inert=i:i?n.setAttribute("aria-hidden","true"):(n.removeAttribute("aria-hidden"),n instanceof r.HTMLElement&&(n.inert=!1))},p=n=>{for(let d of n.querySelectorAll("[data-live-announcer], [data-react-aria-top-layer]"))m.add(d);let i=d=>{if(u.has(d)||m.has(d)||d.parentElement&&u.has(d.parentElement)&&d.parentElement.getAttribute("role")!=="row")return NodeFilter.FILTER_REJECT;for(let L of m)if(d.contains(L))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT},c=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT,{acceptNode:i}),S=i(n);if(S===NodeFilter.FILTER_ACCEPT&&x(n),S!==NodeFilter.FILTER_REJECT){let d=c.nextNode();for(;d!=null;)x(d),d=c.nextNode()}},x=n=>{let i=w.get(n)??0;v(n)&&i===0||(i===0&&o(n,!0),u.add(n),w.set(n,i+1))};s.length&&s[s.length-1].disconnect(),p(l);let E=new MutationObserver(n=>{for(let i of n)if(i.type==="childList"&&![...m,...u].some(c=>c.contains(i.target)))for(let c of i.addedNodes)(c instanceof HTMLElement||c instanceof SVGElement)&&(c.dataset.liveAnnouncer==="true"||c.dataset.reactAriaTopLayer==="true")?m.add(c):c instanceof Element&&p(c)});E.observe(l,{childList:!0,subtree:!0});let y={visibleNodes:m,hiddenNodes:u,observe(){E.observe(l,{childList:!0,subtree:!0})},disconnect(){E.disconnect()}};return s.push(y),()=>{E.disconnect();for(let n of u){let i=w.get(n);i!=null&&(i===1?(o(n,!1),w.delete(n)):w.set(n,i-1))}y===s[s.length-1]?(s.pop(),s.length&&s[s.length-1].observe()):s.splice(s.indexOf(y),1)}}function I(t){let e=s[s.length-1];if(e&&!e.visibleNodes.has(t))return e.visibleNodes.add(t),()=>{e.visibleNodes.delete(t)}}const K=typeof window<"u"&&window.parent!==window;function P(){new URLSearchParams(window.location.search).has(F.vscode)&&(!K||M()||(f.log("[vscode] Registering VS Code bindings"),W(),D(),q(),z()))}function D(){window.addEventListener("copy",()=>{var t;g({command:"copy",text:((t=window.getSelection())==null?void 0:t.toString())??""})}),window.addEventListener("cut",()=>{var e;let t=((e=window.getSelection())==null?void 0:e.toString())??"";b()&&document.execCommand("insertText",!1,""),g({command:"cut",text:t})}),window.addEventListener("message",async t=>{try{let e=t.data,r=b();switch(e.command){case"paste":if(f.log(`[vscode] Received paste mac=${r}`,e),r){let a=document.activeElement;if(!a){f.warn("[vscode] No active element to paste into"),document.execCommand("insertText",!1,e.text);return}let l=new DataTransfer;l.setData("text/plain",e.text),a.dispatchEvent(new ClipboardEvent("paste",{clipboardData:l}))}else f.log("[vscode] Not pasting on mac");return}}catch(e){f.error("Error in paste message handler",e)}})}function W(){document.addEventListener("keydown",t=>{var e,r;if((t.ctrlKey||t.metaKey)&&t.key==="c"){let a=((e=window.getSelection())==null?void 0:e.toString())??"";f.log("[vscode] Sending copy",a),g({command:"copy",text:a});return}if((t.ctrlKey||t.metaKey)&&t.key==="x"){let a=((r=window.getSelection())==null?void 0:r.toString())??"";b()&&document.execCommand("insertText",!1,""),f.log("[vscode] Sending cut",a),g({command:"cut",text:a});return}if((t.ctrlKey||t.metaKey)&&t.key==="v"){f.log("[vscode] Sending paste"),g({command:"paste"});return}})}function q(){document.addEventListener("click",t=>{let e=t.target;if(e.tagName!=="A")return;let r=e.getAttribute("href");r&&(r.startsWith("http://")||r.startsWith("https://"))&&(t.preventDefault(),g({command:"external_link",url:r}))})}function z(){document.addEventListener("contextmenu",t=>{t.preventDefault(),g({command:"context_menu"})})}function g(t){var e;(e=window.parent)==null||e.postMessage(t,"*")}var O=_(),J=T(N(),1);function U(t){let e=(0,O.c)(6),[r,a]=(0,J.useState)(t),l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=o=>{var p;(p=o==null?void 0:o.stopPropagation)==null||p.call(o),a(!0)},e[0]=l):l=e[0];let h;e[1]===Symbol.for("react.memo_cache_sentinel")?(h=o=>{var p;(p=o==null?void 0:o.stopPropagation)==null||p.call(o),a(!1)},e[1]=h):h=e[1];let m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m=o=>{var p;(p=o==null?void 0:o.stopPropagation)==null||p.call(o),a(V)},e[2]=m):m=e[2];let u;e[3]===Symbol.for("react.memo_cache_sentinel")?(u={setTrue:l,setFalse:h,toggle:m},e[3]=u):u=e[3];let v;return e[4]===r?v=e[5]:(v=[r,u],e[4]=r,e[5]=v),v}function V(t){return!t}export{H as a,I as i,P as n,A as o,g as r,U as t};