         @element = jupyter.jupyter_nbviewer(@editor, @filename, @content, @opts)
         @wrapped = @element.data('jupyter_nbviewer')
 
+class JupyterNBViewerEmbedded extends FileEditor
+    constructor: (@editor, @filename, @content, opts) ->
+        @element = templates.find(".salvus-editor-static-html").clone()
+        @init_buttons()
+
+    init_buttons: () =>
+
+    show: () =>
+        if not @is_active()
+            return
+        if not @iframe?
+            @iframe = @element.find(".salvus-editor-static-html-content").find('iframe')
+            @iframe.attr('src', '//nbviewer.jupyter.org/urls/cloud.sagemath.com/14eed217-2d3c-4975-a381-b69edcb40e0e/raw/scratch/1_notmnist.ipynb')
+        @element.show()
+        @element.css(top:@editor.editor_top_position())
+        @element.maxheight(offset:18)
+        @iframe.maxheight()
+
 #############################################
 # Editor for HTML/Markdown/ReST documents
 #############################################

    else
        return 'fa-file-o'

PUBLIC_ACCESS_UNSUPPORTED = ['terminal','latex','history','tasks','course','ipynb', 'chat', 'git', 'template']

# public access file types *NOT* yet supported
# (this should quickly shrink to zero)

        # This approach to public "editor"/viewer types is temporary.
        if extra_opts.public_access
            opts.read_only = true
            fn_extension = filename_extension_notilde(filename)
            if fn_extension == 'html'
                if opts.content.indexOf("#ipython_notebook") != -1
                    editor = new JupyterNBViewer(@, filename, opts.content)
                else
                    editor = new StaticHTML(@, filename, opts.content, extra_opts)
                return editor
            if fn_extension == 'ipynb'
                return new JupyterNBViewerEmbedded(@, filename, opts.content)

        # These are used *ONLY* for development purposes; it allows us to easily
        # circumvent everything else for testing.
