This is partially solved. Click your icon in the upper right and then find “Help”. It shows a list of keyboard shortcuts (including a shortcut for moving cells). They may not work on all platforms (Change cell focus does not work on windows, move cells up/down does).
I am sure you’ve been there if you have developed JS notebooks on this system or Python notebooks in the past:
You created a comprehensive notebook with multiple sections, proper introduction, some data visualization, a section of cells with toggles to control your inputs and outputs, references and imports section, and then you decide to rearrange your notebook for the final published draft prior to sharing it with the world.
Rearranging cells on pretty much all notebooking systems like observable is a tedious and arduous task of copy, create, paste delete cells especially if you are moving toggle controls, or a bunch of defined functions, etc.
Would not it be much faster and more productive with a simple UX change if you could just simply drag and drop a cell by the cell label or some other ‘grab cell’ control to move it anywhere up or down in the notebook document?
I’d even take it further and suggest an md header cell (md #...) with other cells below till next such cell could be used for grouping, collapcing, and moving whole sections of the document
@mike, @tom and observablehq devs crew: your thought on this notebook rearrange streamline UX bit?
I’d even take it further and suggest an md header cell (md #... ) with other cells below till next such cell could be used for grouping, collapcing, and moving whole sections of the document
What I would most like to see is an API that supports both loading and saving notebooks. Then it would be possible to make an external tool supporting whatever kind of cell rearrangement UI anyone could ever want (among many other possible tools), without burdening the Observable staff directly or needing complicated additional first-party UIs.
I agree with @jrus. I am still itching to do an Electron app that would have custom cell renderers/decorators, options for different code formaters, with UX niceties like moving whole sections of the notebook document, plus cells bookmarking I brought up in the past.
There are endless possibilities 1 could explore building custom UIs on top of observable to fit different workflows without overburdening this system devs, provided a well defined notebook spec and api.
I’ve looked at observablehq/notebook-runtime and notebook-inspector repos just yesterday. I think it should be almost possible, but I have not tried it yet.
.@jrus based on this response from @mbostock I suspect load/save notebook api is not in the current roadmap:
One could probably do it via raw XHR to observable api, but I don’t know if I would want to go there. would require some time to reverse engineer those calls. not impossible, but would be time consuming and hacky AF.
I’ll wait for the official public API and open source of observable for private hosting, etc. others have requested on this forum similar to how one can do with Jupyter notebooks today.