@marimo-team/islands 0.23.6-dev2 → 0.23.6-dev20
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/{chat-ui-b_bJR7A9.js → chat-ui-CtIeZD6j.js} +2 -2
- package/dist/{code-visibility-Ct9_oZ3S.js → code-visibility-BnjWivjU.js} +664 -527
- package/dist/{html-to-image-CzFE0Irw.js → html-to-image-uzALXlch.js} +2137 -2117
- package/dist/main.js +5 -5
- package/dist/{process-output-D3EbEd3k.js → process-output-CD5QiwBb.js} +1 -1
- package/dist/{reveal-component-D52utNOJ.js → reveal-component-CBs-ycE-.js} +2 -2
- package/package.json +5 -5
- package/src/components/slides/slide-form.tsx +43 -0
- package/src/core/cells/__tests__/apply-transaction.test.ts +193 -27
- package/src/core/cells/__tests__/cells.test.ts +99 -0
- package/src/core/cells/__tests__/document-changes.test.ts +14 -0
- package/src/core/cells/cells.ts +14 -1
- package/src/core/cells/document-changes.ts +17 -14
- package/src/plugins/core/RenderHTML.tsx +49 -3
- package/src/plugins/core/__test__/RenderHTML.test.ts +54 -0
package/dist/main.js
CHANGED
|
@@ -22,18 +22,18 @@ import { _ as Logger, c as Objects, g as cn, h as Events, i as NOT_SET, l as use
|
|
|
22
22
|
import { t as require_react } from "./react-DA-nE2FX.js";
|
|
23
23
|
import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
|
|
24
24
|
import { n as Copy, r as toast, t as copyToClipboard } from "./copy-TGGAUEWp.js";
|
|
25
|
-
import { $ as useCellActions, At as DeferredRequestRegistry, B as safeExtractSetUIElementMessageBuffers, Bn as Braces, Bt as getDataTypeColor, C as AccordionContent, Cn as Root2$1, Ct as customPythonLanguageSupport, Dn as Table2, Dt as Paths, E as BorderAllIcon, En as Trash2, Et as PathBuilder, F as base64ToDataView, Fn as Eye, Ft as jotaiJsonStorage, Gt as convertStatsName, H as getMarimoExportContext, In as Database, J as getCellNames, Jt as useRequestClient, K as createActions, Kt as getRequestClient, L as dataViewToBase64, Ln as Columns2, Mn as Layers, Nn as Info, Nt as repl, On as PaintRoller, Pn as FileText, Q as reducer, Rt as PluralWords, S as Accordion, Sn as Item$1, St as Checkbox, T as AccordionTrigger, U as hasTrustedExportContext, V as renderHTML, Vt as require_client, W as hasRunAnyCellAtom, X as notebookOutline, Y as notebookAtom, Yt as isUninstantiated, Z as numColumnsAtom, _n as atomWithStorage, a as useLastFocusedCellId, an as parseInitialValue, bt as isInternalCellName, ct as kioskModeAtom, dn as OBJECT_ID_ATTR, dt as outputIsLoading, en as NotebookScopedLocalStorage, et as useCellIds, f as isOutputEmpty, fn as RANDOM_ID_ATTR, ft as outputIsStale, gn as atomWithReducer, i as useCellFocusActions, in as parseDataset, jn as LoaderCircle, jt as generateUUID, k as ChevronDownIcon, ln as UIElementId, mt as headingToIdentifier, nt as createCell, o as maybeAddAltairImport, ot as getInitialAppMode, p as useExpandedConsoleOutput, pn as jsonParseWithSpecialChar, pt as isErrorMime, qt as requestClientAtom, r as LazyAnyLanguageCodeMirror, rn as parseAttrValue, s as Spinner, sn as HTMLCellId, st as initialModeAtom, un as findCellId, vn as selectAtom, w as AccordionItem, wn as Trigger2, wt as MarkdownLanguageAdapter, xn as Content2, xt as normalizeName, yt as getValidName, zn as CircleAlert, zt as DATA_TYPE_ICON, __tla as __tla_0 } from "./html-to-image-
|
|
25
|
+
import { $ as useCellActions, At as DeferredRequestRegistry, B as safeExtractSetUIElementMessageBuffers, Bn as Braces, Bt as getDataTypeColor, C as AccordionContent, Cn as Root2$1, Ct as customPythonLanguageSupport, Dn as Table2, Dt as Paths, E as BorderAllIcon, En as Trash2, Et as PathBuilder, F as base64ToDataView, Fn as Eye, Ft as jotaiJsonStorage, Gt as convertStatsName, H as getMarimoExportContext, In as Database, J as getCellNames, Jt as useRequestClient, K as createActions, Kt as getRequestClient, L as dataViewToBase64, Ln as Columns2, Mn as Layers, Nn as Info, Nt as repl, On as PaintRoller, Pn as FileText, Q as reducer, Rt as PluralWords, S as Accordion, Sn as Item$1, St as Checkbox, T as AccordionTrigger, U as hasTrustedExportContext, V as renderHTML, Vt as require_client, W as hasRunAnyCellAtom, X as notebookOutline, Y as notebookAtom, Yt as isUninstantiated, Z as numColumnsAtom, _n as atomWithStorage, a as useLastFocusedCellId, an as parseInitialValue, bt as isInternalCellName, ct as kioskModeAtom, dn as OBJECT_ID_ATTR, dt as outputIsLoading, en as NotebookScopedLocalStorage, et as useCellIds, f as isOutputEmpty, fn as RANDOM_ID_ATTR, ft as outputIsStale, gn as atomWithReducer, i as useCellFocusActions, in as parseDataset, jn as LoaderCircle, jt as generateUUID, k as ChevronDownIcon, ln as UIElementId, mt as headingToIdentifier, nt as createCell, o as maybeAddAltairImport, ot as getInitialAppMode, p as useExpandedConsoleOutput, pn as jsonParseWithSpecialChar, pt as isErrorMime, qt as requestClientAtom, r as LazyAnyLanguageCodeMirror, rn as parseAttrValue, s as Spinner, sn as HTMLCellId, st as initialModeAtom, un as findCellId, vn as selectAtom, w as AccordionItem, wn as Trigger2, wt as MarkdownLanguageAdapter, xn as Content2, xt as normalizeName, yt as getValidName, zn as CircleAlert, zt as DATA_TYPE_ICON, __tla as __tla_0 } from "./html-to-image-uzALXlch.js";
|
|
26
26
|
import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-CO1e63h_.js";
|
|
27
27
|
import { o as useSize, s as Root$3, u as createLucideIcon } from "./dist-ESg7xyoD.js";
|
|
28
28
|
import { A as SquareFunction, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, O as TIME_UNIT_DESCRIPTIONS, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, _ as AGGREGATION_TYPE_DESCRIPTIONS, a as AGGREGATION_FNS$1, b as COLOR_SCHEMES, c as COLOR_BY_FIELDS, d as NONE_VALUE, f as SELECTABLE_DATA_TYPES, g as TIME_UNITS, h as STRING_AGGREGATION_FNS, i as convertDataTypeToSelectable, j as ChartColumn, k as escapeFieldName, l as COMBINED_TIME_UNITS, m as SORT_TYPES, n as createSpecWithoutData, o as BIN_AGGREGATION, p as SINGLE_TIME_UNITS, r as isFieldSet, s as CHART_TYPES, t as augmentSpecWithData, u as ChartType, v as AGGREGATION_TYPE_ICON, w as DEFAULT_MAX_BINS_FACET, x as COUNT_FIELD, y as CHART_TYPE_ICON } from "./spec-BKWq0wn2.js";
|
|
29
|
-
import { $ as getPageIndexForRow, A as contextAwarePanelType, At as GripHorizontal, B as TableHead, Bt as ChevronsDownUp, C as useInternalStateWithSync, Ct as RenderTextWithLinks, D as PANEL_TYPES, Dt as getStaticVirtualFiles, E as ContextAwarePanelItem, Et as EmotionCacheProvider, F as Fill, Ft as Download, G as inferFieldTypes, H as TableRow, Ht as ArrowDownWideNarrow, I as Provider$1, It as Code, J as ColumnChartSpecModel, K as renderCellValue, L as Table, Lt as ChevronsUpDown, M as SlotNames, Mt as EyeOff, N as slotsController, O as contextAwarePanelOpen, Ot as isStaticNotebook, P as Toggle, Pt as Ellipsis, Q as filtersToFilterGroup, R as TableBody, Rt as ChevronsRight, S as prettifyRowCount, St as useOverflowDetection, T as ComboboxItem, Tt as HtmlOutput, U as NAMELESS_COLUMN_PREFIX, V as TableHeader, Vt as ChevronLeft, W as generateColumns, X as useIntersectionObserver, Y as DelayMount, Z as usePrevious$1, _ as downloadBlob, _t as TabsTrigger, at as toFieldTypes, b as Filenames, bt as ChartLoadingState, c as Slide, ct as CommandEmpty, d as JsonOutput, dt as CommandList, et as loadTableAndRawData, f as OutputArea, ft as CommandSeparator, g as ADD_PRINTING_CLASS, gt as TabsList, h as InstallPackageButton, ht as TabsContent, it as TOO_MANY_ROWS, j as isCellAwareAtom, jt as Funnel, k as contextAwarePanelOwner, kt as TextWrap, l as RadioGroup, lt as CommandInput, m as DataTable, mt as Tabs, n as marimoVersionAtom, nt as INDEX_COLUMN_NAME, o as SLIDE_TYPE_OPTIONS_BY_VALUE, ot as getMimeValues, p as OutputRenderer, pt as Maps, q as ColumnChartContext, r as showCodeInRunModeAtom, rt as SELECT_COLUMN_ID, st as Command, t as useNotebookCodeAvailable, tt as loadTableData, u as RadioGroupItem, ut as CommandItem, v as downloadByURL, vt as ChartErrorState, w as Combobox, wt as Kbd, x as prettifyRowColumnCount, xt as LazyVegaEmbed, y as downloadHTMLAsImage, yt as ChartInfoState, z as TableCell, zt as ChevronsLeft, __tla as __tla_2 } from "./code-visibility-
|
|
29
|
+
import { $ as getPageIndexForRow, A as contextAwarePanelType, At as GripHorizontal, B as TableHead, Bt as ChevronsDownUp, C as useInternalStateWithSync, Ct as RenderTextWithLinks, D as PANEL_TYPES, Dt as getStaticVirtualFiles, E as ContextAwarePanelItem, Et as EmotionCacheProvider, F as Fill, Ft as Download, G as inferFieldTypes, H as TableRow, Ht as ArrowDownWideNarrow, I as Provider$1, It as Code, J as ColumnChartSpecModel, K as renderCellValue, L as Table, Lt as ChevronsUpDown, M as SlotNames, Mt as EyeOff, N as slotsController, O as contextAwarePanelOpen, Ot as isStaticNotebook, P as Toggle, Pt as Ellipsis, Q as filtersToFilterGroup, R as TableBody, Rt as ChevronsRight, S as prettifyRowCount, St as useOverflowDetection, T as ComboboxItem, Tt as HtmlOutput, U as NAMELESS_COLUMN_PREFIX, V as TableHeader, Vt as ChevronLeft, W as generateColumns, X as useIntersectionObserver, Y as DelayMount, Z as usePrevious$1, _ as downloadBlob, _t as TabsTrigger, at as toFieldTypes, b as Filenames, bt as ChartLoadingState, c as Slide, ct as CommandEmpty, d as JsonOutput, dt as CommandList, et as loadTableAndRawData, f as OutputArea, ft as CommandSeparator, g as ADD_PRINTING_CLASS, gt as TabsList, h as InstallPackageButton, ht as TabsContent, it as TOO_MANY_ROWS, j as isCellAwareAtom, jt as Funnel, k as contextAwarePanelOwner, kt as TextWrap, l as RadioGroup, lt as CommandInput, m as DataTable, mt as Tabs, n as marimoVersionAtom, nt as INDEX_COLUMN_NAME, o as SLIDE_TYPE_OPTIONS_BY_VALUE, ot as getMimeValues, p as OutputRenderer, pt as Maps, q as ColumnChartContext, r as showCodeInRunModeAtom, rt as SELECT_COLUMN_ID, st as Command, t as useNotebookCodeAvailable, tt as loadTableData, u as RadioGroupItem, ut as CommandItem, v as downloadByURL, vt as ChartErrorState, w as Combobox, wt as Kbd, x as prettifyRowColumnCount, xt as LazyVegaEmbed, y as downloadHTMLAsImage, yt as ChartInfoState, z as TableCell, zt as ChevronsLeft, __tla as __tla_2 } from "./code-visibility-BnjWivjU.js";
|
|
30
30
|
import { c as Calendar, i as createReducerAndAtoms, n as useOnUnmount, o as ToggleLeft, t as useOnMount } from "./useLifecycle-smVfjLNI.js";
|
|
31
31
|
import { n as $fb18d541ea1ad717$export$ad991b66133851cf, r as $5a387cc49350e6db$export$722debc0e56fea39, t as $896ba0a80a8f4d36$export$85fd5fdf27bacc79 } from "./useDateFormatter-B3mCQMP3.js";
|
|
32
32
|
import { t as Check } from "./check-CFM2mVDr.js";
|
|
33
33
|
import { A as Trigger$1, C as $a916eb452884faea$export$b7a616150fdb9f44, D as $b5e257d569688ac6$export$535bd6ca7f90a273, E as $18f2051aff69b9bf$export$a54013f0d02a8f82, F as X, L as ChevronDown, M as usePrevious$2, N as useDirection, P as createCollection, S as logNever, T as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7, a as SelectGroup, c as SelectSeparator, d as NativeSelect, f as selectStyles, i as SelectContent, j as clamp$2, k as Icon, l as SelectTrigger, n as capitalize, o as SelectItem, r as Select, s as SelectLabel, t as Strings, u as SelectValue, w as $488c6ddbf4ef74c2$export$cc77c4ff7e8673c5, x as assertNever } from "./strings-B_FOH6eV.js";
|
|
34
34
|
import { $ as $e5be200c675c3b3a$export$aca958c65c314e6c, A as $d2b4bc8c273e7be6$export$24d547caef80ccd1, At as $c87311424ea30a05$export$fedb369cb70207f1, B as $64fa3d84918910a7$export$c62b8e45d58ddad9, Bt as $431fbd86ca7dc216$export$f21a1ffae260145a, C as $a049562f99e7db0e$export$eb2fcfdbd7ba97d4, Ct as $8ae05eaa5c114e9c$export$7f54fc3180508a52, D as $ee014567cb39d3f0$export$ff05c3ac10437e03, Dt as $c87311424ea30a05$export$78551043582a6a98, E as $ee014567cb39d3f0$export$f551688fc98f2e09, Et as $c87311424ea30a05$export$6446a186d09e379e, F as $64fa3d84918910a7$export$2881499e37b75b9a, Ft as $d4ee10de306f2510$export$b4f377a2b6254582, H as $64fa3d84918910a7$export$ef03459518577ad4, Ht as $bdb11010cef70236$export$b4cc09c592e8fdb8, I as $64fa3d84918910a7$export$29f1550f4b0d4415, It as $d4ee10de306f2510$export$cd4e5573fbe2b576, J as $d2e8511e6f209edf$export$e908e06f4b8e3402, K as useDebounceControlledState, L as $64fa3d84918910a7$export$4d86445c2cf5e3, Lt as $d4ee10de306f2510$export$e58f029f0fbfdb29, M as $01b77f81d0f07f68$export$75b6ee27786ba447, Mt as $65484d02dcb7eb3e$export$457c3d6518dd4c6f, N as $01b77f81d0f07f68$export$b04be29aa201d4f5, Nt as $3ef42575df84b30b$export$9d1611c77c2fe928, O as $514c0188e459b4c0$export$5f1af8db9871e1d6, Ot as $c87311424ea30a05$export$9ac100e40613ea10, P as $f39a9eba43920ace$export$b5d7cc18bb8d2b59, Pt as $d4ee10de306f2510$export$4282f70798064fe0, Q as $e5be200c675c3b3a$export$a763b9476acd3eb, R as $64fa3d84918910a7$export$9d4c57ee4c6ffdd8, Rt as $f4e2df6bd15f8569$export$98658e8c59125e6a, S as $3985021b0ad6602f$export$f5b8910cec6cf069, St as $e9faafb641e167db$export$90fc3a17d93f704c, T as $d3e0e05bdfcf66bd$export$c24727297075ec6a, Tt as $313b98861ee5dd6c$export$d6875122194c7b44, U as $64fa3d84918910a7$export$fabf2dc03a41866e, Ut as $bdb11010cef70236$export$f680877a34711e37, V as $64fa3d84918910a7$export$df3a06d6289f983e, Vt as $ff5963eb1fccf552$export$e08e3b67e392101e, Wt as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, X as $e93e671b31057976$export$b8473d3665f3a75a, Y as $2baaea4c71418dea$export$294aa081a6c6f55d, Z as $e5be200c675c3b3a$export$75ee7c75d68f5b0e, _t as $9446cca9a3875146$export$7d15b64cf5a3a4c4, a as NumberField, at as $6c7bd7858deea686$export$cd11ab140839f11d, b as DropdownMenuTrigger, bt as $b4b717babfbb907b$export$bebd5a1431fec25d, c as prettyNumber, ct as $6db58dc88e78b024$export$2f817fcdc4b89ae0, d as DropdownMenuContent, dt as $9ab94262bd0047c7$export$420e68273165f4ec, et as $e5be200c675c3b3a$export$dad6ae84456c676a, f as DropdownMenuGroup, fn as Circle, ft as $3ad3f6e1647bc98d$export$80f3e147d781571c, g as DropdownMenuSeparator, gt as $ae1eeba8b9eafd08$export$5165eccb35aaadb5, ht as _class_private_field_init, i as OnBlurredInput, it as $701a24aa0da5b062$export$ea18c227d4417cc3, j as $d2b4bc8c273e7be6$export$353f5b6fc5456de1, jt as $7215afc6de606d6b$export$de79e2c695e052f3, k as $514c0188e459b4c0$export$9afb8bc826b033ea, kt as $c87311424ea30a05$export$a11b0059900ceec8, l as prettyScientificNumber, lt as $5b160d28a433310d$export$c17fa47878dc55b6, m as DropdownMenuLabel, mt as $f6c31cce2adf654f$export$45712eceda6fad21, n as DebouncedNumberInput, nt as $319e236875307eab$export$a9b970dcc4ae71a9, ot as $fca6afa0e843324b$export$87b761675e8eaa10, p as DropdownMenuItem, pn as ChevronRight, pt as $507fabe10e71c6fb$export$630ff653c5ada6a9, q as useDebouncedCallback, r as Input, rt as $f7dceffc5ad7768b$export$4e328f61c538687f, st as $fca6afa0e843324b$export$f12b703ca79dfbb1, t as DebouncedInput, tt as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, u as DropdownMenu, ut as $6179b936705e76d3$export$ae780daf29e6d456, vt as $458b0a5536c1a7cf$export$40bfa8c7b0832715, w as $a049562f99e7db0e$export$f9c6924e160136d1, wt as $df56164dff5785e2$export$4338b53315abf666, x as $3985021b0ad6602f$export$37fb8590cf2c088c, xt as $99facab73266f662$export$5add1d006293d136, yt as $b4b717babfbb907b$export$4c063cf1350e6fed, z as $64fa3d84918910a7$export$c245e6201fed2f75, zt as $431fbd86ca7dc216$export$b204af158042fbac } from "./input-Drx1pguW.js";
|
|
35
35
|
import { c as asRemoteURL, f as require_cuid2, g as CircleQuestionMark, h as isWasm, m as Deferred, u as appendQueryParams } from "./toDate-yqOcZ_tY.js";
|
|
36
|
-
import { a as MarimoIncomingMessageEvent, c as MarimoValueUpdateEvent, d as File, i as PythonIcon, l as createInputEvent, n as blobToString, o as MarimoValueInputEvent, r as filesToBase64, s as MarimoValueReadyEvent, t as processOutput, u as deserializeBlob } from "./process-output-
|
|
36
|
+
import { a as MarimoIncomingMessageEvent, c as MarimoValueUpdateEvent, d as File, i as PythonIcon, l as createInputEvent, n as blobToString, o as MarimoValueInputEvent, r as filesToBase64, s as MarimoValueReadyEvent, t as processOutput, u as deserializeBlob } from "./process-output-CD5QiwBb.js";
|
|
37
37
|
import { i as Pencil, n as Trash, r as Plus, t as BulkEdit } from "./types-DBtDeUKD.js";
|
|
38
38
|
import { t as require_react_dom } from "./react-dom-BWRJ_g_k.js";
|
|
39
39
|
import { t as require_jsx_runtime } from "./jsx-runtime-COBk7ree.js";
|
|
@@ -13655,7 +13655,7 @@ Defaulting to \`null\`.`;
|
|
|
13655
13655
|
};
|
|
13656
13656
|
}
|
|
13657
13657
|
};
|
|
13658
|
-
var LazyChatbot = import_react.lazy(() => import("./chat-ui-
|
|
13658
|
+
var LazyChatbot = import_react.lazy(() => import("./chat-ui-CtIeZD6j.js").then((e) => ({
|
|
13659
13659
|
default: e.Chatbot
|
|
13660
13660
|
}))), messageSchema = array(object({
|
|
13661
13661
|
id: string(),
|
|
@@ -44649,7 +44649,7 @@ ${c}
|
|
|
44649
44649
|
if (l && l !== "slide") return l;
|
|
44650
44650
|
if (c == null ? void 0 : c.has(e)) return "skip";
|
|
44651
44651
|
}
|
|
44652
|
-
var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-
|
|
44652
|
+
var LazySlidesComponent = import_react.lazy(() => import("./reveal-component-CBs-ycE-.js"));
|
|
44653
44653
|
const SlidesLayoutPlugin = {
|
|
44654
44654
|
type: "slides",
|
|
44655
44655
|
name: "Slides",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-BNovOVIE.js";
|
|
2
2
|
import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
|
|
3
|
-
import { it as parseHtmlContent, rt as ansiToPlainText } from "./html-to-image-
|
|
3
|
+
import { it as parseHtmlContent, rt as ansiToPlainText } from "./html-to-image-uzALXlch.js";
|
|
4
4
|
import { u as createLucideIcon } from "./dist-ESg7xyoD.js";
|
|
5
5
|
import { t as Strings } from "./strings-B_FOH6eV.js";
|
|
6
6
|
import { t as require_jsx_runtime } from "./jsx-runtime-COBk7ree.js";
|
|
@@ -6,9 +6,9 @@ import { s as __toESM } from "./chunk-BNovOVIE.js";
|
|
|
6
6
|
import { _ as Logger, g as cn, h as Events, l as useEventListener, t as Button } from "./button-CA5pI2YF.js";
|
|
7
7
|
import { t as require_react } from "./react-DA-nE2FX.js";
|
|
8
8
|
import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
|
|
9
|
-
import "./html-to-image-
|
|
9
|
+
import "./html-to-image-uzALXlch.js";
|
|
10
10
|
import "./chunk-5FQGJX7Z-CO1e63h_.js";
|
|
11
|
-
import { It as Code, Mt as EyeOff, Nt as Expand, a as DEFAULT_SLIDE_TYPE, c as Slide, i as DEFAULT_DECK_TRANSITION, s as SlideSidebar, t as useNotebookCodeAvailable } from "./code-visibility-
|
|
11
|
+
import { It as Code, Mt as EyeOff, Nt as Expand, a as DEFAULT_SLIDE_TYPE, c as Slide, i as DEFAULT_DECK_TRANSITION, s as SlideSidebar, t as useNotebookCodeAvailable } from "./code-visibility-BnjWivjU.js";
|
|
12
12
|
import "./input-Drx1pguW.js";
|
|
13
13
|
import "./toDate-yqOcZ_tY.js";
|
|
14
14
|
import "./react-dom-BWRJ_g_k.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marimo-team/islands",
|
|
3
|
-
"version": "0.23.6-
|
|
3
|
+
"version": "0.23.6-dev20",
|
|
4
4
|
"main": "dist/main.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -195,9 +195,9 @@
|
|
|
195
195
|
"@codecov/vite-plugin": "^1.9.1",
|
|
196
196
|
"@csstools/postcss-light-dark-function": "^2.0.11",
|
|
197
197
|
"@playwright/test": "^1.59.1",
|
|
198
|
-
"@storybook/addon-docs": "^10.
|
|
199
|
-
"@storybook/addon-links": "^10.
|
|
200
|
-
"@storybook/react-vite": "^10.
|
|
198
|
+
"@storybook/addon-docs": "^10.3.5",
|
|
199
|
+
"@storybook/addon-links": "^10.3.5",
|
|
200
|
+
"@storybook/react-vite": "^10.3.5",
|
|
201
201
|
"@swc-jotai/react-refresh": "^0.5.0",
|
|
202
202
|
"@testing-library/jest-dom": "^6.9.1",
|
|
203
203
|
"@testing-library/react": "^16.3.2",
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
"react": "^19.2.4",
|
|
224
224
|
"react-compiler-runtime": "19.1.0-rc.3",
|
|
225
225
|
"react-dom": "^19.2.4",
|
|
226
|
-
"storybook": "^10.
|
|
226
|
+
"storybook": "^10.3.5",
|
|
227
227
|
"stylelint": "^16.26.1",
|
|
228
228
|
"stylelint-config-standard": "^36.0.1",
|
|
229
229
|
"tailwindcss": "^4.2.2",
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
CookieIcon,
|
|
9
9
|
PanelRightCloseIcon,
|
|
10
10
|
PanelRightOpenIcon,
|
|
11
|
+
KeyboardIcon,
|
|
11
12
|
} from "lucide-react";
|
|
12
13
|
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
|
|
13
14
|
import {
|
|
@@ -28,6 +29,7 @@ import type {
|
|
|
28
29
|
import { useState } from "react";
|
|
29
30
|
import { Tooltip } from "../ui/tooltip";
|
|
30
31
|
import { Button } from "../ui/button";
|
|
32
|
+
import { Kbd } from "../ui/kbd";
|
|
31
33
|
import type { RuntimeCell } from "@/core/cells/types";
|
|
32
34
|
|
|
33
35
|
export const DEFAULT_SLIDE_TYPE: SlideType = "slide";
|
|
@@ -132,10 +134,51 @@ const SlidesForm = ({
|
|
|
132
134
|
<TabsContent value="deck" className="mt-0 flex-1">
|
|
133
135
|
<DeckConfigForm layout={layout} setLayout={setLayout} />
|
|
134
136
|
</TabsContent>
|
|
137
|
+
<hr />
|
|
138
|
+
<KeyboardTips />
|
|
135
139
|
</Tabs>
|
|
136
140
|
);
|
|
137
141
|
};
|
|
138
142
|
|
|
143
|
+
const KEYBOARD_TIPS: { keys: string[]; description: string }[] = [
|
|
144
|
+
{ keys: ["F"], description: "Enter fullscreen" },
|
|
145
|
+
{ keys: ["C"], description: "Toggle code editor" },
|
|
146
|
+
];
|
|
147
|
+
|
|
148
|
+
const KEYBOARD_SHORTCUTS_URL =
|
|
149
|
+
"https://vlaaad.github.io/reveal/keyboard-shortcuts";
|
|
150
|
+
|
|
151
|
+
const KeyboardTips = () => {
|
|
152
|
+
return (
|
|
153
|
+
<div className="flex flex-col gap-2 text-xs text-muted-foreground">
|
|
154
|
+
<div className="flex items-center gap-1.5 font-medium text-foreground/80">
|
|
155
|
+
<KeyboardIcon className="h-3.5 w-3.5" />
|
|
156
|
+
<span>Shortcuts</span>
|
|
157
|
+
</div>
|
|
158
|
+
<ul className="flex flex-col gap-1.5">
|
|
159
|
+
{KEYBOARD_TIPS.map(({ keys, description }) => (
|
|
160
|
+
<li key={description} className="flex items-center justify-between">
|
|
161
|
+
<span>{description}</span>
|
|
162
|
+
<span className="flex gap-1">
|
|
163
|
+
{keys.map((key) => (
|
|
164
|
+
<Kbd key={key}>{key}</Kbd>
|
|
165
|
+
))}
|
|
166
|
+
</span>
|
|
167
|
+
</li>
|
|
168
|
+
))}
|
|
169
|
+
</ul>
|
|
170
|
+
<a
|
|
171
|
+
href={KEYBOARD_SHORTCUTS_URL}
|
|
172
|
+
target="_blank"
|
|
173
|
+
rel="noopener noreferrer"
|
|
174
|
+
className="text-link hover:underline"
|
|
175
|
+
>
|
|
176
|
+
See all shortcuts
|
|
177
|
+
</a>
|
|
178
|
+
</div>
|
|
179
|
+
);
|
|
180
|
+
};
|
|
181
|
+
|
|
139
182
|
const SlideConfigForm = ({
|
|
140
183
|
layout,
|
|
141
184
|
setLayout,
|
|
@@ -469,10 +469,34 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
469
469
|
const [a, b, c, d] = state.cellIds.inOrderIds;
|
|
470
470
|
apply([
|
|
471
471
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
472
|
-
{
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
472
|
+
{
|
|
473
|
+
type: "set-config",
|
|
474
|
+
cellId: a,
|
|
475
|
+
column: 0,
|
|
476
|
+
disabled: false,
|
|
477
|
+
hideCode: false,
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
type: "set-config",
|
|
481
|
+
cellId: b,
|
|
482
|
+
column: 1,
|
|
483
|
+
disabled: false,
|
|
484
|
+
hideCode: false,
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
type: "set-config",
|
|
488
|
+
cellId: c,
|
|
489
|
+
column: 0,
|
|
490
|
+
disabled: false,
|
|
491
|
+
hideCode: false,
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
type: "set-config",
|
|
495
|
+
cellId: d,
|
|
496
|
+
column: 1,
|
|
497
|
+
disabled: false,
|
|
498
|
+
hideCode: false,
|
|
499
|
+
},
|
|
476
500
|
]);
|
|
477
501
|
// a and c in col0; b and d in col1. Order within each column follows
|
|
478
502
|
// the reorder-cells order.
|
|
@@ -487,7 +511,15 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
487
511
|
it("set-config without reorder-cells moves the cell to the new column", () => {
|
|
488
512
|
setup("a", "b", "c");
|
|
489
513
|
const [, b] = state.cellIds.inOrderIds;
|
|
490
|
-
apply([
|
|
514
|
+
apply([
|
|
515
|
+
{
|
|
516
|
+
type: "set-config",
|
|
517
|
+
cellId: b,
|
|
518
|
+
column: 1,
|
|
519
|
+
disabled: false,
|
|
520
|
+
hideCode: false,
|
|
521
|
+
},
|
|
522
|
+
]);
|
|
491
523
|
// Without reorder-cells, the flat order comes from the current tree.
|
|
492
524
|
// b gets explicit col=1; a and c stay with default null → follow the
|
|
493
525
|
// previous cell's column (a → col0 because prev=0; c → col1 because
|
|
@@ -503,7 +535,15 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
503
535
|
it("no column change: set-config only touching other fields does not repartition", () => {
|
|
504
536
|
setup("a", "b", "c");
|
|
505
537
|
const [, b] = state.cellIds.inOrderIds;
|
|
506
|
-
apply([
|
|
538
|
+
apply([
|
|
539
|
+
{
|
|
540
|
+
type: "set-config",
|
|
541
|
+
cellId: b,
|
|
542
|
+
column: null,
|
|
543
|
+
disabled: false,
|
|
544
|
+
hideCode: true,
|
|
545
|
+
},
|
|
546
|
+
]);
|
|
507
547
|
// All three cells remain in a single column. No rebuild triggered.
|
|
508
548
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
509
549
|
"
|
|
@@ -525,8 +565,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
525
565
|
const [a, b] = state.cellIds.inOrderIds;
|
|
526
566
|
apply([
|
|
527
567
|
{ type: "reorder-cells", cellIds: [a, b] },
|
|
528
|
-
{
|
|
529
|
-
|
|
568
|
+
{
|
|
569
|
+
type: "set-config",
|
|
570
|
+
cellId: a,
|
|
571
|
+
column: 0,
|
|
572
|
+
disabled: false,
|
|
573
|
+
hideCode: false,
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
type: "set-config",
|
|
577
|
+
cellId: b,
|
|
578
|
+
column: 1,
|
|
579
|
+
disabled: false,
|
|
580
|
+
hideCode: false,
|
|
581
|
+
},
|
|
530
582
|
]);
|
|
531
583
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
532
584
|
"
|
|
@@ -550,8 +602,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
550
602
|
const [a, b, c, d] = state.cellIds.inOrderIds;
|
|
551
603
|
apply([
|
|
552
604
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
553
|
-
{
|
|
554
|
-
|
|
605
|
+
{
|
|
606
|
+
type: "set-config",
|
|
607
|
+
cellId: a,
|
|
608
|
+
column: 0,
|
|
609
|
+
disabled: false,
|
|
610
|
+
hideCode: false,
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
type: "set-config",
|
|
614
|
+
cellId: c,
|
|
615
|
+
column: 1,
|
|
616
|
+
disabled: false,
|
|
617
|
+
hideCode: false,
|
|
618
|
+
},
|
|
555
619
|
]);
|
|
556
620
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
557
621
|
"
|
|
@@ -562,8 +626,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
562
626
|
// Now merge everything back to col 0.
|
|
563
627
|
apply([
|
|
564
628
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
565
|
-
{
|
|
566
|
-
|
|
629
|
+
{
|
|
630
|
+
type: "set-config",
|
|
631
|
+
cellId: c,
|
|
632
|
+
column: 0,
|
|
633
|
+
disabled: false,
|
|
634
|
+
hideCode: false,
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
type: "set-config",
|
|
638
|
+
cellId: d,
|
|
639
|
+
column: 0,
|
|
640
|
+
disabled: false,
|
|
641
|
+
hideCode: false,
|
|
642
|
+
},
|
|
567
643
|
]);
|
|
568
644
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
569
645
|
"
|
|
@@ -609,8 +685,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
609
685
|
{ type: "reorder-cells", cellIds: [a, b, c] },
|
|
610
686
|
{ type: "set-code", cellId: a, code: "x = 1" },
|
|
611
687
|
{ type: "set-name", cellId: b, name: "middle" },
|
|
612
|
-
{
|
|
613
|
-
|
|
688
|
+
{
|
|
689
|
+
type: "set-config",
|
|
690
|
+
cellId: a,
|
|
691
|
+
column: 0,
|
|
692
|
+
disabled: false,
|
|
693
|
+
hideCode: false,
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
type: "set-config",
|
|
697
|
+
cellId: b,
|
|
698
|
+
column: 1,
|
|
699
|
+
disabled: false,
|
|
700
|
+
hideCode: false,
|
|
701
|
+
},
|
|
614
702
|
]);
|
|
615
703
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
616
704
|
"
|
|
@@ -658,8 +746,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
658
746
|
// Split into two columns. Only a and c are anchors.
|
|
659
747
|
apply([
|
|
660
748
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
661
|
-
{
|
|
662
|
-
|
|
749
|
+
{
|
|
750
|
+
type: "set-config",
|
|
751
|
+
cellId: a,
|
|
752
|
+
column: 0,
|
|
753
|
+
disabled: false,
|
|
754
|
+
hideCode: false,
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
type: "set-config",
|
|
758
|
+
cellId: c,
|
|
759
|
+
column: 1,
|
|
760
|
+
disabled: false,
|
|
761
|
+
hideCode: false,
|
|
762
|
+
},
|
|
663
763
|
]);
|
|
664
764
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
665
765
|
"
|
|
@@ -670,7 +770,13 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
670
770
|
// Move the c anchor to col 0. d has no explicit column so it follows c.
|
|
671
771
|
apply([
|
|
672
772
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
673
|
-
{
|
|
773
|
+
{
|
|
774
|
+
type: "set-config",
|
|
775
|
+
cellId: c,
|
|
776
|
+
column: 0,
|
|
777
|
+
disabled: false,
|
|
778
|
+
hideCode: false,
|
|
779
|
+
},
|
|
674
780
|
]);
|
|
675
781
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
676
782
|
"
|
|
@@ -686,9 +792,27 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
686
792
|
const [a, b, c, d] = state.cellIds.inOrderIds;
|
|
687
793
|
apply([
|
|
688
794
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
689
|
-
{
|
|
690
|
-
|
|
691
|
-
|
|
795
|
+
{
|
|
796
|
+
type: "set-config",
|
|
797
|
+
cellId: a,
|
|
798
|
+
column: 0,
|
|
799
|
+
disabled: false,
|
|
800
|
+
hideCode: false,
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
type: "set-config",
|
|
804
|
+
cellId: c,
|
|
805
|
+
column: 1,
|
|
806
|
+
disabled: false,
|
|
807
|
+
hideCode: false,
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
type: "set-config",
|
|
811
|
+
cellId: d,
|
|
812
|
+
column: 1,
|
|
813
|
+
disabled: false,
|
|
814
|
+
hideCode: false,
|
|
815
|
+
},
|
|
692
816
|
]);
|
|
693
817
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
694
818
|
"
|
|
@@ -700,7 +824,13 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
700
824
|
// does NOT follow c.
|
|
701
825
|
apply([
|
|
702
826
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
703
|
-
{
|
|
827
|
+
{
|
|
828
|
+
type: "set-config",
|
|
829
|
+
cellId: c,
|
|
830
|
+
column: 0,
|
|
831
|
+
disabled: false,
|
|
832
|
+
hideCode: false,
|
|
833
|
+
},
|
|
704
834
|
]);
|
|
705
835
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
706
836
|
"
|
|
@@ -719,8 +849,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
719
849
|
const [a, b, c, d] = state.cellIds.inOrderIds;
|
|
720
850
|
apply([
|
|
721
851
|
// set-config appears FIRST in the transaction.
|
|
722
|
-
{
|
|
723
|
-
|
|
852
|
+
{
|
|
853
|
+
type: "set-config",
|
|
854
|
+
cellId: a,
|
|
855
|
+
column: 0,
|
|
856
|
+
disabled: false,
|
|
857
|
+
hideCode: false,
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
type: "set-config",
|
|
861
|
+
cellId: c,
|
|
862
|
+
column: 1,
|
|
863
|
+
disabled: false,
|
|
864
|
+
hideCode: false,
|
|
865
|
+
},
|
|
724
866
|
// reorder-cells comes afterwards.
|
|
725
867
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
726
868
|
]);
|
|
@@ -741,9 +883,21 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
741
883
|
setup("a", "b", "c", "d");
|
|
742
884
|
const [a, b, c, d] = state.cellIds.inOrderIds;
|
|
743
885
|
apply([
|
|
744
|
-
{
|
|
886
|
+
{
|
|
887
|
+
type: "set-config",
|
|
888
|
+
cellId: a,
|
|
889
|
+
column: 0,
|
|
890
|
+
disabled: false,
|
|
891
|
+
hideCode: false,
|
|
892
|
+
},
|
|
745
893
|
{ type: "set-code", cellId: a, code: "x = 1" },
|
|
746
|
-
{
|
|
894
|
+
{
|
|
895
|
+
type: "set-config",
|
|
896
|
+
cellId: c,
|
|
897
|
+
column: 1,
|
|
898
|
+
disabled: false,
|
|
899
|
+
hideCode: false,
|
|
900
|
+
},
|
|
747
901
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
748
902
|
{ type: "set-name", cellId: d, name: "last" },
|
|
749
903
|
]);
|
|
@@ -769,8 +923,20 @@ describe("applyTransactionChanges column rebuild", () => {
|
|
|
769
923
|
const [a, b, c, d] = state.cellIds.inOrderIds;
|
|
770
924
|
apply([
|
|
771
925
|
{ type: "reorder-cells", cellIds: [a, b, c, d] },
|
|
772
|
-
{
|
|
773
|
-
|
|
926
|
+
{
|
|
927
|
+
type: "set-config",
|
|
928
|
+
cellId: a,
|
|
929
|
+
column: 0,
|
|
930
|
+
disabled: false,
|
|
931
|
+
hideCode: false,
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
type: "set-config",
|
|
935
|
+
cellId: c,
|
|
936
|
+
column: 1,
|
|
937
|
+
disabled: false,
|
|
938
|
+
hideCode: false,
|
|
939
|
+
},
|
|
774
940
|
]);
|
|
775
941
|
expect(prettyColumns(state)).toMatchInlineSnapshot(`
|
|
776
942
|
"
|
|
@@ -46,6 +46,9 @@ vi.mock("@/core/codemirror/editing/commands", () => ({
|
|
|
46
46
|
foldAllBulk: vi.fn(),
|
|
47
47
|
unfoldAllBulk: vi.fn(),
|
|
48
48
|
}));
|
|
49
|
+
vi.mock("@/core/wasm/utils", () => ({
|
|
50
|
+
isWasm: vi.fn(() => false),
|
|
51
|
+
}));
|
|
49
52
|
vi.mock("../scrollCellIntoView", async (importOriginal) => {
|
|
50
53
|
const actual = await importOriginal();
|
|
51
54
|
return {
|
|
@@ -3428,3 +3431,99 @@ describe("createTracebackInfoAtom", () => {
|
|
|
3428
3431
|
expect(traceback).toBeUndefined();
|
|
3429
3432
|
});
|
|
3430
3433
|
});
|
|
3434
|
+
|
|
3435
|
+
describe("setCells snapshot preservation", () => {
|
|
3436
|
+
const CELL_A = cellId("A");
|
|
3437
|
+
const CELL_B = cellId("B");
|
|
3438
|
+
const newCells: CellData[] = [
|
|
3439
|
+
{
|
|
3440
|
+
id: CELL_A,
|
|
3441
|
+
name: "a",
|
|
3442
|
+
code: "1",
|
|
3443
|
+
edited: false,
|
|
3444
|
+
lastCodeRun: null,
|
|
3445
|
+
lastExecutionTime: null,
|
|
3446
|
+
config: { hide_code: false, disabled: false, column: null },
|
|
3447
|
+
serializedEditorState: null,
|
|
3448
|
+
},
|
|
3449
|
+
{
|
|
3450
|
+
id: CELL_B,
|
|
3451
|
+
name: "b",
|
|
3452
|
+
code: "2",
|
|
3453
|
+
edited: false,
|
|
3454
|
+
lastCodeRun: null,
|
|
3455
|
+
lastExecutionTime: null,
|
|
3456
|
+
config: { hide_code: false, disabled: false, column: null },
|
|
3457
|
+
serializedEditorState: null,
|
|
3458
|
+
},
|
|
3459
|
+
];
|
|
3460
|
+
|
|
3461
|
+
const hydratedState = () =>
|
|
3462
|
+
MockNotebook.notebookState({
|
|
3463
|
+
cellData: {
|
|
3464
|
+
[CELL_A]: { id: CELL_A, code: "1" },
|
|
3465
|
+
[CELL_B]: { id: CELL_B, code: "2" },
|
|
3466
|
+
},
|
|
3467
|
+
cellRuntime: {
|
|
3468
|
+
[CELL_A]: {
|
|
3469
|
+
output: {
|
|
3470
|
+
channel: "output",
|
|
3471
|
+
mimetype: "text/plain",
|
|
3472
|
+
data: "hydrated-A",
|
|
3473
|
+
timestamp: 0,
|
|
3474
|
+
},
|
|
3475
|
+
},
|
|
3476
|
+
[CELL_B]: {
|
|
3477
|
+
consoleOutputs: [
|
|
3478
|
+
{
|
|
3479
|
+
channel: "stdout",
|
|
3480
|
+
mimetype: "text/plain",
|
|
3481
|
+
data: "hydrated-B-stdout",
|
|
3482
|
+
timestamp: 0,
|
|
3483
|
+
},
|
|
3484
|
+
],
|
|
3485
|
+
},
|
|
3486
|
+
},
|
|
3487
|
+
});
|
|
3488
|
+
|
|
3489
|
+
beforeEach(async () => {
|
|
3490
|
+
const { isWasm } = await import("@/core/wasm/utils");
|
|
3491
|
+
vi.mocked(isWasm).mockReturnValue(true);
|
|
3492
|
+
});
|
|
3493
|
+
|
|
3494
|
+
it("preserves hydrated output in WASM", () => {
|
|
3495
|
+
const next = exportedForTesting.reducer(hydratedState(), {
|
|
3496
|
+
type: "setCells",
|
|
3497
|
+
payload: newCells,
|
|
3498
|
+
});
|
|
3499
|
+
|
|
3500
|
+
expect(next.cellRuntime[CELL_A].output).toMatchObject({
|
|
3501
|
+
data: "hydrated-A",
|
|
3502
|
+
});
|
|
3503
|
+
});
|
|
3504
|
+
|
|
3505
|
+
it("preserves console-only hydration in WASM", () => {
|
|
3506
|
+
const next = exportedForTesting.reducer(hydratedState(), {
|
|
3507
|
+
type: "setCells",
|
|
3508
|
+
payload: newCells,
|
|
3509
|
+
});
|
|
3510
|
+
|
|
3511
|
+
expect(next.cellRuntime[CELL_B].consoleOutputs).toHaveLength(1);
|
|
3512
|
+
expect(next.cellRuntime[CELL_B].consoleOutputs[0]).toMatchObject({
|
|
3513
|
+
data: "hydrated-B-stdout",
|
|
3514
|
+
});
|
|
3515
|
+
});
|
|
3516
|
+
|
|
3517
|
+
it("resets cells with no prior runtime even in WASM", () => {
|
|
3518
|
+
const empty = MockNotebook.notebookState({ cellData: {} });
|
|
3519
|
+
const next = exportedForTesting.reducer(empty, {
|
|
3520
|
+
type: "setCells",
|
|
3521
|
+
payload: newCells,
|
|
3522
|
+
});
|
|
3523
|
+
|
|
3524
|
+
expect(next.cellRuntime[CELL_A].output).toBeNull();
|
|
3525
|
+
expect(next.cellRuntime[CELL_A].consoleOutputs).toEqual([]);
|
|
3526
|
+
expect(next.cellRuntime[CELL_B].output).toBeNull();
|
|
3527
|
+
expect(next.cellRuntime[CELL_B].consoleOutputs).toEqual([]);
|
|
3528
|
+
});
|
|
3529
|
+
});
|
|
@@ -203,6 +203,8 @@ describe("toDocumentChanges", () => {
|
|
|
203
203
|
[
|
|
204
204
|
{
|
|
205
205
|
"cellId": "0",
|
|
206
|
+
"column": null,
|
|
207
|
+
"disabled": false,
|
|
206
208
|
"hideCode": true,
|
|
207
209
|
"type": "set-config",
|
|
208
210
|
},
|
|
@@ -246,6 +248,8 @@ describe("toDocumentChanges", () => {
|
|
|
246
248
|
{
|
|
247
249
|
"cellId": "1",
|
|
248
250
|
"column": 1,
|
|
251
|
+
"disabled": false,
|
|
252
|
+
"hideCode": false,
|
|
249
253
|
"type": "set-config",
|
|
250
254
|
},
|
|
251
255
|
{
|
|
@@ -273,11 +277,15 @@ describe("toDocumentChanges", () => {
|
|
|
273
277
|
{
|
|
274
278
|
"cellId": "1",
|
|
275
279
|
"column": 1,
|
|
280
|
+
"disabled": false,
|
|
281
|
+
"hideCode": false,
|
|
276
282
|
"type": "set-config",
|
|
277
283
|
},
|
|
278
284
|
{
|
|
279
285
|
"cellId": "2",
|
|
280
286
|
"column": 1,
|
|
287
|
+
"disabled": false,
|
|
288
|
+
"hideCode": false,
|
|
281
289
|
"type": "set-config",
|
|
282
290
|
},
|
|
283
291
|
{
|
|
@@ -310,11 +318,15 @@ describe("toDocumentChanges", () => {
|
|
|
310
318
|
{
|
|
311
319
|
"cellId": "1",
|
|
312
320
|
"column": 0,
|
|
321
|
+
"disabled": false,
|
|
322
|
+
"hideCode": false,
|
|
313
323
|
"type": "set-config",
|
|
314
324
|
},
|
|
315
325
|
{
|
|
316
326
|
"cellId": "2",
|
|
317
327
|
"column": 0,
|
|
328
|
+
"disabled": false,
|
|
329
|
+
"hideCode": false,
|
|
318
330
|
"type": "set-config",
|
|
319
331
|
},
|
|
320
332
|
{
|
|
@@ -358,6 +370,8 @@ describe("toDocumentChanges", () => {
|
|
|
358
370
|
{
|
|
359
371
|
"cellId": "1",
|
|
360
372
|
"column": 1,
|
|
373
|
+
"disabled": false,
|
|
374
|
+
"hideCode": false,
|
|
361
375
|
"type": "set-config",
|
|
362
376
|
},
|
|
363
377
|
{
|