123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- // Copyright (c) Jupyter Development Team.
- // Distributed under the terms of the Modified BSD License.
- 'use strict';
- import {
- NotebookWidget, NotebookModel, NBData, populateNotebookModel
- } from 'jupyter-js-notebook';
- import {
- Container
- } from 'phosphor-di';
- import {
- IContentsModel, IContentsManager
- } from 'jupyter-js-services';
- import {
- IServicesProvider, IFileOpener, IFileHandler
- } from '../index';
- import {
- AbstractFileHandler
- } from 'jupyter-js-filebrowser';
- import {
- Widget
- } from 'phosphor-widget';
- import './plugin.css';
- /**
- * Register the plugin contributions.
- *
- * @param container - The di container for type registration.
- *
- * #### Notes
- * This is called automatically when the plugin is loaded.
- */
- export
- function resolve(container: Container): Promise<IFileHandler> {
- return container.resolve({
- requires: [IServicesProvider, IFileOpener],
- create: (services, opener) => {
- let handler = new NotebookFileHandler(services.contentsManager);
- opener.register(handler);
- return handler;
- }
- });
- }
- /**
- * An implementation of a file handler.
- */
- export
- class NotebookFileHandler extends AbstractFileHandler {
- /**
- * Get the list of file extensions supported by the handler.
- */
- get fileExtensions(): string[] {
- return ['.ipynb']
- }
- /**
- * Get file contents given a path.
- */
- protected getContents(path: string): Promise<IContentsModel> {
- return this.manager.get(path, { type: 'notebook' });
- }
- /**
- * Create the widget from an `IContentsModel`.
- */
- protected createWidget(path: string): Widget {
- let model = new NotebookModel();
- let widget = new NotebookWidget(model);
- widget.title.text = path.split('/').pop();
- return widget;
- }
- protected setState(widget: NotebookWidget, model: IContentsModel): Promise<void> {
- let nbdata: NBData = makedata(model);
- populateNotebookModel(widget.model, nbdata);
- return Promise.resolve();
- }
- protected getState(widget: NotebookWidget): Promise<IContentsModel> {
- return Promise.resolve(void 0);
- }
- }
- function makedata(a: IContentsModel): NBData {
- return {
- content: a.content,
- name: a.name,
- path: a.path
- }
- }
|