[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)
With this change TabsBase objects will retain a reference to the TabsManager they belong to, so they can ask it if they're the active tab or not.
This removes the possibility for bugs like activating an unmanaged tab, or having more than one active tab, etc.
* minro code edits
* Added support for acknowledging code of conduct
- Added CodeOfConduct component that shows links and a checkbox that must be acknwledged before seeing the public galley
- Added verbose message for notebook publish error (when another notebook with the same name exists in the gallery)
- Added a feature flag for enabling code of conduct acknowledgement
* Added Info Component
* minor edit
* fixed failign tests
* publish tab displayed only when code of conduct accepted
* added code of conduct fetch during publish
* fixed bug
* added test and addressed PR comments
* changed line endings
* added comment
* addressed PR comments
* Added support for taking screenshot
- Screenshot is taken using html2canvas package
- Converted to base 64 and uploaded to metadata
- For Using first display output
- Notebok object is passed instead of string, to publish pane
- The first cell with output present is parsed out
- The dom is also parsed to get corresponding div element to take screenshot of the first output
* fixed bug
* Addressed PR comments
- FIxed bug that didn't capture screenshot when mutiple notebook tabs are opened
* removed unnecessary dependencies
* fixed compile issues
* more edits
* Initial commit
* Address PR comments
* Move notebook related stuff to NotebookManager and dynamically load it
* Add New gallery callout and other UI tweaks
* Update test snapshot