Commit Graph

156 Commits

Author SHA1 Message Date
Matt Bierner
9aecd9794a Cleaning up paste api proposal (#207495) 2024-03-12 21:11:05 +01:00
Don Jayamanne
7696df9026 Avoid blocking event loop when saving nb (#207381) 2024-03-12 08:18:20 +01:00
Don Jayamanne
9c3cc8b994 Avoid unnecessary workspace edits (#207377) 2024-03-12 02:03:43 +01:00
Matt Bierner
091987d943 Update paste and drop proposals (#206496)
* Update paste and drop proposals

Reworks the document paste and drop API proposals. Main highlights:

- Align more with code action api
- Allow a single paste provider to return multiple edits
- Allow resolving applied edits lazily
- Switch from using ids to scoped kinds like used for code actions

* Adding paste context

* Add context

* Update test
2024-03-07 16:04:36 -08:00
Don Jayamanne
46cd720f83 Drop uuid pkg used to to generate notebook cell id (#198647) 2023-11-20 06:12:55 +01:00
Don Jayamanne
cb6c07d46d Use JSON output object for json mimetype (#197871) 2023-11-10 01:13:42 +01:00
Don Jayamanne
9c17df54bd Ensure orig_nbformat is not written to ipynb file (#192359) 2023-09-06 19:20:07 -07:00
Matt Bierner
8c7747252e Move drop/paste ids onto providers (#189961)
For #179430, #30066

This lets us call just the provider we are interested in
2023-08-08 14:44:03 -07:00
Matt Bierner
39df243d21 priority -> yieldTo for drop/paste API proposals (#189881)
Move await from `priority` for drop/paste API proposals

For #179430, #30066

Switching to use `yieldTo` instead of `priority` to let an extension de-rank itself in the list of edits. `priority` was an arbitrary number while `yieldTo` gives more control over how the ranking takes place
2023-08-07 18:32:03 -07:00
Peng Lyu
bce3304e98 Fix vscode-jupyter#13522. Clear attachment if it does not exit. (#186578)
Fix #184630. Clear attachment if it does not exit.
2023-06-29 09:41:01 +10:00
aamunger
2c37a5be5a use same notebook serializer for IW 2023-06-16 11:52:40 -07:00
Michael Lively
34bde274c1 debt - remove field when no attachments present (#184630) 2023-06-09 00:18:46 +02:00
Matt Bierner
bf7ca503c2 Fix drop priorities for notebooks (#182209)
For copy paste, I added logic to prefer using the text content if there's both `image/*` and `text/*` content in the clipboard

This however I also incorrectly applied this logic when dropping. In those cases, we instead want to prefer the image data (at least we do in the case of dragging and dropping from VS Code's explorer)
2023-05-11 13:03:28 -07:00
Matt Bierner
4d38422afe Add priority to paste / drop apis (#182109)
* Add priority to paste / drop apis

Fixes #181886

Replacement for #181453

* Make notebooks prefer text over creating attachments
2023-05-10 14:18:05 -07:00
Matt Bierner
ca51a4b04c Add paste as command (#181959)
For #30066

This command shows a quick pick that lets you select how to paste content
2023-05-10 06:17:42 -07:00
Michael Lively
8867d20020 Remove ipynb.pasteAsAttachment setting to default to editor.pasteAs.enabled behavior (#181445)
* remove `ipynb.pasteAsAttachment` setting

* change default value to align with package.json

* Revert "remove `ipynb.pasteAsAttachment` setting"

This reverts commit 7471c030af.
2023-05-09 17:25:48 -07:00
Matt Bierner
83c12a2da2 Allow creating multiple files or attachments on paste (#181975) 2023-05-09 17:20:37 -07:00
Matt Bierner
37577f6b29 Fix casing on label (#181338) 2023-05-02 17:37:42 +02:00
Don Jayamanne
90bf5a07e4 Check for cell when determining default cell lang (#181079) 2023-05-02 17:05:45 +02:00
Matt Bierner
11ca8d75a1 Add widget to change how content is pasted (#181290)
* Add widget to change how content is pasted

For #30066

This adds a widget that lets you change how content is pasted if there are multiple ways it could be pasted

To do this, I've made the post drop widget generic and reused it for pasting too

* Update types

* More code deduplication
2023-05-02 09:40:04 +02:00
Matt Bierner
2f07466dfc Allow dropping images into notebook cells to create attachments (#180256)
* Allow dropping images into notebook to create attachments

Fixes #157577

This allows you to drag and drop image files or image data into a notebook cell to create an attachment

As part of this work, I also updated the paste attachment logic so that we can:

- Create multiple attachments in a single operation
- Create attachments of other mime types besides `image/png`
- Create attachments for images that have spaces in the filename

* Also allow pasting uri lists to create attachments

* Fix indent

* Add id
2023-04-19 09:39:04 -07:00
Michael Lively
ff55375896 Add support for attachment cleaning on notebook save (#179178)
* support for `onWillSave` + debounce rework

* dispose of delayer + tabs not spaces...

* adjust for API naming change, rm proposal refs
2023-04-05 11:44:52 -07:00
Don Jayamanne
bd77e72bbc Ensure svg+xml output is split into lines (#175724) 2023-03-01 06:48:50 +01:00
Matt Bierner
57dd298b47 Add typings for test runner scripts (#169196) 2022-12-15 02:19:24 +01:00
aamunger
888fd835ca don't clean attachments for a cell that is removed 2022-11-17 10:16:13 -08:00
Matt Bierner
1ccc8d438b Enable pasting of image attachments by default for ipynb (#166058)
Fixes https://github.com/microsoft/vscode-jupyter/issues/11987
2022-11-10 16:46:31 -08:00
Don Jayamanne
43957ccfe1 Compress streams in notebook outputs (#160946)
* Revert "Compress notebook output streams before rendering (#160667)"

This reverts commit 4230c22a08.

* Compress stream output items

* Minor perf improvements

* Misc

* Comments

* Added tests

* Merge issue

* More merge issues

* Misc

* Address code review comments
2022-10-11 14:43:46 -07:00
Matt Bierner
feb3d2d205 Fix null ref in attachments check (#162396)
Fixes #162391

Also reduces use of `any`
2022-09-29 13:15:01 -07:00
Peng Lyu
6e8bc02be4 Cell attachment cleanup tool improvement in diff editor (#161132)
* Move attachment out of custom metadata, prep for attachment clean up in diff editor

* recover attachments from dirty notebook document

* Allow metadata to be restored when content changed/reverted in nb diff editor
2022-09-16 14:12:53 -07:00
Don Jayamanne
4230c22a08 Compress notebook output streams before rendering (#160667)
* Compress notebook output streams before rendering

* OOps

* Combine the buffers manually

* Address code review

* oops

* Fixes

* We can have multiple stream mimes in an output

* oops
2022-09-13 08:56:32 +10:00
Michael Lively
42238bdaab notebook image cleaning automation (#159212)
* cache and cleaner complete, needs debounce

* minor renaming and reformatting

* bugfix for paste into new cell

* cleaning functionality complete

* refer to metadata as copy of current cell's

* check undef before reading from cache

* working state, pending cache restructure

* dots -> brackets

* pre-class refactor

* massive cleaner refactor

* cache typing, closed nb check, workspaceEdit only if metadata is changed

* undefined access fix

* proper debouncer

* get it up to work again

* no need to loop

* cell metadata uri parsing regression

* diagnostic

* Show diagnostics on document open

* transfer cache before file renames

* disable word wrap in notebook diff editor

* Avoid early notebook cell metadata deep clone

* No special case empty cell

* rename

* better naming

* Quick fix for invalid image attachment

* cleanup

* Add code action metadata

Co-authored-by: rebornix <penn.lv@gmail.com>
2022-09-09 11:32:10 -07:00
Michael Lively
834ad7365b small fix in logic 2022-08-31 15:41:15 -07:00
Michael Lively
05ae151b7d return object, change placeholder 2022-08-25 15:33:50 -07:00
Michael Lively
16f842ea76 fix for attachment naming within notebook metadata 2022-08-25 15:04:56 -07:00
Michael Lively
614c7dd5f4 fix conflict demo 2022-08-24 10:37:37 -07:00
Michael Lively
02cb45c3cb demo merge conflict 2022-08-23 16:10:56 -07:00
Michael Lively
ae1167bd94 refactor with updated metadata properties 2022-08-23 16:09:30 -07:00
Matt Bierner
f00fde0f24 Mark that notebook metadata is readonly (#158960)
Mark that metadata is `readonly`

Fixes #158955

We freeze the object here 0656d21d11/src/vs/workbench/api/common/extHostNotebookDocument.ts (L70)
2022-08-23 14:52:00 -07:00
Matt Bierner
b72671133b Fix any types and extract method (#158967)
`currentCell` and `notebookUri` are currently any types, which hides type errors. To fix this and clean up the code, I've extracted a new `getCellFromCellDocument` method
2022-08-23 13:57:44 -07:00
Michael Lively
6f7189b7bb refactor metadata into own fxn 2022-08-18 11:58:44 -07:00
Michael Lively
880fda6ed9 fix pasting image into newly created cell bug 2022-08-17 12:17:39 -07:00
Michael Lively
38477bf5f5 change dir of cellAttachmentRenderer (#157671)
* change dir of cellAttachmentRenderer

* add new directories to `.vscodeignore`

* add the .js directories back in...

* hopefully now understanding `.vscodeignore`
2022-08-09 20:00:24 +02:00
Michael Lively
9225503c85 Support for pasting images into markdown notebook cells (#156847)
* dataflow support for updated metadata

* update cellAttachmentRenderer.ts to reflect metadata being a getter() inside MarkupCell

* document paste additions

* update condition to re-render cells, now includes metadata changes

* paste API working, debugging command added

* paste working with metadata. needs numbering, and cleaning upon delete

* paste screenshot works fully

* remove debugging command. Cleaning.

* notebook cells now re-render upon metadata changes

* changed name validity checking, remove unneeded function

* use _document for cell data, use snippet choice, dto fix

* return subscription, for loop, uri fix, alter metadata in-place, better snippet

* metadata fix, object.equals, fix cellAttRenderer metadata call

* added comment with source of encodeBase64

* gate mkdn image paste behind experimental setting
2022-08-08 13:57:49 -07:00
Matt Bierner
68912bd844 Use 'import type' for '@jupyterlab/nbformat' (#157153)
This is a type only dev dep so we should prevent referencing it as a value
2022-08-04 23:46:53 +02:00
Michael Lively
61e8687fa3 Notebook Cells re-render upon changes to metadata (#156917)
* dataflow support for updated metadata

* update cellAttachmentRenderer.ts to reflect metadata being a getter() inside MarkupCell

* update condition to re-render cells, now includes metadata changes

* notebook cells now re-render upon metadata changes

* fix missing metadata update

Co-authored-by: Peng Lyu <penn.lv@gmail.com>
2022-08-03 09:46:12 -07:00
Michael Lively
6fbee10cc1 more checking for undefined objects, fixed bug casuing markdown renderer to entirely crash 2022-07-28 11:53:51 -07:00
Michael Lively
eaf321d50d formatting 2022-07-20 16:12:32 -07:00
Michael Lively
63142212a1 remove md-it dependency, added undefined check to attachments 2022-07-20 16:10:54 -07:00
Michael Lively
1b59f566bb rendering of attachment images complete via tokens 2022-07-20 12:23:37 -07:00
Michael Lively
735ead82f5 added attachment and metadata support back in... rebasing is scary 2022-07-20 12:23:37 -07:00