UNPKG

jupyterlab-emrys

Version:

A computational environment for Jupyter. Powered by Emrys

104 lines (103 loc) 2.71 kB
// Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. "use strict"; var docregistry_1 = require('../docregistry'); var widgettracker_1 = require('../widgettracker'); var widget_1 = require('./widget'); /** * The list of file extensions for images. */ var EXTENSIONS = ['.png', '.gif', '.jpeg', '.jpg', '.svg', '.bmp', '.ico', '.xbm', '.tiff', '.tif']; /** * The image file handler extension. */ exports.imageHandlerExtension = { id: 'jupyter.extensions.imageHandler', requires: [docregistry_1.DocumentRegistry], activate: activateImageWidget }; /** * Activate the image widget extension. */ function activateImageWidget(app, registry) { var zoomInImage = 'ImageWidget:zoomIn'; var zoomOutImage = 'ImageWidget:zoomOut'; var resetZoomImage = 'ImageWidget:resetZoom'; var tracker = new widgettracker_1.WidgetTracker(); var image = new widget_1.ImageWidgetFactory(); var options = { fileExtensions: EXTENSIONS, displayName: 'Image', modelName: 'base64', defaultFor: EXTENSIONS, preferKernel: false, canStartKernel: false }; registry.addWidgetFactory(image, options); image.widgetCreated.connect(function (sender, newWidget) { tracker.addWidget(newWidget); }); app.commands.add([ { id: zoomInImage, handler: zoomIn }, { id: zoomOutImage, handler: zoomOut }, { id: resetZoomImage, handler: resetZoom } ]); app.palette.add([ { command: zoomInImage, category: 'Image Widget', text: 'Zoom In', }, { command: zoomOutImage, category: 'Image Widget', text: 'Zoom Out', }, { command: resetZoomImage, category: 'Image Widget', text: 'Reset Zoom', }, ]); function zoomIn() { if (!tracker.activeWidget) { return; } var widget = tracker.activeWidget; if (widget.scale > 1) { widget.scale += .5; } else { widget.scale *= 2; } } function zoomOut() { if (!tracker.activeWidget) { return; } var widget = tracker.activeWidget; if (widget.scale > 1) { widget.scale -= .5; } else { widget.scale /= 2; } } function resetZoom() { if (!tracker.activeWidget) { return; } var widget = tracker.activeWidget; widget.scale = 1; } }