├── README.md ├── ipynb-viewer ├── .gitignore ├── README.md ├── package.json ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt ├── src │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── BenchmarkNotebook.ipynb │ ├── BenchmarkNotebook.json │ ├── JupViewer.js │ ├── index.css │ ├── index.js │ ├── logo.svg │ └── serviceWorker.js └── yarn.lock └── static ├── JupAsBlogDesk.png ├── JupDarkMobile.png ├── LightThemeMobile.png ├── SupportCoverImages.png ├── desktop_notebook.png ├── markdown_notebook.png └── notebook_mobile.png /README.md: -------------------------------------------------------------------------------- 1 | # React-Jupyter-Viewer 2 | 3 | ## IMPORTANT!!!! 4 | I'm looking for contributors. I noticed that quite a lot of developers find this tool useful and at the same time I feel guilty that I cannot devote enough time to this project due to personal committments. Please reachout in case anyone wants to contribute! 5 | 6 | Join the following Slack Workspace for any queries: 7 | 8 | https://join.slack.com/t/reactjupytern-0nc7370/shared_invite/zt-140lhgtlg-HaVJNl5OTEdeK1ZomArVZA 9 | 10 | 11 | 12 | ### Use jupyter notebooks as a blog 13 | The only reason why I am creating this component is to be able to publish my .ipynb notebooks on my GitHub pages as blog post. I have too many notebooks lying around with my programming notes. I'm too lazy to boot a ipython kernel to view one of my notebooks. Hence, this component. 14 | 15 | I like the default notebook viewer provided by github but there are a few features that would make it more usable for me, which are mostly these: **downloading it as a PDF, dark mode, mobile-enabled view and ability to publish my notebooks as blogs** 16 | 17 | Drop me a message if anyone wanna contribute. 18 | 19 | ![alt text](/static/SupportCoverImages.png "Desktop") 20 | 21 | (cover image src: https://notionpress.com/blog/wp-content/uploads/2018/06/Cover-design.png) 22 | 23 | ### Feature Roadmap 24 | 25 | * [X] Load from local file 26 | * [X] Load from URL 27 | * [X] Code blocks 28 | * [X] Render markdown blocks 29 | * [X] Render image blocks 30 | * [X] Render Error blocks 31 | * [X] Add tags to distinguish outputs 32 | * [X] Cell block numbering 33 | * [X] Header Tab (Showing name of notebook and date etc.) 34 | * [X] Hide code execution number (toggle) 35 | * [X] Theme Toggle 36 | * [X] Markdown Dark Theme 37 | * [X] Resolve Relative Markdown sources for images 38 | * [ ] Split as A4 size pages 39 | * [ ] Side-by-side view 40 | * [ ] Download notebook as pdf (will have to enable wordwrap while downloading it as pdf) 41 | * [ ] text/html code block parser 42 | * [ ] Markdown based index 43 | 44 | ---- 45 | 46 | #### Desirable Props 47 | 48 | prop | priority | description 49 | ---------|----------|------------- 50 | file | Critical | Load a file from storage 51 | url | Critical | Load a file from storage 52 | theme | good to have| Change from dark to light 53 | blog title| Critical | Title for the blog. 54 | blog cover|good to have| An option to put in cover pic for your blog 55 | 56 | --- 57 | 58 | ### Usage 59 | Note that the notebook URL must be the raw_notebook url on github. Click on the 'raw' button in github notebook preview to get the raw source. 60 | 61 | ```javascript 62 | import React from 'react'; 63 | import './App.css'; 64 | import JupViewer from './JupViewer' 65 | 66 | const ipynb = require('./BenchmarkNotebook.ipynb') 67 | 68 | class App extends React.Component { 69 | render() { 70 | return ( 71 |
72 | 79 |
80 | ) 81 | } 82 | } 83 | 84 | export default App; 85 | 86 | ``` 87 | --- 88 | 89 | ### Desktop Preview 90 | ![alt text](/static/JupAsBlogDesk.png "Desktop") 91 | 92 | 93 | 94 | ### Mobile Preview with theme toggle 95 | Dark|Light 96 | ----|---- 97 | ![alt text](/static/../static/JupDarkMobile.png "Mobile")|![alt text](/static/../static/LightThemeMobile.png "Mobile") 98 | 99 | 100 | --- 101 | 102 | ### Dependencies 103 | * react-ace 104 | * react-markdown 105 | * antd (UI lib cuz I'm too lazy) 106 | -------------------------------------------------------------------------------- /ipynb-viewer/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /ipynb-viewer/README.md: -------------------------------------------------------------------------------- 1 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 2 | 3 | ## Available Scripts 4 | 5 | In the project directory, you can run: 6 | 7 | ### `yarn start` 8 | 9 | Runs the app in the development mode.
10 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 11 | 12 | The page will reload if you make edits.
13 | You will also see any lint errors in the console. 14 | 15 | ### `yarn test` 16 | 17 | Launches the test runner in the interactive watch mode.
18 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 19 | 20 | ### `yarn build` 21 | 22 | Builds the app for production to the `build` folder.
23 | It correctly bundles React in production mode and optimizes the build for the best performance. 24 | 25 | The build is minified and the filenames include the hashes.
26 | Your app is ready to be deployed! 27 | 28 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 29 | 30 | ### `yarn eject` 31 | 32 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 33 | 34 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 35 | 36 | Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 37 | 38 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 39 | 40 | ## Learn More 41 | 42 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 43 | 44 | To learn React, check out the [React documentation](https://reactjs.org/). 45 | 46 | ### Code Splitting 47 | 48 | This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting 49 | 50 | ### Analyzing the Bundle Size 51 | 52 | This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size 53 | 54 | ### Making a Progressive Web App 55 | 56 | This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app 57 | 58 | ### Advanced Configuration 59 | 60 | This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration 61 | 62 | ### Deployment 63 | 64 | This section has moved here: https://facebook.github.io/create-react-app/docs/deployment 65 | 66 | ### `yarn build` fails to minify 67 | 68 | This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify 69 | -------------------------------------------------------------------------------- /ipynb-viewer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ipynb-viewer", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "antd": "^3.24.2", 7 | "markdown-it": "^10.0.0", 8 | "react": "^16.11.0", 9 | "react-ace": "^8.0.0", 10 | "react-dom": "^16.11.0", 11 | "react-markdown": "^4.2.2", 12 | "react-scripts": "3.2.0" 13 | }, 14 | "scripts": { 15 | "start": "react-scripts start", 16 | "build": "react-scripts build", 17 | "test": "react-scripts test", 18 | "eject": "react-scripts eject" 19 | }, 20 | "eslintConfig": { 21 | "extends": "react-app" 22 | }, 23 | "browserslist": { 24 | "production": [ 25 | ">0.2%", 26 | "not dead", 27 | "not op_mini all" 28 | ], 29 | "development": [ 30 | "last 1 chrome version", 31 | "last 1 firefox version", 32 | "last 1 safari version" 33 | ] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ipynb-viewer/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/ipynb-viewer/public/favicon.ico -------------------------------------------------------------------------------- /ipynb-viewer/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /ipynb-viewer/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/ipynb-viewer/public/logo192.png -------------------------------------------------------------------------------- /ipynb-viewer/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/ipynb-viewer/public/logo512.png -------------------------------------------------------------------------------- /ipynb-viewer/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /ipynb-viewer/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /ipynb-viewer/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | } 8 | 9 | .App-header { 10 | background-color: #282c34; 11 | min-height: 100vh; 12 | display: flex; 13 | flex-direction: column; 14 | align-items: center; 15 | justify-content: center; 16 | font-size: calc(10px + 2vmin); 17 | color: white; 18 | } 19 | 20 | .App-link { 21 | color: #09d3ac; 22 | } 23 | 24 | .darkTheme > * { 25 | background-color: #2F3129; 26 | color: white; 27 | } 28 | 29 | .MDImg img { 30 | max-width: 100%; 31 | } 32 | 33 | -------------------------------------------------------------------------------- /ipynb-viewer/src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import logo from './logo.svg'; 3 | import './App.css'; 4 | import JupViewer from './JupViewer' 5 | 6 | const ipynb = require('./BenchmarkNotebook.ipynb') 7 | 8 | class App extends React.Component { 9 | render() { 10 | return ( 11 |
12 | 20 |
21 | ) 22 | } 23 | } 24 | 25 | 26 | export default App; 27 | -------------------------------------------------------------------------------- /ipynb-viewer/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /ipynb-viewer/src/BenchmarkNotebook.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "class Node:\n", 10 | " def __init__(self, node_id, obj=None):\n", 11 | " self.par = []\n", 12 | " self.chids = []\n", 13 | " self.name = node_id\n", 14 | " \n", 15 | "def get_root(node):\n", 16 | " if not node.par:\n", 17 | " return [node]\n", 18 | " all_parents = []\n", 19 | " for par in node.par:\n", 20 | " all_parents.extend(get_root(par))\n", 21 | " return all_parents" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 2, 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "root = Node('Root', obj=\"Hi this is root\")" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 3, 36 | "metadata": {}, 37 | "outputs": [], 38 | "source": [ 39 | "n1 = Node('node1', obj=\"Node 1\")\n", 40 | "n1.par.append(root)" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 4, 46 | "metadata": {}, 47 | "outputs": [], 48 | "source": [ 49 | "n2 = Node('node2', obj=\"Node 2\")\n", 50 | "n2.par.append(root)" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": 5, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [ 59 | "n2_2 = Node('node2_2', obj=\"Node 2 ka baccha\")\n", 60 | "n2_2.par.append(n2)" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "metadata": {}, 66 | "source": [ 67 | "### Another disjoint tree\n", 68 | "![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png \"Logo Title Text 1\")\n", 69 | "\n" 70 | ] 71 | }, 72 | { 73 | "cell_type": "markdown", 74 | "metadata": {}, 75 | "source": [ 76 | "### Traversal" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 129, 82 | "metadata": {}, 83 | "outputs": [ 84 | { 85 | "data": { 86 | "text/plain": [ 87 | "['Root']" 88 | ] 89 | }, 90 | "execution_count": 129, 91 | "metadata": {}, 92 | "output_type": "execute_result" 93 | } 94 | ], 95 | "source": [ 96 | "rts_list = get_root(n1)\n", 97 | "[r.name for r in rts_list]" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 132, 103 | "metadata": {}, 104 | "outputs": [ 105 | { 106 | "data": { 107 | "text/plain": [ 108 | "['Root', 'Root of Tree 2']" 109 | ] 110 | }, 111 | "execution_count": 132, 112 | "metadata": {}, 113 | "output_type": "execute_result" 114 | } 115 | ], 116 | "source": [ 117 | "[r.name for r in get_root(n2_2)]" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": null, 123 | "metadata": {}, 124 | "outputs": [], 125 | "source": [ 126 | "# root T2\n", 127 | "# / \\ /\n", 128 | "# n1 n2 t1\n", 129 | "# | \\ /\n", 130 | "# [] n2_2\n", 131 | "# |\n", 132 | "# []" 133 | ] 134 | }, 135 | { 136 | "cell_type": "code", 137 | "execution_count": 5, 138 | "metadata": {}, 139 | "outputs": [ 140 | { 141 | "name": "stdout", 142 | "output_type": "stream", 143 | "text": [ 144 | "(720, 1280)\n" 145 | ] 146 | }, 147 | { 148 | "data": { 149 | "image/png": "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\n", 150 | "text/plain": [ 151 | "
" 152 | ] 153 | }, 154 | "metadata": {}, 155 | "output_type": "display_data" 156 | } 157 | ], 158 | "source": [ 159 | "import cv2\n", 160 | "import matplotlib.pyplot as plt\n", 161 | "import numpy as np\n", 162 | "import sys\n", 163 | "%matplotlib inline\n", 164 | "\n", 165 | "im = cv2.imread('/home/shiv/Pictures/pcikleee.jpg',0)\n", 166 | "h,w = im.shape[:2]\n", 167 | "print(im.shape)\n", 168 | "plt.imshow(im,cmap='gray')\n", 169 | "plt.show()" 170 | ] 171 | }, 172 | { 173 | "cell_type": "markdown", 174 | "metadata": {}, 175 | "source": [ 176 | "### Loop traversal and multiline output" 177 | ] 178 | }, 179 | { 180 | "cell_type": "code", 181 | "execution_count": 9, 182 | "metadata": {}, 183 | "outputs": [ 184 | { 185 | "name": "stdout", 186 | "output_type": "stream", 187 | "text": [ 188 | "0\n", 189 | "1\n", 190 | "2\n", 191 | "3\n", 192 | "4\n", 193 | "5\n", 194 | "6\n", 195 | "7\n", 196 | "8\n", 197 | "9\n" 198 | ] 199 | } 200 | ], 201 | "source": [ 202 | "for i in range(10):\n", 203 | " print(i)" 204 | ] 205 | }, 206 | { 207 | "cell_type": "code", 208 | "execution_count": 10, 209 | "metadata": {}, 210 | "outputs": [ 211 | { 212 | "data": { 213 | "text/plain": [ 214 | "{1: 2, 4: 'hello', 'test_jey': ['anotherobject']}" 215 | ] 216 | }, 217 | "execution_count": 10, 218 | "metadata": {}, 219 | "output_type": "execute_result" 220 | } 221 | ], 222 | "source": [ 223 | "# TEST for an object print\n", 224 | "obj = {1:2, 4:'hello', 'test_jey':['anotherobject']}\n", 225 | "obj" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": 11, 231 | "metadata": {}, 232 | "outputs": [ 233 | { 234 | "name": "stdout", 235 | "output_type": "stream", 236 | "text": [ 237 | "{1: 2, 4: 'hello', 'test_jey': ['anotherobject']}\n" 238 | ] 239 | } 240 | ], 241 | "source": [ 242 | "print(obj)" 243 | ] 244 | }, 245 | { 246 | "cell_type": "code", 247 | "execution_count": 12, 248 | "metadata": {}, 249 | "outputs": [ 250 | { 251 | "data": { 252 | "text/plain": [ 253 | "35" 254 | ] 255 | }, 256 | "execution_count": 12, 257 | "metadata": {}, 258 | "output_type": "execute_result" 259 | } 260 | ], 261 | "source": [ 262 | "a = 35\n", 263 | "a\n" 264 | ] 265 | }, 266 | { 267 | "cell_type": "code", 268 | "execution_count": 13, 269 | "metadata": {}, 270 | "outputs": [ 271 | { 272 | "name": "stdout", 273 | "output_type": "stream", 274 | "text": [ 275 | "35\n" 276 | ] 277 | } 278 | ], 279 | "source": [ 280 | "print(a)" 281 | ] 282 | }, 283 | { 284 | "cell_type": "code", 285 | "execution_count": 1, 286 | "metadata": {}, 287 | "outputs": [ 288 | { 289 | "ename": "ZeroDivisionError", 290 | "evalue": "division by zero", 291 | "output_type": "error", 292 | "traceback": [ 293 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 294 | "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", 295 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;36m1\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 296 | "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" 297 | ] 298 | } 299 | ], 300 | "source": [ 301 | "1/0" 302 | ] 303 | }, 304 | { 305 | "cell_type": "markdown", 306 | "metadata": {}, 307 | "source": [ 308 | "### Complex markdown\n", 309 | "\n", 310 | "#### Tables?\n", 311 | "\n", 312 | "col 1 | col 2\n", 313 | "------|------\n", 314 | "A|B\n", 315 | "C|D" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": null, 321 | "metadata": {}, 322 | "outputs": [], 323 | "source": [] 324 | } 325 | ], 326 | "metadata": { 327 | "kernelspec": { 328 | "display_name": "Python 3", 329 | "language": "python", 330 | "name": "python3" 331 | }, 332 | "language_info": { 333 | "codemirror_mode": { 334 | "name": "ipython", 335 | "version": 3 336 | }, 337 | "file_extension": ".py", 338 | "mimetype": "text/x-python", 339 | "name": "python", 340 | "nbconvert_exporter": "python", 341 | "pygments_lexer": "ipython3", 342 | "version": "3.6.8" 343 | } 344 | }, 345 | "nbformat": 4, 346 | "nbformat_minor": 2 347 | } 348 | -------------------------------------------------------------------------------- /ipynb-viewer/src/BenchmarkNotebook.json: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "class Node:\n", 10 | " def __init__(self, node_id, obj=None):\n", 11 | " self.par = []\n", 12 | " self.chids = []\n", 13 | " self.name = node_id\n", 14 | " \n", 15 | "def get_root(node):\n", 16 | " if not node.par:\n", 17 | " return [node]\n", 18 | " all_parents = []\n", 19 | " for par in node.par:\n", 20 | " all_parents.extend(get_root(par))\n", 21 | " return all_parents" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 2, 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "root = Node('Root', obj=\"Hi this is root\")" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 3, 36 | "metadata": {}, 37 | "outputs": [], 38 | "source": [ 39 | "n1 = Node('node1', obj=\"Node 1\")\n", 40 | "n1.par.append(root)" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 4, 46 | "metadata": {}, 47 | "outputs": [], 48 | "source": [ 49 | "n2 = Node('node2', obj=\"Node 2\")\n", 50 | "n2.par.append(root)" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": 124, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [ 59 | "n2_2 = Node('node2_2', obj=\"Node 2 ka baccha\")\n", 60 | "n2_2.par.append(n2)" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "metadata": {}, 66 | "source": [ 67 | "### Another disjoint tree\n", 68 | "![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png \"Logo Title Text 1\")" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 125, 74 | "metadata": {}, 75 | "outputs": [], 76 | "source": [ 77 | "T2 = Node('Root of Tree 2', obj=\"Tree 2\")" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 126, 83 | "metadata": {}, 84 | "outputs": [], 85 | "source": [ 86 | "t1 = Node('node1 T2', obj=\"Node 1\")\n", 87 | "t1.par.append(T2)" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": 131, 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": [ 96 | "n2_2.par.append(t1)" 97 | ] 98 | }, 99 | { 100 | "cell_type": "markdown", 101 | "metadata": {}, 102 | "source": [ 103 | "### Traversal" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 129, 109 | "metadata": {}, 110 | "outputs": [ 111 | { 112 | "data": { 113 | "text/plain": [ 114 | "['Root']" 115 | ] 116 | }, 117 | "execution_count": 129, 118 | "metadata": {}, 119 | "output_type": "execute_result" 120 | } 121 | ], 122 | "source": [ 123 | "rts_list = get_root(n1)\n", 124 | "[r.name for r in rts_list]" 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": 132, 130 | "metadata": {}, 131 | "outputs": [ 132 | { 133 | "data": { 134 | "text/plain": [ 135 | "['Root', 'Root of Tree 2']" 136 | ] 137 | }, 138 | "execution_count": 132, 139 | "metadata": {}, 140 | "output_type": "execute_result" 141 | } 142 | ], 143 | "source": [ 144 | "[r.name for r in get_root(n2_2)]" 145 | ] 146 | }, 147 | { 148 | "cell_type": "code", 149 | "execution_count": null, 150 | "metadata": {}, 151 | "outputs": [], 152 | "source": [ 153 | "# root T2\n", 154 | "# / \\ /\n", 155 | "# n1 n2 t1\n", 156 | "# | \\ /\n", 157 | "# [] n2_2\n", 158 | "# |\n", 159 | "# []" 160 | ] 161 | }, 162 | { 163 | "cell_type": "code", 164 | "execution_count": 5, 165 | "metadata": {}, 166 | "outputs": [ 167 | { 168 | "name": "stdout", 169 | "output_type": "stream", 170 | "text": [ 171 | "(720, 1280)\n" 172 | ] 173 | }, 174 | { 175 | "data": { 176 | "image/png": "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\n", 177 | "text/plain": [ 178 | "
" 179 | ] 180 | }, 181 | "metadata": {}, 182 | "output_type": "display_data" 183 | } 184 | ], 185 | "source": [ 186 | "import cv2\n", 187 | "import matplotlib.pyplot as plt\n", 188 | "import numpy as np\n", 189 | "import sys\n", 190 | "%matplotlib inline\n", 191 | "\n", 192 | "im = cv2.imread('/home/shiv/Pictures/pcikleee.jpg',0)\n", 193 | "h,w = im.shape[:2]\n", 194 | "print(im.shape)\n", 195 | "plt.imshow(im,cmap='gray')\n", 196 | "plt.show()" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": null, 202 | "metadata": {}, 203 | "outputs": [], 204 | "source": [] 205 | } 206 | ], 207 | "metadata": { 208 | "kernelspec": { 209 | "display_name": "Python 3", 210 | "language": "python", 211 | "name": "python3" 212 | }, 213 | "language_info": { 214 | "codemirror_mode": { 215 | "name": "ipython", 216 | "version": 3 217 | }, 218 | "file_extension": ".py", 219 | "mimetype": "text/x-python", 220 | "name": "python", 221 | "nbconvert_exporter": "python", 222 | "pygments_lexer": "ipython3", 223 | "version": "3.6.8" 224 | } 225 | }, 226 | "nbformat": 4, 227 | "nbformat_minor": 2 228 | } 229 | -------------------------------------------------------------------------------- /ipynb-viewer/src/JupViewer.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Card, Spin, 4 | Tag, Col, Row, Typography, 5 | Switch 6 | } from 'antd'; 7 | import { render } from "react-dom"; 8 | import AceEditor from "react-ace"; 9 | import "ace-builds/src-noconflict/mode-python"; 10 | import "ace-builds/src-noconflict/theme-monokai"; 11 | import "ace-builds/src-noconflict/theme-kuroir"; 12 | import "ace-builds/src-noconflict/theme-terminal"; 13 | import './App.css'; 14 | 15 | const ReactMarkdown = require('react-markdown') 16 | const { Meta } = Card; 17 | 18 | class JupViewer extends React.Component { 19 | state = { 20 | //file_path 21 | fpath: "", 22 | fbase_path: "", 23 | // Editor Theme 24 | ed_theme: 'darkTheme', 25 | text_ed_theme: 'monokai', 26 | //themes: 27 | background_theme: "black", 28 | background_text_theme: 'white', 29 | // background_input_theme: '#2F3129', 30 | background_input_theme: '#272822', 31 | background_output_theme: '#2F3129', 32 | loading: true, 33 | notebook_json: null, 34 | placeholder_component: "Loading....", 35 | 36 | // Gutter 37 | gutterVisible: false 38 | } 39 | 40 | validURL(str) { 41 | var pattern = new RegExp('^(https?:\\/\\/)?' + // protocol 42 | '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name 43 | '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address 44 | '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path 45 | '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string 46 | '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator 47 | return !!pattern.test(str); 48 | } 49 | 50 | async componentDidMount() { 51 | if (!!this.props.file) { 52 | var fbase = this.props.file.split('/'); 53 | fbase.pop(); 54 | this.setState({ 55 | fpath: this.props.file, 56 | fbase_path: fbase.join('/') + '/' 57 | }) 58 | await fetch(this.props.file) 59 | .then((r) => r.text()) 60 | .then(async (text) => { 61 | try { 62 | var notebook_json = JSON.parse(text) 63 | this.setState({ 64 | notebook_json: notebook_json, 65 | loading: false, 66 | placeholder_component: 'Notebook loaded' 67 | }) 68 | console.log(this.state.notebook_json) 69 | } catch (error) { 70 | alert('OOps! Unable to load json') 71 | this.setState({ 72 | notebook_json: { "message": "Unable to parse .ipynb file" }, 73 | loading: false, 74 | placeholder_component: 'Oops! We have problem opening the notebook' 75 | }) 76 | } 77 | }) 78 | } 79 | } 80 | 81 | praseSource(source) { 82 | var cell_content = `` 83 | for (var code in source) { 84 | cell_content += source[code] 85 | } 86 | return cell_content 87 | } 88 | 89 | parseMD(source) { 90 | var cell_content = `` 91 | for (var code in source) { 92 | var rgx = new RegExp(/src="(.*?)"/) 93 | var new_source = source[code] 94 | var old_source = source[code].match(rgx) 95 | if (!!old_source && !this.validURL(old_source[1])) { 96 | new_source = source[code].replace(/src="(.*?)"/, 'src="' + this.state.fbase_path + old_source[1] + '"') 97 | // console.log(new_source) 98 | } else { 99 | var rgx2 = new RegExp(/\!\[(.*?)\]\((.*?)[\s|\)]/) 100 | var s2 = source[code].match(rgx2) 101 | if (!!s2 && !this.validURL(s2[2])) { 102 | // console.log(s2[2]) 103 | // console.log(this.validURL(s2[2])) 104 | // console.log(new_source.replace(s2[2], this.state.fbase_path + s2[2])) 105 | new_source = new_source.replace(s2[2], this.state.fbase_path + s2[2]) 106 | } 107 | } 108 | // 109 | cell_content += new_source 110 | } 111 | return cell_content 112 | } 113 | 114 | praseOutputs(outputs) { 115 | if (outputs.length == 0) { 116 | return "" 117 | } 118 | // Handle "data" type cells 119 | var text_plain = `` 120 | var stdout = `` 121 | var errors = `` 122 | var img_data = `data:image/png;base64,` 123 | 124 | //booleans 125 | var stdout_found = false 126 | var text_found = false 127 | var error_found = false 128 | var img_found = false 129 | 130 | //maxlines for each output type 131 | var lines_stdout = 3 132 | var lines_text_plain = 3 133 | var lines_error_trace = 3 134 | for (var outs in outputs) { 135 | if ("data" in outputs[outs]) { 136 | 137 | if ("text/plain" in outputs[outs]["data"]) { 138 | for (var text in outputs[outs]['data']['text/plain']) { 139 | text_plain += outputs[outs]['data']['text/plain'][text] 140 | } 141 | text_found = true 142 | lines_text_plain = outputs[outs]["data"]["text/plain"].length 143 | } 144 | if ("image/png" in outputs[outs]["data"]) { 145 | img_data += outputs[outs]["data"]["image/png"] 146 | img_found = true 147 | } 148 | } 149 | if ("name" in outputs[outs]) { 150 | for (var text in outputs[outs]["text"]) { 151 | stdout += outputs[outs]["text"][text] 152 | } 153 | stdout_found = true 154 | lines_stdout = outputs[outs]["text"].length 155 | } 156 | // Check for errors 157 | if ("ename" in outputs[outs]) { 158 | errors += outputs[outs]['ename'] + "\n" + outputs[outs]["evalue"] + "\n" 159 | // for (var trace in outputs[outs]["traceback"]) { 160 | // errors += outputs[outs]["traceback"][trace] 161 | // } 162 | error_found = true 163 | lines_error_trace = outputs[outs]["traceback"].length 164 | } 165 | } 166 | 167 | var return_template = ( 168 |
169 |
173 | stdout

175 |
200 |
201 | data:text/plain

203 |
228 |
229 | data:image/png

231 | 238 |
239 |
240 | error

242 |
267 |
268 | ) 269 | 270 | 271 | return return_template 272 | } 273 | 274 | 275 | themeChanger(ev) { 276 | if (ev) { 277 | this.setState({ 278 | // Editor Theme 279 | ed_theme: 'darkTheme', 280 | text_ed_theme: 'monokai', 281 | //themes: 282 | background_theme: "black", 283 | background_text_theme: 'white', 284 | // background_input_theme: '#2F3129', 285 | background_input_theme: '#272822', 286 | background_output_theme: '#2F3129', 287 | }) 288 | } 289 | else { 290 | this.setState({ 291 | // Editor Theme 292 | ed_theme: 'lightTheme', 293 | text_ed_theme: 'kuroir', 294 | //themes: 295 | background_theme: "white", 296 | background_text_theme: 'black', 297 | // background_input_theme: '#2F3129', 298 | background_input_theme: '#E8E9E8', 299 | background_output_theme: '#F1F1F2', 300 | }) 301 | } 302 | console.log(`switch to ${ev}`); 303 | } 304 | 305 | gutterChanger(ev) { 306 | if (ev) { 307 | this.setState({ 308 | gutterVisible: true 309 | }) 310 | } 311 | else { 312 | this.setState({ 313 | gutterVisible: false 314 | }) 315 | } 316 | } 317 | 318 | render() { 319 | console.log(this.props.file) 320 | return ( 321 |
322 |

323 | 324 |
325 | {/* This is where the blog metadata and the cover will go */} 326 |
327 | 338 | 339 | 340 | 341 | {this.props.title} 347 | {this.props.subtitle} 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | No Cover Image Found 368 | 369 | 370 | 371 | 372 | 373 | 374 |

375 |

376 | 377 | 378 | 379 | {this.state.loading ? "Unknown" : this.state.notebook_json['metadata']['kernelspec']['display_name']} 380 | 387 | 393 | 394 | 395 | 396 |
397 |
398 | { 399 | this.state.loading ?
: (this.state.notebook_json['cells'].map(item => ( 400 | 411 | 412 | 417 | 418 |
423 | 431 | I [ {item['execution_count']} ]: 432 | 433 | 434 |
435 | 436 | 437 | 442 | 443 | {item['cell_type'] == "code" ? ( 444 |
451 | 477 |
478 | ) : 479 | 480 |
481 |
490 | 497 |
498 |
} 499 | 500 | 501 |
502 | 503 | { 504 | item['cell_type'] == 'markdown' ?
: 505 | ( 506 | 511 | 512 | 513 | 521 | O [ {item['execution_count']} ]: 522 | 523 | 524 | 529 | {this.praseOutputs(item['outputs'])} 530 | 531 | 532 | 533 | ) 534 | } 535 |
536 | ))) 537 | } 538 |
539 |
540 |

541 |
542 | ) 543 | } 544 | } 545 | 546 | 547 | export default JupViewer; 548 | -------------------------------------------------------------------------------- /ipynb-viewer/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 4 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /ipynb-viewer/src/index.js: -------------------------------------------------------------------------------- 1 | import "antd/dist/antd.css"; 2 | import React from 'react'; 3 | import ReactDOM from 'react-dom'; 4 | import './index.css'; 5 | import App from './App'; 6 | import * as serviceWorker from './serviceWorker'; 7 | 8 | ReactDOM.render(, document.getElementById('root')); 9 | 10 | // If you want your app to work offline and load faster, you can change 11 | // unregister() to register() below. Note this comes with some pitfalls. 12 | // Learn more about service workers: https://bit.ly/CRA-PWA 13 | serviceWorker.unregister(); 14 | -------------------------------------------------------------------------------- /ipynb-viewer/src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ipynb-viewer/src/serviceWorker.js: -------------------------------------------------------------------------------- 1 | // This optional code is used to register a service worker. 2 | // register() is not called by default. 3 | 4 | // This lets the app load faster on subsequent visits in production, and gives 5 | // it offline capabilities. However, it also means that developers (and users) 6 | // will only see deployed updates on subsequent visits to a page, after all the 7 | // existing tabs open on the page have been closed, since previously cached 8 | // resources are updated in the background. 9 | 10 | // To learn more about the benefits of this model and instructions on how to 11 | // opt-in, read https://bit.ly/CRA-PWA 12 | 13 | const isLocalhost = Boolean( 14 | window.location.hostname === 'localhost' || 15 | // [::1] is the IPv6 localhost address. 16 | window.location.hostname === '[::1]' || 17 | // 127.0.0.1/8 is considered localhost for IPv4. 18 | window.location.hostname.match( 19 | /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ 20 | ) 21 | ); 22 | 23 | export function register(config) { 24 | if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { 25 | // The URL constructor is available in all browsers that support SW. 26 | const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); 27 | if (publicUrl.origin !== window.location.origin) { 28 | // Our service worker won't work if PUBLIC_URL is on a different origin 29 | // from what our page is served on. This might happen if a CDN is used to 30 | // serve assets; see https://github.com/facebook/create-react-app/issues/2374 31 | return; 32 | } 33 | 34 | window.addEventListener('load', () => { 35 | const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; 36 | 37 | if (isLocalhost) { 38 | // This is running on localhost. Let's check if a service worker still exists or not. 39 | checkValidServiceWorker(swUrl, config); 40 | 41 | // Add some additional logging to localhost, pointing developers to the 42 | // service worker/PWA documentation. 43 | navigator.serviceWorker.ready.then(() => { 44 | console.log( 45 | 'This web app is being served cache-first by a service ' + 46 | 'worker. To learn more, visit https://bit.ly/CRA-PWA' 47 | ); 48 | }); 49 | } else { 50 | // Is not localhost. Just register service worker 51 | registerValidSW(swUrl, config); 52 | } 53 | }); 54 | } 55 | } 56 | 57 | function registerValidSW(swUrl, config) { 58 | navigator.serviceWorker 59 | .register(swUrl) 60 | .then(registration => { 61 | registration.onupdatefound = () => { 62 | const installingWorker = registration.installing; 63 | if (installingWorker == null) { 64 | return; 65 | } 66 | installingWorker.onstatechange = () => { 67 | if (installingWorker.state === 'installed') { 68 | if (navigator.serviceWorker.controller) { 69 | // At this point, the updated precached content has been fetched, 70 | // but the previous service worker will still serve the older 71 | // content until all client tabs are closed. 72 | console.log( 73 | 'New content is available and will be used when all ' + 74 | 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' 75 | ); 76 | 77 | // Execute callback 78 | if (config && config.onUpdate) { 79 | config.onUpdate(registration); 80 | } 81 | } else { 82 | // At this point, everything has been precached. 83 | // It's the perfect time to display a 84 | // "Content is cached for offline use." message. 85 | console.log('Content is cached for offline use.'); 86 | 87 | // Execute callback 88 | if (config && config.onSuccess) { 89 | config.onSuccess(registration); 90 | } 91 | } 92 | } 93 | }; 94 | }; 95 | }) 96 | .catch(error => { 97 | console.error('Error during service worker registration:', error); 98 | }); 99 | } 100 | 101 | function checkValidServiceWorker(swUrl, config) { 102 | // Check if the service worker can be found. If it can't reload the page. 103 | fetch(swUrl) 104 | .then(response => { 105 | // Ensure service worker exists, and that we really are getting a JS file. 106 | const contentType = response.headers.get('content-type'); 107 | if ( 108 | response.status === 404 || 109 | (contentType != null && contentType.indexOf('javascript') === -1) 110 | ) { 111 | // No service worker found. Probably a different app. Reload the page. 112 | navigator.serviceWorker.ready.then(registration => { 113 | registration.unregister().then(() => { 114 | window.location.reload(); 115 | }); 116 | }); 117 | } else { 118 | // Service worker found. Proceed as normal. 119 | registerValidSW(swUrl, config); 120 | } 121 | }) 122 | .catch(() => { 123 | console.log( 124 | 'No internet connection found. App is running in offline mode.' 125 | ); 126 | }); 127 | } 128 | 129 | export function unregister() { 130 | if ('serviceWorker' in navigator) { 131 | navigator.serviceWorker.ready.then(registration => { 132 | registration.unregister(); 133 | }); 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /static/JupAsBlogDesk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/JupAsBlogDesk.png -------------------------------------------------------------------------------- /static/JupDarkMobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/JupDarkMobile.png -------------------------------------------------------------------------------- /static/LightThemeMobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/LightThemeMobile.png -------------------------------------------------------------------------------- /static/SupportCoverImages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/SupportCoverImages.png -------------------------------------------------------------------------------- /static/desktop_notebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/desktop_notebook.png -------------------------------------------------------------------------------- /static/markdown_notebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/markdown_notebook.png -------------------------------------------------------------------------------- /static/notebook_mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvbsle/React-Jupyter-Viewer/048288c61a6670d6eaebe09d30fb32942a0ee965/static/notebook_mobile.png --------------------------------------------------------------------------------