@marimo-team/frontend 0.19.7-dev23 → 0.19.7-dev25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{CellStatus-DFhwmbo5.js → CellStatus-oBL2iale.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-Cosas-Z0.js → ConnectedDataExplorerComponent-ec_bSRbX.js} +1 -1
- package/dist/assets/{ErrorBoundary-BU1OKJ3L.js → ErrorBoundary-ChCiwl15.js} +1 -1
- package/dist/assets/{ImperativeModal-DstvzsTs.js → ImperativeModal-CUbWEBci.js} +1 -1
- package/dist/assets/{JsonOutput-Dmfgex9T.js → JsonOutput-BKP4rBIw.js} +3 -3
- package/dist/assets/{LazyAnyLanguageCodeMirror-ygeIsKeo.js → LazyAnyLanguageCodeMirror-yzHjsVJt.js} +2 -2
- package/dist/assets/{MarimoErrorOutput-eoDwRuKU.js → MarimoErrorOutput-cw9gEb4T.js} +1 -1
- package/dist/assets/{RenderHTML-DuJkj1GV.js → RenderHTML-Bgz4e362.js} +1 -1
- package/dist/assets/{add-cell-with-ai-COxBrLrH.js → add-cell-with-ai-DNbX7Ctg.js} +1 -1
- package/dist/assets/{add-database-form-BtP14Anj.js → add-database-form-CP39qGit.js} +1 -1
- package/dist/assets/{agent-panel-Baphp2Rh.js → agent-panel-Bak-DtIc.js} +1 -1
- package/dist/assets/{ai-model-dropdown-GvB-5iLY.js → ai-model-dropdown-Dpr0DUJN.js} +1 -1
- package/dist/assets/{alert-dialog-Bv1sALHm.js → alert-dialog-DwQffb13.js} +1 -1
- package/dist/assets/{any-language-editor-WGtuXPVf.js → any-language-editor-BMlwpEZ4.js} +1 -1
- package/dist/assets/{app-config-button-BK2508Jf.js → app-config-button-CAaYaq0L.js} +1 -1
- package/dist/assets/{button-B3uq-Cpf.js → button-YC1gW_kJ.js} +1 -1
- package/dist/assets/{cache-panel-DFXoPp-r.js → cache-panel-BHX9f5Bx.js} +1 -1
- package/dist/assets/{capabilities-CUpom6r4.js → capabilities-MM7JYRxj.js} +1 -1
- package/dist/assets/{capitalize-CXGTjPyK.js → capitalize-CkclHYWI.js} +1 -1
- package/dist/assets/{cell-editor-Cqw8VDah.js → cell-editor-B6jD1bv8.js} +10 -10
- package/dist/assets/{cell-link-BITMERKQ.js → cell-link-CyIWDVXR.js} +1 -1
- package/dist/assets/{cells-Cvo5AIrZ.js → cells-DRiwSVs0.js} +1 -1
- package/dist/assets/{chat-components-BV83l1rZ.js → chat-components-DDIZD9FU.js} +1 -1
- package/dist/assets/{chat-display-C4qhRyWq.js → chat-display-D-Wa-1Hv.js} +1 -1
- package/dist/assets/{chat-panel-BxxPae_R.js → chat-panel-RtFQiyUV.js} +1 -1
- package/dist/assets/{column-preview-BvwEAGt6.js → column-preview-C72fVZoP.js} +1 -1
- package/dist/assets/{command-BjWSp3sa.js → command-Bq3e85NA.js} +1 -1
- package/dist/assets/{command-palette-aT5upvTH.js → command-palette-D4NcN7PV.js} +1 -1
- package/dist/assets/{common-BLddv5HY.js → common-CeF2TOUZ.js} +1 -1
- package/dist/assets/{config-BgpK7vqH.js → config-CIrPQIbt.js} +1 -1
- package/dist/assets/{copy-r7i0SKI4.js → copy-Bv2DBpIS.js} +1 -1
- package/dist/assets/{copy-icon-wZr2McVB.js → copy-icon-BhONVREY.js} +1 -1
- package/dist/assets/{createReducer-Cki97cx5.js → createReducer-Dnna-AUO.js} +1 -1
- package/dist/assets/{datasource-D2hNaG_n.js → datasource-AZ3l2P48.js} +1 -1
- package/dist/assets/{dates-CxJmszXT.js → dates-Dhn1r-h6.js} +1 -1
- package/dist/assets/{dependency-graph-panel-CBiKFUBG.js → dependency-graph-panel-i3yTswTN.js} +1 -1
- package/dist/assets/{dialog-C5Pa_iIq.js → dialog-CxGKN4C_.js} +1 -1
- package/dist/assets/{dist-R0oOvu5B.js → dist-CdxIjAOP.js} +1 -1
- package/dist/assets/{documentation-panel-ChkvmAB1.js → documentation-panel-J2fwLjEP.js} +1 -1
- package/dist/assets/download-Y3BpaOoI.js +6 -0
- package/dist/assets/{edit-page-BfA_Lg2x.js → edit-page-Bpl6BN5G.js} +6 -6
- package/dist/assets/{error-banner-BWJsOpnc.js → error-banner-DUzsIXtq.js} +1 -1
- package/dist/assets/{error-panel-Bnhv5zxn.js → error-panel-Cpfr8TZw.js} +1 -1
- package/dist/assets/{field-BN2j4cag.js → field-BEg1eC0P.js} +1 -1
- package/dist/assets/{file-explorer-panel-CkOMaMbq.js → file-explorer-panel-DsMwvQX7.js} +1 -1
- package/dist/assets/{floating-outline-CxfziveS.js → floating-outline-yvPiOGQ2.js} +1 -1
- package/dist/assets/{focus-BeWVOW9Q.js → focus-B7xu7kpl.js} +1 -1
- package/dist/assets/{form-DazVYGCT.js → form-BpwI8bBX.js} +1 -1
- package/dist/assets/{formats-BBDL2N4i.js → formats-W1SWxSE3.js} +1 -1
- package/dist/assets/{glide-data-editor-DEwgx2xp.js → glide-data-editor-DVw6MlCk.js} +1 -1
- package/dist/assets/{globals-uEPg-4pq.js → globals-BW23ny3Q.js} +1 -1
- package/dist/assets/{home-page-Dtcd7Trh.js → home-page-C-JIKt-2.js} +1 -1
- package/dist/assets/hooks-2c2seyHG.js +1 -0
- package/dist/assets/hotkeys-BHHWjLlp.js +1 -0
- package/dist/assets/{html-to-image-CJgqxZci.js → html-to-image-Cy_LYuWW.js} +1 -1
- package/dist/assets/{index-DCjsZDGq.js → index-C4si8YAb.js} +21 -26
- package/dist/assets/index-DHsXOI_M.css +2 -0
- package/dist/assets/{input-BeGfEf2S.js → input-pAun1m1X.js} +1 -1
- package/dist/assets/{kiosk-mode-Djm3JPwk.js → kiosk-mode-D9jdUD5P.js} +1 -1
- package/dist/assets/{label-C_OuzPjQ.js → label-Be1daUcS.js} +1 -1
- package/dist/assets/{layout-BkGjQBnQ.js → layout-BjIcxFO0.js} +4 -4
- package/dist/assets/links-C-GGaW8R.js +1 -0
- package/dist/assets/{logs-panel-BsnCP3we.js → logs-panel-XVSOzGFv.js} +1 -1
- package/dist/assets/{maps-vcWR7nnr.js → maps-t9yNKYA8.js} +1 -1
- package/dist/assets/{markdown-renderer-CoQm4UxN.js → markdown-renderer-BM4a9QeZ.js} +1 -1
- package/dist/assets/{mermaid-R2vBM-JH.js → mermaid-BG5ill_a.js} +1 -1
- package/dist/assets/{mode-DjraKyN2.js → mode-BD6zDBBd.js} +1 -1
- package/dist/assets/{multi-map-Cwq--tzY.js → multi-map-C8GlnP-4.js} +1 -1
- package/dist/assets/{name-cell-input-CHmzPoeN.js → name-cell-input-CGevX71g.js} +1 -1
- package/dist/assets/{numbers-CSY3JIgn.js → numbers-iQunIAXf.js} +1 -1
- package/dist/assets/{outline-panel-DMECjI9i.js → outline-panel-BgZXYbEO.js} +1 -1
- package/dist/assets/{packages-panel-CbXV6Rc8.js → packages-panel-8NDUaEZw.js} +1 -1
- package/dist/assets/{panels-B55q0DEo.js → panels-05G4QYfq.js} +1 -1
- package/dist/assets/{process-output-CwcoTocd.js → process-output-nNOt7QtH.js} +1 -1
- package/dist/assets/{readonly-python-code-BlVsu50E.js → readonly-python-code-CfLdThzF.js} +1 -1
- package/dist/assets/{renderShortcut-Dyrbz79Y.js → renderShortcut-DHc-p-_c.js} +1 -1
- package/dist/assets/{run-page-6DKviU71.js → run-page-DvWw2rQu.js} +1 -1
- package/dist/assets/{runs-CAvk6jVz.js → runs-bjsj1D88.js} +1 -1
- package/dist/assets/{scratchpad-panel-CM5InA2G.js → scratchpad-panel-Bzreyj8q.js} +1 -1
- package/dist/assets/{secrets-panel-XDvrD2PC.js → secrets-panel-Br6CcsOE.js} +1 -1
- package/dist/assets/{select-UFziUNxL.js → select-V5IdpNiR.js} +1 -1
- package/dist/assets/{session-panel-CRStSDDj.js → session-panel-CxCUFR_x.js} +1 -1
- package/dist/assets/{share-CKfNi8fD.js → share-CbPtIlnM.js} +1 -1
- package/dist/assets/{slides-component-0GonPC6Y.js → slides-component-DP2pxhDh.js} +1 -1
- package/dist/assets/{snippets-panel-Db-biIgP.js → snippets-panel-BeqbqiKB.js} +1 -1
- package/dist/assets/{spec-DJ3YTCel.js → spec-BSxN05D8.js} +1 -1
- package/dist/assets/{state-D-CqcbQE.js → state-D7LZMIOW.js} +1 -1
- package/dist/assets/{state-CS48Wh7M.js → state-DnUQ1uxR.js} +1 -1
- package/dist/assets/{switch-Di5kBaS8.js → switch-Cx8dJhf6.js} +1 -1
- package/dist/assets/{terminal-nu6YfkVm.js → terminal-DNwT6UrR.js} +1 -1
- package/dist/assets/{textarea-hNyWE2r_.js → textarea-DellDgP4.js} +1 -1
- package/dist/assets/{tooltip-CE4l3v3B.js → tooltip-BGrCWNss.js} +1 -1
- package/dist/assets/{tracing-CDNRUjb9.js → tracing-7U4WTsN0.js} +1 -1
- package/dist/assets/{tracing-panel-CHVKa-9o.js → tracing-panel-BPW1q7K3.js} +2 -2
- package/dist/assets/{type-D8l_U05h.js → type-DUK-1jKc.js} +1 -1
- package/dist/assets/{types-DWpF5HiT.js → types-D5X7ikSD.js} +1 -1
- package/dist/assets/{useAddCell-CklpKCq2.js → useAddCell-bMoxoWAg.js} +1 -1
- package/dist/assets/{useBoolean-BE72e3yb.js → useBoolean-B1Xeh6vA.js} +1 -1
- package/dist/assets/{useCellActionButton-CQQ8dBy_.js → useCellActionButton-0MDUWMcl.js} +1 -1
- package/dist/assets/{useDeleteCell-BRWEDSc9.js → useDeleteCell-BUAQb9OH.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-_ibASMD1.js → useDependencyPanelTab-odtlfdG2.js} +1 -1
- package/dist/assets/{useIframeCapabilities-BVYqWHmA.js → useIframeCapabilities-DuIDx9mD.js} +1 -1
- package/dist/assets/{useInstallPackage-Dxl_p6oW.js → useInstallPackage-Bdnnp5fe.js} +1 -1
- package/dist/assets/{useLifecycle-DvpL8DUJ.js → useLifecycle-ChNbzbYY.js} +1 -1
- package/dist/assets/useNotebookActions-CNWP5yqL.js +1 -0
- package/dist/assets/{useRunCells-jbEa8WGV.js → useRunCells-DyBzMbHe.js} +1 -1
- package/dist/assets/{useSplitCell-CdjW9REr.js → useSplitCell-CyFavQ2l.js} +1 -1
- package/dist/assets/{useTheme-CuyH5VNX.js → useTheme-DUdVAZI8.js} +1 -1
- package/dist/assets/{utilities.esm-eBoXu7lR.js → utilities.esm-j_F9mYkM.js} +1 -1
- package/dist/assets/{utils-CSDCHxwI.js → utils-DXvhzCGS.js} +1 -1
- package/dist/assets/{vega-component-B3_9VVhH.js → vega-component-Dd3MCYZO.js} +1 -1
- package/dist/assets/{write-secret-modal-DfRIeQB5.js → write-secret-modal-CpmU5gbF.js} +1 -1
- package/dist/index.html +67 -67
- package/package.json +1 -1
- package/src/components/editor/actions/useNotebookActions.tsx +5 -3
- package/src/components/editor/header/filename-form.tsx +15 -2
- package/src/components/editor/navigation/__tests__/navigation.test.ts +2 -0
- package/src/components/ui/progress.tsx +22 -5
- package/src/core/export/__tests__/hooks.test.ts +42 -19
- package/src/core/export/hooks.ts +33 -32
- package/src/core/saving/save-component.tsx +1 -0
- package/src/utils/__tests__/download.test.tsx +6 -4
- package/src/utils/__tests__/objects.test.ts +263 -0
- package/src/utils/__tests__/progress.test.ts +156 -0
- package/src/utils/download.ts +7 -2
- package/src/utils/objects.ts +3 -0
- package/src/utils/progress.ts +61 -0
- package/src/utils/toast-progress.tsx +41 -0
- package/dist/assets/download-kUMZIq8-.js +0 -1
- package/dist/assets/hooks-DxXRX-38.js +0 -1
- package/dist/assets/hotkeys-DghjL7BQ.js +0 -1
- package/dist/assets/index-CodxHczV.css +0 -2
- package/dist/assets/links-CUKo4afc.js +0 -1
- package/dist/assets/useNotebookActions-REoVp8xc.js +0 -1
package/dist/index.html
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
67
67
|
<!-- /TODO -->
|
|
68
68
|
<title>{{ title }}</title>
|
|
69
|
-
<script type="module" crossorigin src="./assets/index-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-C4si8YAb.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-DItdS47A.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/clsx-D8GwTfvk.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/cn-BKtXLv3a.js">
|
|
@@ -75,16 +75,16 @@
|
|
|
75
75
|
<link rel="modulepreload" crossorigin href="./assets/compiler-runtime-DeeZ7FnK.js">
|
|
76
76
|
<link rel="modulepreload" crossorigin href="./assets/jsx-runtime-ZmTK25f3.js">
|
|
77
77
|
<link rel="modulepreload" crossorigin href="./assets/badge-Ce8wRjuQ.js">
|
|
78
|
-
<link rel="modulepreload" crossorigin href="./assets/hotkeys-
|
|
78
|
+
<link rel="modulepreload" crossorigin href="./assets/hotkeys-BHHWjLlp.js">
|
|
79
79
|
<link rel="modulepreload" crossorigin href="./assets/useEventListener-DIUKKfEy.js">
|
|
80
|
-
<link rel="modulepreload" crossorigin href="./assets/button-
|
|
80
|
+
<link rel="modulepreload" crossorigin href="./assets/button-YC1gW_kJ.js">
|
|
81
81
|
<link rel="modulepreload" crossorigin href="./assets/react-dom-C9fstfnp.js">
|
|
82
82
|
<link rel="modulepreload" crossorigin href="./assets/Combination-CMPwuAmi.js">
|
|
83
83
|
<link rel="modulepreload" crossorigin href="./assets/menu-items-CJhvWPOk.js">
|
|
84
84
|
<link rel="modulepreload" crossorigin href="./assets/dist-uzvC4uAK.js">
|
|
85
85
|
<link rel="modulepreload" crossorigin href="./assets/createLucideIcon-CnW3RofX.js">
|
|
86
86
|
<link rel="modulepreload" crossorigin href="./assets/check-DdfN0k2d.js">
|
|
87
|
-
<link rel="modulepreload" crossorigin href="./assets/select-
|
|
87
|
+
<link rel="modulepreload" crossorigin href="./assets/select-V5IdpNiR.js">
|
|
88
88
|
<link rel="modulepreload" crossorigin href="./assets/tooltip-CEc2ajau.js">
|
|
89
89
|
<link rel="modulepreload" crossorigin href="./assets/use-toast-rmUWldD_.js">
|
|
90
90
|
<link rel="modulepreload" crossorigin href="./assets/_Uint8Array-BGESiCQL.js">
|
|
@@ -94,22 +94,22 @@
|
|
|
94
94
|
<link rel="modulepreload" crossorigin href="./assets/_baseFor-Duhs3RiJ.js">
|
|
95
95
|
<link rel="modulepreload" crossorigin href="./assets/merge-BBX6ug-N.js">
|
|
96
96
|
<link rel="modulepreload" crossorigin href="./assets/zod-Cg4WLWh2.js">
|
|
97
|
-
<link rel="modulepreload" crossorigin href="./assets/utils-
|
|
97
|
+
<link rel="modulepreload" crossorigin href="./assets/utils-DXvhzCGS.js">
|
|
98
98
|
<link rel="modulepreload" crossorigin href="./assets/constants-B6Cb__3x.js">
|
|
99
99
|
<link rel="modulepreload" crossorigin href="./assets/Deferred-CrO5-0RA.js">
|
|
100
|
-
<link rel="modulepreload" crossorigin href="./assets/config-
|
|
100
|
+
<link rel="modulepreload" crossorigin href="./assets/config-CIrPQIbt.js">
|
|
101
101
|
<link rel="modulepreload" crossorigin href="./assets/uuid-DercMavo.js">
|
|
102
102
|
<link rel="modulepreload" crossorigin href="./assets/DeferredRequestRegistry-CO2AyNfd.js">
|
|
103
103
|
<link rel="modulepreload" crossorigin href="./assets/requests-BsVD4CdD.js">
|
|
104
104
|
<link rel="modulepreload" crossorigin href="./assets/isSymbol-BGkTcW3U.js">
|
|
105
105
|
<link rel="modulepreload" crossorigin href="./assets/toString-DlRqgfqz.js">
|
|
106
106
|
<link rel="modulepreload" crossorigin href="./assets/_hasUnicode-CWqKLxBC.js">
|
|
107
|
-
<link rel="modulepreload" crossorigin href="./assets/useLifecycle-
|
|
107
|
+
<link rel="modulepreload" crossorigin href="./assets/useLifecycle-ChNbzbYY.js">
|
|
108
108
|
<link rel="modulepreload" crossorigin href="./assets/useNonce-_Aax6sXd.js">
|
|
109
|
-
<link rel="modulepreload" crossorigin href="./assets/useTheme-
|
|
109
|
+
<link rel="modulepreload" crossorigin href="./assets/useTheme-DUdVAZI8.js">
|
|
110
110
|
<link rel="modulepreload" crossorigin href="./assets/once-Bul8mtFs.js">
|
|
111
|
-
<link rel="modulepreload" crossorigin href="./assets/capabilities-
|
|
112
|
-
<link rel="modulepreload" crossorigin href="./assets/createReducer-
|
|
111
|
+
<link rel="modulepreload" crossorigin href="./assets/capabilities-MM7JYRxj.js">
|
|
112
|
+
<link rel="modulepreload" crossorigin href="./assets/createReducer-Dnna-AUO.js">
|
|
113
113
|
<link rel="modulepreload" crossorigin href="./assets/dist-DBwNzi3C.js">
|
|
114
114
|
<link rel="modulepreload" crossorigin href="./assets/dist-ChS0Dc_R.js">
|
|
115
115
|
<link rel="modulepreload" crossorigin href="./assets/dist-CtsanegT.js">
|
|
@@ -123,119 +123,119 @@
|
|
|
123
123
|
<link rel="modulepreload" crossorigin href="./assets/toDate-CgbKQM5E.js">
|
|
124
124
|
<link rel="modulepreload" crossorigin href="./assets/cjs-CH5Rj0g8.js">
|
|
125
125
|
<link rel="modulepreload" crossorigin href="./assets/_arrayReduce-TT0iOGKY.js">
|
|
126
|
-
<link rel="modulepreload" crossorigin href="./assets/type-
|
|
126
|
+
<link rel="modulepreload" crossorigin href="./assets/type-DUK-1jKc.js">
|
|
127
127
|
<link rel="modulepreload" crossorigin href="./assets/_baseProperty-NKyJO2oh.js">
|
|
128
128
|
<link rel="modulepreload" crossorigin href="./assets/now-6sUe0ZdD.js">
|
|
129
129
|
<link rel="modulepreload" crossorigin href="./assets/debounce-B3mjKxHe.js">
|
|
130
130
|
<link rel="modulepreload" crossorigin href="./assets/toInteger-CDcO32Gx.js">
|
|
131
131
|
<link rel="modulepreload" crossorigin href="./assets/database-zap-B9y7063w.js">
|
|
132
132
|
<link rel="modulepreload" crossorigin href="./assets/main-U5Goe76G.js">
|
|
133
|
-
<link rel="modulepreload" crossorigin href="./assets/cells-
|
|
133
|
+
<link rel="modulepreload" crossorigin href="./assets/cells-DRiwSVs0.js">
|
|
134
134
|
<link rel="modulepreload" crossorigin href="./assets/spinner-DaIKav-i.js">
|
|
135
135
|
<link rel="modulepreload" crossorigin href="./assets/chevron-right-DwagBitu.js">
|
|
136
136
|
<link rel="modulepreload" crossorigin href="./assets/dropdown-menu-df9T83C0.js">
|
|
137
137
|
<link rel="modulepreload" crossorigin href="./assets/kbd-C3JY7O_u.js">
|
|
138
|
-
<link rel="modulepreload" crossorigin href="./assets/renderShortcut-
|
|
139
|
-
<link rel="modulepreload" crossorigin href="./assets/multi-map-
|
|
138
|
+
<link rel="modulepreload" crossorigin href="./assets/renderShortcut-DHc-p-_c.js">
|
|
139
|
+
<link rel="modulepreload" crossorigin href="./assets/multi-map-C8GlnP-4.js">
|
|
140
140
|
<link rel="modulepreload" crossorigin href="./assets/alert-BrGyZf9c.js">
|
|
141
|
-
<link rel="modulepreload" crossorigin href="./assets/alert-dialog-
|
|
142
|
-
<link rel="modulepreload" crossorigin href="./assets/dialog-
|
|
143
|
-
<link rel="modulepreload" crossorigin href="./assets/dist-
|
|
144
|
-
<link rel="modulepreload" crossorigin href="./assets/label-
|
|
141
|
+
<link rel="modulepreload" crossorigin href="./assets/alert-dialog-DwQffb13.js">
|
|
142
|
+
<link rel="modulepreload" crossorigin href="./assets/dialog-CxGKN4C_.js">
|
|
143
|
+
<link rel="modulepreload" crossorigin href="./assets/dist-CdxIjAOP.js">
|
|
144
|
+
<link rel="modulepreload" crossorigin href="./assets/label-Be1daUcS.js">
|
|
145
145
|
<link rel="modulepreload" crossorigin href="./assets/useDebounce-D5NcotGm.js">
|
|
146
|
-
<link rel="modulepreload" crossorigin href="./assets/textarea-
|
|
147
|
-
<link rel="modulepreload" crossorigin href="./assets/numbers-
|
|
146
|
+
<link rel="modulepreload" crossorigin href="./assets/textarea-DellDgP4.js">
|
|
147
|
+
<link rel="modulepreload" crossorigin href="./assets/numbers-iQunIAXf.js">
|
|
148
148
|
<link rel="modulepreload" crossorigin href="./assets/SSRProvider-CEHRCdjA.js">
|
|
149
149
|
<link rel="modulepreload" crossorigin href="./assets/context-JwD-oSsl.js">
|
|
150
150
|
<link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-c6GXymzg.js">
|
|
151
151
|
<link rel="modulepreload" crossorigin href="./assets/usePress-Bup4EGrp.js">
|
|
152
|
-
<link rel="modulepreload" crossorigin href="./assets/input-
|
|
152
|
+
<link rel="modulepreload" crossorigin href="./assets/input-pAun1m1X.js">
|
|
153
153
|
<link rel="modulepreload" crossorigin href="./assets/links-DHZUhGz-.js">
|
|
154
154
|
<link rel="modulepreload" crossorigin href="./assets/popover-D16ZremR.js">
|
|
155
|
-
<link rel="modulepreload" crossorigin href="./assets/switch-
|
|
155
|
+
<link rel="modulepreload" crossorigin href="./assets/switch-Cx8dJhf6.js">
|
|
156
156
|
<link rel="modulepreload" crossorigin href="./assets/table-BSASHvkq.js">
|
|
157
|
-
<link rel="modulepreload" crossorigin href="./assets/mode-
|
|
157
|
+
<link rel="modulepreload" crossorigin href="./assets/mode-BD6zDBBd.js">
|
|
158
158
|
<link rel="modulepreload" crossorigin href="./assets/useAsyncData-C4XRy1BE.js">
|
|
159
159
|
<link rel="modulepreload" crossorigin href="./assets/errors-2SszdW9t.js">
|
|
160
|
-
<link rel="modulepreload" crossorigin href="./assets/error-banner-
|
|
161
|
-
<link rel="modulepreload" crossorigin href="./assets/copy-
|
|
160
|
+
<link rel="modulepreload" crossorigin href="./assets/error-banner-DUzsIXtq.js">
|
|
161
|
+
<link rel="modulepreload" crossorigin href="./assets/copy-Bv2DBpIS.js">
|
|
162
162
|
<link rel="modulepreload" crossorigin href="./assets/memoize-BCOZVFBt.js">
|
|
163
163
|
<link rel="modulepreload" crossorigin href="./assets/get-6uJrSKbw.js">
|
|
164
|
-
<link rel="modulepreload" crossorigin href="./assets/capitalize-
|
|
164
|
+
<link rel="modulepreload" crossorigin href="./assets/capitalize-CkclHYWI.js">
|
|
165
165
|
<link rel="modulepreload" crossorigin href="./assets/copy-CQ15EONK.js">
|
|
166
166
|
<link rel="modulepreload" crossorigin href="./assets/plus-BD5o34_i.js">
|
|
167
167
|
<link rel="modulepreload" crossorigin href="./assets/refresh-cw-CQd-1kjx.js">
|
|
168
168
|
<link rel="modulepreload" crossorigin href="./assets/trash-2-CyqGun26.js">
|
|
169
169
|
<link rel="modulepreload" crossorigin href="./assets/triangle-alert-B65rDESJ.js">
|
|
170
|
-
<link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-
|
|
170
|
+
<link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-Dpr0DUJN.js">
|
|
171
171
|
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-D_rSvXvJ.js">
|
|
172
172
|
<link rel="modulepreload" crossorigin href="./assets/precisionRound-BMPhtTJQ.js">
|
|
173
173
|
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-C92Rrpmf.js">
|
|
174
174
|
<link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-CRZ52CKf.js">
|
|
175
|
-
<link rel="modulepreload" crossorigin href="./assets/tooltip-
|
|
176
|
-
<link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-
|
|
177
|
-
<link rel="modulepreload" crossorigin href="./assets/useInstallPackage-
|
|
178
|
-
<link rel="modulepreload" crossorigin href="./assets/ImperativeModal-
|
|
179
|
-
<link rel="modulepreload" crossorigin href="./assets/cell-link-
|
|
180
|
-
<link rel="modulepreload" crossorigin href="./assets/datasource-
|
|
181
|
-
<link rel="modulepreload" crossorigin href="./assets/state-
|
|
182
|
-
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-
|
|
183
|
-
<link rel="modulepreload" crossorigin href="./assets/copy-icon-
|
|
184
|
-
<link rel="modulepreload" crossorigin href="./assets/html-to-image-
|
|
185
|
-
<link rel="modulepreload" crossorigin href="./assets/focus-
|
|
186
|
-
<link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-
|
|
175
|
+
<link rel="modulepreload" crossorigin href="./assets/tooltip-BGrCWNss.js">
|
|
176
|
+
<link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-ChCiwl15.js">
|
|
177
|
+
<link rel="modulepreload" crossorigin href="./assets/useInstallPackage-Bdnnp5fe.js">
|
|
178
|
+
<link rel="modulepreload" crossorigin href="./assets/ImperativeModal-CUbWEBci.js">
|
|
179
|
+
<link rel="modulepreload" crossorigin href="./assets/cell-link-CyIWDVXR.js">
|
|
180
|
+
<link rel="modulepreload" crossorigin href="./assets/datasource-AZ3l2P48.js">
|
|
181
|
+
<link rel="modulepreload" crossorigin href="./assets/state-DnUQ1uxR.js">
|
|
182
|
+
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-cw9gEb4T.js">
|
|
183
|
+
<link rel="modulepreload" crossorigin href="./assets/copy-icon-BhONVREY.js">
|
|
184
|
+
<link rel="modulepreload" crossorigin href="./assets/html-to-image-Cy_LYuWW.js">
|
|
185
|
+
<link rel="modulepreload" crossorigin href="./assets/focus-B7xu7kpl.js">
|
|
186
|
+
<link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-yzHjsVJt.js">
|
|
187
187
|
<link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-CVUXBqX6.js">
|
|
188
188
|
<link rel="modulepreload" crossorigin href="./assets/katex-Dc8yG8NU.js">
|
|
189
|
-
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-
|
|
190
|
-
<link rel="modulepreload" crossorigin href="./assets/command-
|
|
191
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
189
|
+
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-BM4a9QeZ.js">
|
|
190
|
+
<link rel="modulepreload" crossorigin href="./assets/command-Bq3e85NA.js">
|
|
191
|
+
<link rel="modulepreload" crossorigin href="./assets/download-Y3BpaOoI.js">
|
|
192
|
+
<link rel="modulepreload" crossorigin href="./assets/useRunCells-DyBzMbHe.js">
|
|
192
193
|
<link rel="modulepreload" crossorigin href="./assets/purify.es-DNVQZNFu.js">
|
|
193
|
-
<link rel="modulepreload" crossorigin href="./assets/RenderHTML-
|
|
194
|
-
<link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-
|
|
195
|
-
<link rel="modulepreload" crossorigin href="./assets/formats-
|
|
194
|
+
<link rel="modulepreload" crossorigin href="./assets/RenderHTML-Bgz4e362.js">
|
|
195
|
+
<link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-DuIDx9mD.js">
|
|
196
|
+
<link rel="modulepreload" crossorigin href="./assets/formats-W1SWxSE3.js">
|
|
196
197
|
<link rel="modulepreload" crossorigin href="./assets/en-US-pRRbZZHE.js">
|
|
197
198
|
<link rel="modulepreload" crossorigin href="./assets/isValid-DcYggVWP.js">
|
|
198
|
-
<link rel="modulepreload" crossorigin href="./assets/dates-
|
|
199
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
200
|
-
<link rel="modulepreload" crossorigin href="./assets/maps-vcWR7nnr.js">
|
|
199
|
+
<link rel="modulepreload" crossorigin href="./assets/dates-Dhn1r-h6.js">
|
|
200
|
+
<link rel="modulepreload" crossorigin href="./assets/maps-t9yNKYA8.js">
|
|
201
201
|
<link rel="modulepreload" crossorigin href="./assets/extends-B2LJnKU3.js">
|
|
202
202
|
<link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-DD4AwVTU.js">
|
|
203
203
|
<link rel="modulepreload" crossorigin href="./assets/useDateFormatter-CS4kbWl2.js">
|
|
204
204
|
<link rel="modulepreload" crossorigin href="./assets/range-D2UKkEg-.js">
|
|
205
205
|
<link rel="modulepreload" crossorigin href="./assets/table-DZR6ewbN.js">
|
|
206
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
206
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-BKP4rBIw.js">
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/file-Cs1JbsV6.js">
|
|
208
208
|
<link rel="modulepreload" crossorigin href="./assets/play-BPIh-ZEU.js">
|
|
209
|
-
<link rel="modulepreload" crossorigin href="./assets/chat-components-
|
|
209
|
+
<link rel="modulepreload" crossorigin href="./assets/chat-components-DDIZD9FU.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="./assets/isEmpty-CgX_-6Mt.js">
|
|
211
|
-
<link rel="modulepreload" crossorigin href="./assets/chat-display-
|
|
212
|
-
<link rel="modulepreload" crossorigin href="./assets/useDeleteCell-
|
|
211
|
+
<link rel="modulepreload" crossorigin href="./assets/chat-display-D-Wa-1Hv.js">
|
|
212
|
+
<link rel="modulepreload" crossorigin href="./assets/useDeleteCell-BUAQb9OH.js">
|
|
213
213
|
<link rel="modulepreload" crossorigin href="./assets/icons-BhEXrzsb.js">
|
|
214
|
-
<link rel="modulepreload" crossorigin href="./assets/process-output-
|
|
214
|
+
<link rel="modulepreload" crossorigin href="./assets/process-output-nNOt7QtH.js">
|
|
215
215
|
<link rel="modulepreload" crossorigin href="./assets/blob-CuXvdYPX.js">
|
|
216
216
|
<link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-DaPAPabU.js">
|
|
217
217
|
<link rel="modulepreload" crossorigin href="./assets/esm-DpMp6qko.js">
|
|
218
|
-
<link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-
|
|
218
|
+
<link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-DNbX7Ctg.js">
|
|
219
219
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-W42b2ZIs.js">
|
|
220
220
|
<link rel="modulepreload" crossorigin href="./assets/square-function-CqXXKtIq.js">
|
|
221
|
-
<link rel="modulepreload" crossorigin href="./assets/spec-
|
|
222
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
221
|
+
<link rel="modulepreload" crossorigin href="./assets/spec-BSxN05D8.js">
|
|
222
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-C72fVZoP.js">
|
|
223
223
|
<link rel="modulepreload" crossorigin href="./assets/toggle-jWKnIArU.js">
|
|
224
|
-
<link rel="modulepreload" crossorigin href="./assets/globals-
|
|
225
|
-
<link rel="modulepreload" crossorigin href="./assets/share-
|
|
224
|
+
<link rel="modulepreload" crossorigin href="./assets/globals-BW23ny3Q.js">
|
|
225
|
+
<link rel="modulepreload" crossorigin href="./assets/share-CbPtIlnM.js">
|
|
226
226
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-5Rdwpmr3.js">
|
|
227
227
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Ctj_10o2.js">
|
|
228
|
-
<link rel="modulepreload" crossorigin href="./assets/utilities.esm-
|
|
229
|
-
<link rel="modulepreload" crossorigin href="./assets/floating-outline-
|
|
230
|
-
<link rel="modulepreload" crossorigin href="./assets/useAddCell-
|
|
228
|
+
<link rel="modulepreload" crossorigin href="./assets/utilities.esm-j_F9mYkM.js">
|
|
229
|
+
<link rel="modulepreload" crossorigin href="./assets/floating-outline-yvPiOGQ2.js">
|
|
230
|
+
<link rel="modulepreload" crossorigin href="./assets/useAddCell-bMoxoWAg.js">
|
|
231
231
|
<link rel="modulepreload" crossorigin href="./assets/eye-off-BhExYOph.js">
|
|
232
|
-
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-
|
|
232
|
+
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-CfLdThzF.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="./assets/file-video-camera-DW3v07j2.js">
|
|
234
|
-
<link rel="modulepreload" crossorigin href="./assets/types-
|
|
234
|
+
<link rel="modulepreload" crossorigin href="./assets/types-D5X7ikSD.js">
|
|
235
235
|
<link rel="modulepreload" crossorigin href="./assets/refresh-ccw-DLEiQDS3.js">
|
|
236
|
-
<link rel="modulepreload" crossorigin href="./assets/form-
|
|
237
|
-
<link rel="modulepreload" crossorigin href="./assets/field-
|
|
238
|
-
<link rel="modulepreload" crossorigin href="./assets/useBoolean-
|
|
236
|
+
<link rel="modulepreload" crossorigin href="./assets/form-BpwI8bBX.js">
|
|
237
|
+
<link rel="modulepreload" crossorigin href="./assets/field-BEg1eC0P.js">
|
|
238
|
+
<link rel="modulepreload" crossorigin href="./assets/useBoolean-B1Xeh6vA.js">
|
|
239
239
|
<link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-ZPd9PxYl.js">
|
|
240
240
|
<link rel="modulepreload" crossorigin href="./assets/types-CS34eOZi.js">
|
|
241
241
|
<link rel="modulepreload" crossorigin href="./assets/prop-types-BiQYf0aU.js">
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
<link rel="stylesheet" crossorigin href="./assets/cells-jmgGt1lS.css">
|
|
254
254
|
<link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DdDKmWlR.css">
|
|
255
255
|
<link rel="stylesheet" crossorigin href="./assets/JsonOutput-B7vuddcd.css">
|
|
256
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
256
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DHsXOI_M.css">
|
|
257
257
|
</head>
|
|
258
258
|
<body>
|
|
259
259
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -77,6 +77,7 @@ import {
|
|
|
77
77
|
} from "@/utils/download";
|
|
78
78
|
import { Filenames } from "@/utils/filenames";
|
|
79
79
|
import { Objects } from "@/utils/objects";
|
|
80
|
+
import type { ProgressState } from "@/utils/progress";
|
|
80
81
|
import { newNotebookURL } from "@/utils/urls";
|
|
81
82
|
import { useRunAllCells } from "../cell/useRunCells";
|
|
82
83
|
import { useChromeActions, useChromeState } from "../chrome/state";
|
|
@@ -238,11 +239,12 @@ export function useNotebookActions() {
|
|
|
238
239
|
return;
|
|
239
240
|
}
|
|
240
241
|
|
|
241
|
-
const downloadPDF = async () => {
|
|
242
|
-
await updateCellOutputsWithScreenshots(
|
|
242
|
+
const downloadPDF = async (progress: ProgressState) => {
|
|
243
|
+
await updateCellOutputsWithScreenshots({
|
|
244
|
+
progress,
|
|
243
245
|
takeScreenshots,
|
|
244
246
|
updateCellOutputs,
|
|
245
|
-
);
|
|
247
|
+
});
|
|
246
248
|
await downloadAsPDF({
|
|
247
249
|
filename: filename,
|
|
248
250
|
webpdf: false,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import type { JSX } from "react";
|
|
4
4
|
import { FilenameInput } from "@/components/editor/header/filename-input";
|
|
5
5
|
import { useUpdateFilename } from "@/core/saving/filename";
|
|
6
|
+
import { useSaveNotebook } from "@/core/saving/save-component";
|
|
6
7
|
import { Paths } from "@/utils/paths";
|
|
7
8
|
|
|
8
9
|
export const FilenameForm = ({
|
|
@@ -10,14 +11,26 @@ export const FilenameForm = ({
|
|
|
10
11
|
}: {
|
|
11
12
|
filename: string | null;
|
|
12
13
|
}): JSX.Element => {
|
|
13
|
-
const
|
|
14
|
+
const updateFilename = useUpdateFilename();
|
|
15
|
+
const { saveNotebook } = useSaveNotebook();
|
|
16
|
+
|
|
17
|
+
const handleNameChange = (newFilename: string) => {
|
|
18
|
+
const wasUnnamed = filename === null;
|
|
19
|
+
updateFilename(newFilename).then((name) => {
|
|
20
|
+
// When creating a new file (was unnamed), also save the content
|
|
21
|
+
if (name !== null && wasUnnamed) {
|
|
22
|
+
saveNotebook(name, true);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
14
27
|
return (
|
|
15
28
|
<FilenameInput
|
|
16
29
|
placeholderText={
|
|
17
30
|
filename ? Paths.basename(filename) : "untitled marimo notebook"
|
|
18
31
|
}
|
|
19
32
|
initialValue={filename}
|
|
20
|
-
onNameChange={
|
|
33
|
+
onNameChange={handleNameChange}
|
|
21
34
|
flexibleWidth={true}
|
|
22
35
|
resetOnBlur={true}
|
|
23
36
|
data-testid="filename-input"
|
|
@@ -109,6 +109,7 @@ const renderWithProvider = <T>(hook: () => T) => {
|
|
|
109
109
|
// Shared mock setup
|
|
110
110
|
const mockSaveOrNameNotebook = vi.fn();
|
|
111
111
|
const mockSaveIfNotebookIsPersistent = vi.fn();
|
|
112
|
+
const mockSaveNotebook = vi.fn();
|
|
112
113
|
const mockRunCell = vi.fn();
|
|
113
114
|
const mockCopyCell = vi.fn();
|
|
114
115
|
const mockPasteCell = vi.fn();
|
|
@@ -156,6 +157,7 @@ describe("useCellNavigationProps", () => {
|
|
|
156
157
|
mockUseSaveNotebook.mockReturnValue({
|
|
157
158
|
saveOrNameNotebook: mockSaveOrNameNotebook,
|
|
158
159
|
saveIfNotebookIsPersistent: mockSaveIfNotebookIsPersistent,
|
|
160
|
+
saveNotebook: mockSaveNotebook,
|
|
159
161
|
});
|
|
160
162
|
mockUseCellActions.mockReturnValue(
|
|
161
163
|
mockCellActions as unknown as CellActions,
|
|
@@ -5,10 +5,18 @@ import * as React from "react";
|
|
|
5
5
|
|
|
6
6
|
import { cn } from "@/utils/cn";
|
|
7
7
|
|
|
8
|
+
interface ProgressProps
|
|
9
|
+
extends React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> {
|
|
10
|
+
/**
|
|
11
|
+
* When true, shows an indeterminate animated progress bar.
|
|
12
|
+
*/
|
|
13
|
+
indeterminate?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
8
16
|
const Progress = React.forwardRef<
|
|
9
|
-
React.
|
|
10
|
-
|
|
11
|
-
>(({ className, value, ...props }, ref) => (
|
|
17
|
+
React.ComponentRef<typeof ProgressPrimitive.Root>,
|
|
18
|
+
ProgressProps
|
|
19
|
+
>(({ className, value, indeterminate, ...props }, ref) => (
|
|
12
20
|
<ProgressPrimitive.Root
|
|
13
21
|
ref={ref}
|
|
14
22
|
className={cn(
|
|
@@ -18,8 +26,17 @@ const Progress = React.forwardRef<
|
|
|
18
26
|
{...props}
|
|
19
27
|
>
|
|
20
28
|
<ProgressPrimitive.Indicator
|
|
21
|
-
className=
|
|
22
|
-
|
|
29
|
+
className={cn(
|
|
30
|
+
"h-full flex-1 bg-primary",
|
|
31
|
+
indeterminate
|
|
32
|
+
? "w-1/3 animate-progress-indeterminate"
|
|
33
|
+
: "w-full transition-transform duration-300 ease-out",
|
|
34
|
+
)}
|
|
35
|
+
style={
|
|
36
|
+
indeterminate
|
|
37
|
+
? undefined
|
|
38
|
+
: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
39
|
+
}
|
|
23
40
|
/>
|
|
24
41
|
</ProgressPrimitive.Root>
|
|
25
42
|
));
|
|
@@ -8,6 +8,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
8
8
|
import type { CellId } from "@/core/cells/ids";
|
|
9
9
|
import { CellOutputId } from "@/core/cells/ids";
|
|
10
10
|
import type { CellRuntimeState } from "@/core/cells/types";
|
|
11
|
+
import { ProgressState } from "@/utils/progress";
|
|
11
12
|
import {
|
|
12
13
|
updateCellOutputsWithScreenshots,
|
|
13
14
|
useEnrichCellOutputs,
|
|
@@ -38,6 +39,8 @@ vi.mock("@/core/cells/cells", async () => {
|
|
|
38
39
|
};
|
|
39
40
|
});
|
|
40
41
|
|
|
42
|
+
const progress = ProgressState.indeterminate();
|
|
43
|
+
|
|
41
44
|
import { toPng } from "html-to-image";
|
|
42
45
|
import { toast } from "@/components/ui/use-toast";
|
|
43
46
|
import { cellsRuntimeAtom } from "@/core/cells/cells";
|
|
@@ -100,7 +103,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
100
103
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
101
104
|
|
|
102
105
|
const enrichCellOutputs = result.current;
|
|
103
|
-
const output = await enrichCellOutputs();
|
|
106
|
+
const output = await enrichCellOutputs(progress);
|
|
104
107
|
|
|
105
108
|
expect(output).toEqual({});
|
|
106
109
|
expect(document.getElementById).not.toHaveBeenCalled();
|
|
@@ -132,7 +135,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
132
135
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
133
136
|
|
|
134
137
|
const enrichCellOutputs = result.current;
|
|
135
|
-
const output = await enrichCellOutputs();
|
|
138
|
+
const output = await enrichCellOutputs(progress);
|
|
136
139
|
|
|
137
140
|
expect(document.getElementById).toHaveBeenCalledWith(
|
|
138
141
|
CellOutputId.create(cellId),
|
|
@@ -177,7 +180,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
177
180
|
|
|
178
181
|
// First call - should capture
|
|
179
182
|
let enrichCellOutputs = result.current;
|
|
180
|
-
let output = await enrichCellOutputs();
|
|
183
|
+
let output = await enrichCellOutputs(progress);
|
|
181
184
|
expect(output).toEqual({ [cellId]: ["image/png", mockDataUrl] });
|
|
182
185
|
expect(toPng).toHaveBeenCalledTimes(1);
|
|
183
186
|
|
|
@@ -186,7 +189,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
186
189
|
|
|
187
190
|
// Second call with same output - should not capture again
|
|
188
191
|
enrichCellOutputs = result.current;
|
|
189
|
-
output = await enrichCellOutputs();
|
|
192
|
+
output = await enrichCellOutputs(progress);
|
|
190
193
|
expect(output).toEqual({}); // Empty because output hasn't changed
|
|
191
194
|
expect(toPng).toHaveBeenCalledTimes(1); // Still only 1 call
|
|
192
195
|
});
|
|
@@ -215,7 +218,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
215
218
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
216
219
|
|
|
217
220
|
const enrichCellOutputs = result.current;
|
|
218
|
-
const output = await enrichCellOutputs();
|
|
221
|
+
const output = await enrichCellOutputs(progress);
|
|
219
222
|
|
|
220
223
|
expect(output).toEqual({}); // Failed screenshot should be filtered out
|
|
221
224
|
expect(Logger.error).toHaveBeenCalledWith(
|
|
@@ -245,7 +248,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
245
248
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
246
249
|
|
|
247
250
|
const enrichCellOutputs = result.current;
|
|
248
|
-
const output = await enrichCellOutputs();
|
|
251
|
+
const output = await enrichCellOutputs(progress);
|
|
249
252
|
|
|
250
253
|
expect(output).toEqual({});
|
|
251
254
|
expect(Logger.error).toHaveBeenCalledWith(
|
|
@@ -294,7 +297,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
294
297
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
295
298
|
|
|
296
299
|
const enrichCellOutputs = result.current;
|
|
297
|
-
const output = await enrichCellOutputs();
|
|
300
|
+
const output = await enrichCellOutputs(progress);
|
|
298
301
|
|
|
299
302
|
expect(output).toEqual({
|
|
300
303
|
[cell1]: ["image/png", mockDataUrl1],
|
|
@@ -340,7 +343,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
340
343
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
341
344
|
|
|
342
345
|
const enrichCellOutputs = result.current;
|
|
343
|
-
const output = await enrichCellOutputs();
|
|
346
|
+
const output = await enrichCellOutputs(progress);
|
|
344
347
|
|
|
345
348
|
// Only the successful screenshot should be in the result
|
|
346
349
|
expect(output).toEqual({
|
|
@@ -382,13 +385,13 @@ describe("useEnrichCellOutputs", () => {
|
|
|
382
385
|
|
|
383
386
|
// First screenshot
|
|
384
387
|
let enrichCellOutputs = result.current;
|
|
385
|
-
let output = await enrichCellOutputs();
|
|
388
|
+
let output = await enrichCellOutputs(progress);
|
|
386
389
|
expect(output).toEqual({ [cellId]: ["image/png", mockDataUrl1] });
|
|
387
390
|
|
|
388
391
|
// Second call - same output, should not be captured
|
|
389
392
|
rerender();
|
|
390
393
|
enrichCellOutputs = result.current;
|
|
391
|
-
output = await enrichCellOutputs();
|
|
394
|
+
output = await enrichCellOutputs(progress);
|
|
392
395
|
expect(output).toEqual({});
|
|
393
396
|
|
|
394
397
|
// Third call - output changed, should be captured
|
|
@@ -407,7 +410,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
407
410
|
|
|
408
411
|
rerender();
|
|
409
412
|
enrichCellOutputs = result.current;
|
|
410
|
-
output = await enrichCellOutputs();
|
|
413
|
+
output = await enrichCellOutputs(progress);
|
|
411
414
|
expect(output).toEqual({ [cellId]: ["image/png", mockDataUrl2] });
|
|
412
415
|
expect(toPng).toHaveBeenCalledTimes(2);
|
|
413
416
|
});
|
|
@@ -447,7 +450,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
447
450
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
448
451
|
|
|
449
452
|
const enrichCellOutputs = result.current;
|
|
450
|
-
const output = await enrichCellOutputs();
|
|
453
|
+
const output = await enrichCellOutputs(progress);
|
|
451
454
|
|
|
452
455
|
// None of these should trigger screenshots
|
|
453
456
|
expect(output).toEqual({});
|
|
@@ -472,7 +475,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
472
475
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
473
476
|
|
|
474
477
|
const enrichCellOutputs = result.current;
|
|
475
|
-
const output = await enrichCellOutputs();
|
|
478
|
+
const output = await enrichCellOutputs(progress);
|
|
476
479
|
|
|
477
480
|
expect(output).toEqual({});
|
|
478
481
|
expect(document.getElementById).not.toHaveBeenCalled();
|
|
@@ -504,7 +507,7 @@ describe("useEnrichCellOutputs", () => {
|
|
|
504
507
|
const { result } = renderHook(() => useEnrichCellOutputs(), { wrapper });
|
|
505
508
|
|
|
506
509
|
const enrichCellOutputs = result.current;
|
|
507
|
-
const output = await enrichCellOutputs();
|
|
510
|
+
const output = await enrichCellOutputs(progress);
|
|
508
511
|
|
|
509
512
|
// Verify the exact return type structure
|
|
510
513
|
expect(output).toHaveProperty(cellId);
|
|
@@ -535,7 +538,11 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
535
538
|
const takeScreenshots = vi.fn().mockResolvedValue(mockScreenshots);
|
|
536
539
|
const updateCellOutputs = vi.fn().mockResolvedValue(null);
|
|
537
540
|
|
|
538
|
-
await updateCellOutputsWithScreenshots(
|
|
541
|
+
await updateCellOutputsWithScreenshots({
|
|
542
|
+
progress,
|
|
543
|
+
takeScreenshots,
|
|
544
|
+
updateCellOutputs,
|
|
545
|
+
});
|
|
539
546
|
|
|
540
547
|
expect(takeScreenshots).toHaveBeenCalledTimes(1);
|
|
541
548
|
expect(updateCellOutputs).toHaveBeenCalledTimes(1);
|
|
@@ -548,7 +555,11 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
548
555
|
const takeScreenshots = vi.fn().mockResolvedValue({});
|
|
549
556
|
const updateCellOutputs = vi.fn().mockResolvedValue(null);
|
|
550
557
|
|
|
551
|
-
await updateCellOutputsWithScreenshots(
|
|
558
|
+
await updateCellOutputsWithScreenshots({
|
|
559
|
+
progress,
|
|
560
|
+
takeScreenshots,
|
|
561
|
+
updateCellOutputs,
|
|
562
|
+
});
|
|
552
563
|
|
|
553
564
|
expect(takeScreenshots).toHaveBeenCalledTimes(1);
|
|
554
565
|
expect(updateCellOutputs).not.toHaveBeenCalled();
|
|
@@ -571,7 +582,11 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
571
582
|
const takeScreenshots = vi.fn().mockResolvedValue(mockScreenshots);
|
|
572
583
|
const updateCellOutputs = vi.fn().mockResolvedValue(null);
|
|
573
584
|
|
|
574
|
-
await updateCellOutputsWithScreenshots(
|
|
585
|
+
await updateCellOutputsWithScreenshots({
|
|
586
|
+
progress,
|
|
587
|
+
takeScreenshots,
|
|
588
|
+
updateCellOutputs,
|
|
589
|
+
});
|
|
575
590
|
|
|
576
591
|
expect(updateCellOutputs).toHaveBeenCalledWith({
|
|
577
592
|
cellIdsToOutput: mockScreenshots,
|
|
@@ -584,7 +599,11 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
584
599
|
const updateCellOutputs = vi.fn().mockResolvedValue(null);
|
|
585
600
|
|
|
586
601
|
// Should not throw - errors are caught and shown via toast
|
|
587
|
-
await updateCellOutputsWithScreenshots(
|
|
602
|
+
await updateCellOutputsWithScreenshots({
|
|
603
|
+
progress,
|
|
604
|
+
takeScreenshots,
|
|
605
|
+
updateCellOutputs,
|
|
606
|
+
});
|
|
588
607
|
|
|
589
608
|
expect(updateCellOutputs).not.toHaveBeenCalled();
|
|
590
609
|
expect(Logger.error).toHaveBeenCalledWith(
|
|
@@ -613,7 +632,11 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
613
632
|
const updateCellOutputs = vi.fn().mockRejectedValue(error);
|
|
614
633
|
|
|
615
634
|
// Should not throw - errors are caught and shown via toast
|
|
616
|
-
await updateCellOutputsWithScreenshots(
|
|
635
|
+
await updateCellOutputsWithScreenshots({
|
|
636
|
+
progress,
|
|
637
|
+
takeScreenshots,
|
|
638
|
+
updateCellOutputs,
|
|
639
|
+
});
|
|
617
640
|
|
|
618
641
|
expect(Logger.error).toHaveBeenCalledWith(
|
|
619
642
|
"Error updating cell outputs with screenshots:",
|