| import 'dart:async'; |
| import 'package:dartpad_editor/dartpad_editor.dart'; |
| import 'package:jaspr/jaspr.dart'; |
| import '../../../utils/provider.dart'; |
| import '../../workspace/data/workspace_repository.dart'; |
| import '../components/image_preview.dart'; |
| |
| class ImageTab extends EditorTab<Component> { |
| ImageTab(super.path); |
| |
| @override |
| Component build() { |
| return Builder( |
| builder: (context) { |
| final workspaceRepository = context.get<WorkspaceRepository>(); |
| return ImagePreview(path: path, workspaceRepository: workspaceRepository); |
| }, |
| ); |
| } |
| } |
| |
| class ImageTabAdapter extends EditorTabAdapter<Component> { |
| const ImageTabAdapter(); |
| |
| @override |
| Future<EditorTab<Component>?> createTab(String path) { |
| final lower = path.toLowerCase(); |
| final isImage = |
| lower.endsWith('.png') || |
| lower.endsWith('.jpg') || |
| lower.endsWith('.jpeg') || |
| lower.endsWith('.gif') || |
| lower.endsWith('.ico') || |
| lower.endsWith('.svg') || |
| lower.endsWith('.webp'); |
| if (isImage) { |
| return Future.value(ImageTab(path)); |
| } |
| return Future.value(null); |
| } |
| } |