[Preview this branch](https://cosmos-explorer-preview.azurewebsites.net/pull/762?feature.someFeatureFlagYouMightNeed=true)
The main change in this PR fixes the snapshot functionality in the Publish pane-related components. Because the code cell outputs are now rendered in their own iframes for security reasons, a single snapshot of the notebook is no longer possible: each cell output takes its own snapshot and the snapshots are collated on the main notebook snapshot.
- Move the snapshot functionality to notebook components: this removes the reference of the notebook DOM node that we must pass to the Publish pane via explorer.
- Add slice in the state and actions in notebook redux for notebook snapshot requests and result
- Add post robot message to take snapshots and receive results
- Add logic in `NotebookRenderer` to wait for all output snapshots done before taking the main one collating.
- Use `zustand` to share snapshot between Redux world and React world. This solves the issue of keeping the `PanelContainer` component generic, while being able to update its children (`PublishPanel` component) with the new snapshot.
Additional changes:
- Add `local()` in `@font-face` to check if font is already installed before downloading the font (must be done for Safari, but not Edge/Chrome)
- Add "Export output to image" menu item in notebook cell, since each cell output can take its own snapshot (which can be downloaded)
![image](https://user-images.githubusercontent.com/21954022/117454706-b5f16600-af46-11eb-8535-6bf99f3d9170.png)
This change enables notebooks to escape HTML (which is a vector for malicious attacks).
We import `MarkdownCell` from the `@nteract/stateful-components` sources so that we can point it to the version of `@nteract/markdown` which contains [this fix](e19c7cc590).
This is a temporary workaround from upgrading to `@nteract/stateful-components` to `7.0.0` which causes build and runtime issues see #599).
The file `package-lock.json` is not in sync with `package.json` anymore. This causes build issues when upgrading a package.
This change sync's `package-lock.json` and fixes the build issues.
* added recursion and inition decorators
* working version
* added todo comment and removed console.log
* Added Recursive add
* removed type requirement
* proper resolution of promises
* added custom element and base class
* Made selfServe standalone page
* Added custom renderer as async type
* Added overall defaults
* added inital open from data explorer
* removed landingpage
* added feature for self serve type
* renamed sqlx->example and added invalid type
* Added comments for Example
* removed unnecessary changes
* Resolved PR comments
Added tests
Moved onSubmt and initialize inside base class
Moved testExplorer to separate folder
made fields of SelfServe Class non static
* fixed lint errors
* fixed compilation errors
* Removed reactbinding changes
* renamed dropdown -> choice
* Added SelfServeComponent
* Addressed PR comments
* merged master
* added selfservetype.none for emulator and hosted experience
* fixed formatting errors
* Removed "any" type
* undid package.json changes
Opening notebook (which contains code cell), then "Items"-> document editor is broken. Our JsonEditor component will hang at `monaco.editor.create()`.
Matching the `monaco-editor` version with `@nteract/monaco-editor` fixes it.
I looked into using one, but we cannot rely nteract, because it does not get loaded if notebook isn't enabled. Forcing nteract to use ours (if at all possible) isn't a good idea, since their code is tuned to their version.
For now, we'll have to keep the versions in sync.
* added SettingsV2 Tab
* lint changes
* foxed failing test
* Addressed PR comments
- removed dangerouslySetInnerHtml
- removed underscore dependency
- added AccessibleElement
- removed unnecesary exceptions to linting
* split render into separate functions
- removed sinon in test
- Added some enums to replace constant strings
- removed dangerously set inner html
- made autopilot input as StatefulValue
* add settingscomponent snapshot
* fixed linting errors
* fixed errors
* addressed PR comments
- Moved StatefulValue to new class
- Split render to more functions for throughputInputComponents
* Added sub components
- Added tests for SettingsRenderUtls
- Added empty test files for adding tests later
* Moved all inputs to fluent UI
- removed rupm
- added reusable styles
* Added Tabs
- Added ToolTipLabel component
- Removed toggleables for individual components
- Removed accessible elements
- Added IndexingPolicyComponent
* Added more tests
* Addressed PR comments
* Moved Label radio buttons to choicegroup
* fixed lint errors
* Removed StatefulValue
- Moved conflict res tab to the end
- Added styling for autpilot radiobuttons
* fixed linting errors
* fix bugs from merge to master
* fixed formatting issue
* Addressed PR comments
- Added unit tests for smaller methods within each component
* fixed linting errors
* removed redundant snapshots
* removed empty line
* made separate props objects for subcomponents
* Moved dirty checks to sub components
* Made indesing policy component height = 80% of view port
- modified auto pilot v3 messages
- Added Fluent UI tolltip
-
* Moved warning messages inline
* moved conflict res helpers out
* fixed bugs
* added stack style for message
* fixed tests
* Added tests
* fixed linting and format errors
* undid changes
* more edits
* fixed compile errors
* fixed compile errors
* fixed errors
* fixed bug with save and discard buttons
* fixed compile errors
* added MongoIndexingPolicy component
* addressed PR comments
* moved read indexes to scale context
* added add index feature
* added AddMongoIndexComponent
* Added collapsible portions and focus changes
* removed unnecessary imports
* finetuned UI
* more edits
* Added mongoindexeditor flight
- Moved add index UI to within current index pane
* minro edits
* Added separate warning messages for index refresh
* aligned items
* Fixed tests
* minor edits
* resolved PR comments
* modified refs usage
* compile errors fixed
* moved fetch of notifications and offer to within the tab activation
* fixed PR comments
* added error handling
* added AAD verification
* removed l empty line
* added back line
* deleted file
* added file
* addressed PR comments
* addressed PR comments
* fixed format error
* updated package.json
* updated package-lock.json
* Upgrade nteract packages and related dependencies to make new stateful-component work
* Switch to new monacoEditor
* Configure store using nteract mythic configuration
* Replace CodeMirror with Monaco editor in NotebookReadOnlyRenderer
* Reformat
* Upgrade d3 to latest to resolve d3-selection conflicts with nteract/data-explorer that broke D3ForceGraph
* Upgrade jupyterlab terminal widget to work with latest version of react. Upgrade jupyterlab services to include latest fix for websocket auth
* Update jest test snapshots
* Upgrade packages to fix build issues
* Remove comment
* Fix unit tests
* Fix unit test snapshot
* Remove useless @types/node-fetch
* added SettingsV2 Tab
* lint changes
* foxed failing test
* Addressed PR comments
- removed dangerouslySetInnerHtml
- removed underscore dependency
- added AccessibleElement
- removed unnecesary exceptions to linting
* split render into separate functions
- removed sinon in test
- Added some enums to replace constant strings
- removed dangerously set inner html
- made autopilot input as StatefulValue
* add settingscomponent snapshot
* fixed linting errors
* fixed errors
* addressed PR comments
- Moved StatefulValue to new class
- Split render to more functions for throughputInputComponents
* Added sub components
- Added tests for SettingsRenderUtls
- Added empty test files for adding tests later
* Moved all inputs to fluent UI
- removed rupm
- added reusable styles
* Added Tabs
- Added ToolTipLabel component
- Removed toggleables for individual components
- Removed accessible elements
- Added IndexingPolicyComponent
* Added more tests
* Addressed PR comments
* Moved Label radio buttons to choicegroup
* fixed lint errors
* Removed StatefulValue
- Moved conflict res tab to the end
- Added styling for autpilot radiobuttons
* fixed linting errors
* fix bugs from merge to master
* fixed formatting issue
* Addressed PR comments
- Added unit tests for smaller methods within each component
* fixed linting errors
* removed redundant snapshots
* removed empty line
* made separate props objects for subcomponents
* Moved dirty checks to sub components
* Made indesing policy component height = 80% of view port
- modified auto pilot v3 messages
- Added Fluent UI tolltip
-
* Moved warning messages inline
* moved conflict res helpers out
* fixed bugs
* added stack style for message
* fixed tests
* Added tests
* fixed linting and format errors
* undid changes
* more edits
* fixed compile errors
* fixed compile errors
* fixed errors
* fixed bug with save and discard buttons
* fixed compile errors
* addressed PR comments