diff --git a/README.md b/README.md index 53854b3d3..527c9b3b3 100644 --- a/README.md +++ b/README.md @@ -228,7 +228,6 @@ JupyterLab [version] @jupyter-server/resource-usage [version] enabled OK (python, jupyter-resource-usage) @krassowski/jupyterlab-lsp [version] enabled OK (python, jupyterlab_lsp) @elyra/code-snippet-extension [version] enabled OK - @elyra/code-viewer-extension [version] enabled OK @elyra/metadata-extension [version] enabled OK @elyra/pipeline-editor-extension [version] enabled OK @elyra/python-editor-extension [version] enabled OK diff --git a/create-release.py b/create-release.py index ecd86a4f9..4eda8097f 100755 --- a/create-release.py +++ b/create-release.py @@ -600,15 +600,8 @@ def prepare_extensions_release() -> None: f"making programming in JupyterLab more efficient by reducing repetitive work. " f"See https://elyra.readthedocs.io/en/v{config.new_version}/user_guide/code-snippets.html", ), - "elyra-code-viewer-extension": SimpleNamespace( - packages=["code-viewer-extension"], - description="The Code Viewer extension adds the ability to display a given chunk of code " - "(string) in a transient read-only 'editor' without needing to create a file." - "This extension will be available in JupyterLab core in a near future release and removed " - "from Elyra as a standalone extension.", - ), "elyra-pipeline-editor-extension": SimpleNamespace( - packages=["code-viewer-extension", "pipeline-editor-extension", "metadata-extension", "theme-extension"], + packages=["pipeline-editor-extension", "metadata-extension", "theme-extension"], description=f"The Visual Editor Pipeline extension is used to build AI pipelines from notebooks, " f"Python scripts and R scripts, simplifying the conversion of multiple notebooks " f"or script files into batch jobs or workflows." @@ -772,8 +765,6 @@ def publish_release(working_dir) -> None: f"{config.work_dir}/kfp-notebook/dist/kfp-notebook-{config.new_version}.tar.gz", f"{config.work_dir}/elyra-code-snippet-extension/dist/elyra_code_snippet_extension-{config.new_version}-py3-none-any.whl", f"{config.work_dir}/elyra-code-snippet-extension/dist/elyra-code-snippet-extension-{config.new_version}.tar.gz", - f"{config.work_dir}/elyra-code-viewer-extension/dist/elyra_code_viewer_extension-{config.new_version}-py3-none-any.whl", - f"{config.work_dir}/elyra-code-viewer-extension/dist/elyra-code-viewer-extension-{config.new_version}.tar.gz", f"{config.work_dir}/elyra-pipeline-editor-extension/dist/elyra_pipeline_editor_extension-{config.new_version}-py3-none-any.whl", f"{config.work_dir}/elyra-pipeline-editor-extension/dist/elyra-pipeline-editor-extension-{config.new_version}.tar.gz", f"{config.work_dir}/elyra-python-editor-extension/dist/elyra_python_editor_extension-{config.new_version}-py3-none-any.whl", diff --git a/docs/source/developer_guide/release.md b/docs/source/developer_guide/release.md index a64953c3c..3ac268645 100644 --- a/docs/source/developer_guide/release.md +++ b/docs/source/developer_guide/release.md @@ -30,7 +30,6 @@ In order to perform a release, one will need to have publish access to - [elyra-python-editor-extension](https://pypi.org/manage/project/elyra-python-editor-extension/collaboration/) - [elyra-pipeline-editor-extension](https://pypi.org/manage/project/elyra-pipeline-editor-extension/collaboration/) - [elyra-code-snippet-extension](https://pypi.org/manage/project/elyra-code-snippet-extension/collaboration/) - - [elyra-code-viewer-extension](https://pypi.org/manage/project/elyra-code-viewer-extension/collaboration/) - [kfp-notebook](https://pypi.org/manage/project/kfp-notebook/collaboration/) - [airflow-notebook](https://pypi.org/manage/project/airflow-notebook/collaboration/) - npm @@ -167,7 +166,6 @@ create-release.py prepare --version 2.3.0 --dev-version 2.4.0 [--rc 0][--beta 0] ```bash elyra elyra-code-snippet-extension -elyra-code-viewer-extension elyra-pipeline-editor-extension elyra-python-editor-extension elyra-r-editor-extension @@ -193,7 +191,6 @@ make container-images publish-container-images - https://github.com/conda-forge/elyra-feedstock/pulls - https://github.com/conda-forge/elyra-server-feedstock/pulls - https://github.com/conda-forge/elyra-code-snippet-extension-feedstock/pulls - - https://github.com/conda-forge/elyra-code-viewer-extension-feedstock/pulls - https://github.com/conda-forge/elyra-pipeline-editor-extension-feedstock/pulls - https://github.com/conda-forge/elyra-python-editor-extension-feedstock/pulls - https://github.com/conda-forge/elyra-r-editor-extension-feedstock/pulls @@ -212,4 +209,4 @@ To create the release [notes]: - Add descriptive summaries for each release highlight (features users should be aware of), including links to the relevant documentation. - The contributor list and new contributor list is automatically generated by GitHub. - Request a release notes review once the draft is complete and publish the release. \ No newline at end of file + Request a release notes review once the draft is complete and publish the release. diff --git a/docs/source/getting_started/installation.md b/docs/source/getting_started/installation.md index 231eac603..0e9e55be1 100644 --- a/docs/source/getting_started/installation.md +++ b/docs/source/getting_started/installation.md @@ -185,7 +185,6 @@ JupyterLab [version] @jupyter-server/resource-usage [version] enabled OK (python, jupyter-resource-usage) @krassowski/jupyterlab-lsp [version] enabled OK (python, jupyterlab_lsp) @elyra/code-snippet-extension [version] enabled OK - @elyra/code-viewer-extension [version] enabled OK @elyra/metadata-extension [version] enabled OK @elyra/pipeline-editor-extension [version] enabled OK @elyra/python-editor-extension [version] enabled OK diff --git a/labextensions/elyra_code_viewer_extension/__init__.py b/labextensions/elyra_code_viewer_extension/__init__.py deleted file mode 100644 index 7b6a8f18d..000000000 --- a/labextensions/elyra_code_viewer_extension/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -try: - from ._version import __version__ -except ImportError: - # Fallback when using the package in dev mode without installing - # in editable mode with pip. It is highly recommended to install - # the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs - import warnings - - warnings.warn("Importing 'elyra_code_viewer_extension' outside a proper installation.") - __version__ = "dev" - - -def _jupyter_labextension_paths(): - return [{"src": "labextension", "dest": "@elyra/code-viewer-extension"}] diff --git a/packages/code-viewer/install.json b/packages/code-viewer/install.json deleted file mode 100644 index 553bb2849..000000000 --- a/packages/code-viewer/install.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "packageName": "elyra_code_viewer_extension", - "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package elyra_code_viewer_extension" -} diff --git a/packages/code-viewer/package.json b/packages/code-viewer/package.json deleted file mode 100644 index db1944943..000000000 --- a/packages/code-viewer/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "@elyra/code-viewer-extension", - "version": "4.0.0-dev", - "description": "JupyterLab extension - Display code without a file", - "keywords": [ - "jupyter", - "jupyterlab", - "jupyterlab-extension" - ], - "homepage": "https://github.com/elyra-ai/elyra", - "bugs": { - "url": "https://github.com/elyra-ai/elyra/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/elyra-ai/elyra/" - }, - "license": "Apache-2.0", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "style": "style/index.css", - "files": [ - "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", - "src/**/*.{ts,tsx}", - "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}" - ], - "scripts": { - "build": "jlpm build:lib && jlpm build:labextension:dev", - "build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension", - "build:labextension": "jupyter labextension build .", - "build:labextension:dev": "jupyter labextension build --development True .", - "build:lib": "tsc --sourceMap", - "build:lib:prod": "tsc", - "clean": "jlpm clean:lib", - "clean:lib": "rimraf lib tsconfig.tsbuildinfo", - "clean:lintcache": "rimraf .eslintcache .stylelintcache", - "clean:labextension": "rimraf ../../../../labextensions/elyra_code_viewer_extension/labextension ../../../../labextensions/elyra_code_viewer_extension/_version.py", - "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache", - "cy:instrument": "npx nyc instrument --compact=false --in-place src/ src/", - "eslint": "jlpm eslint:check --fix", - "eslint:check": "eslint . --cache --ext .ts,.tsx", - "install:extension": "jlpm build", - "lint": "jlpm stylelint && jlpm prettier && jlpm eslint", - "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check", - "prettier": "jlpm prettier:base --write --list-different", - "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", - "prettier:check": "jlpm prettier:base --check", - "stylelint": "jlpm stylelint:check --fix", - "stylelint:check": "stylelint --cache \"style/**/*.css\"", - "test": "jest --coverage --passWithNoTests", - "watch": "run-p watch:src watch:labextension", - "watch:src": "tsc -w --sourceMap", - "watch:labextension": "jupyter labextension watch ." - }, - "dependencies": { - "@jupyterlab/application": "^4.2.5", - "@jupyterlab/apputils": "^4.2.5", - "@jupyterlab/codeeditor": "^4.2.5", - "@jupyterlab/ui-components": "^4.2.5", - "@lumino/algorithm": "*", - "@lumino/widgets": "^2.3.1" - }, - "devDependencies": { - "@jupyterlab/builder": "^4.2.5", - "rimraf": "~5.0.5", - "typescript": "~5.1.6" - }, - "publishConfig": { - "access": "public" - }, - "jupyterlab": { - "extension": true, - "outputDir": "../../labextensions/elyra_code_viewer_extension/labextension" - } -} diff --git a/packages/code-viewer/setup.py b/packages/code-viewer/setup.py deleted file mode 100644 index aefdf20db..000000000 --- a/packages/code-viewer/setup.py +++ /dev/null @@ -1 +0,0 @@ -__import__("setuptools").setup() diff --git a/packages/code-viewer/src/CodeViewerWidget.ts b/packages/code-viewer/src/CodeViewerWidget.ts deleted file mode 100644 index 42d690ac2..000000000 --- a/packages/code-viewer/src/CodeViewerWidget.ts +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2018-2025 Elyra Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { CodeEditor, CodeEditorWrapper } from '@jupyterlab/codeeditor'; -import { StackedLayout, Widget } from '@lumino/widgets'; - -export class CodeViewerWidget extends Widget { - /** - * Construct a new code viewer widget. - */ - constructor(options: CodeViewerWidget.IOptions) { - super(); - this.model = options.model; - - const editorWidget = new CodeEditorWrapper({ - factory: options.factory, - model: options.model - }); - this.editor = editorWidget.editor; - this.editor.setOption('readOnly', true); - - const layout = (this.layout = new StackedLayout()); - layout.addWidget(editorWidget); - } - - static getCodeViewer( - options: CodeViewerWidget.INoModelOptions - ): CodeViewerWidget { - const model = new CodeEditor.Model({ mimeType: options.mimeType }); - model.sharedModel.source = options.content; - return new CodeViewerWidget({ factory: options.factory, model }); - } - - getContent = (): string => this.model.sharedModel.getSource(); - getMimeType = (): string => this.model.mimeType; - - model: CodeEditor.IModel; - editor: CodeEditor.IEditor; -} - -/** - * The namespace for code viewer widget. - */ -export namespace CodeViewerWidget { - /** - * The options used to create an code viewer widget. - */ - export interface IOptions { - /** - * A code editor factory. - */ - factory: CodeEditor.Factory; - - /** - * The content model for the viewer. - */ - model: CodeEditor.IModel; - } - - /** - * The options used to create an code viewer widget without a model. - */ - export interface INoModelOptions { - /** - * A code editor factory. - */ - factory: CodeEditor.Factory; - - /** - * The content to display in the viewer. - */ - content: string; - - /** - * The mime type for the content. - */ - mimeType?: string; - } -} diff --git a/packages/code-viewer/src/index.ts b/packages/code-viewer/src/index.ts deleted file mode 100644 index ca9a46416..000000000 --- a/packages/code-viewer/src/index.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2018-2025 Elyra Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - ILayoutRestorer, - JupyterFrontEnd, - JupyterFrontEndPlugin -} from '@jupyterlab/application'; -import { MainAreaWidget, WidgetTracker } from '@jupyterlab/apputils'; -import { CodeEditor, IEditorServices } from '@jupyterlab/codeeditor'; -import { textEditorIcon } from '@jupyterlab/ui-components'; -import { toArray } from '@lumino/algorithm'; - -import { CodeViewerWidget } from './CodeViewerWidget'; - -const ELYRA_CODE_VIEWER_NAMESPACE = 'elyra-code-viewer-extension'; - -interface IOpenCodeViewerArgs { - content: string; - label?: string; - mimeType?: string; - extension?: string; - widgetId?: string; -} - -/** - * The command IDs used by the code-viewer plugin. - */ -const CommandIDs = { - openViewer: 'elyra-code-viewer:open' -}; - -/** - * Initialization data for the code-viewer extension. - */ -const extension: JupyterFrontEndPlugin = { - id: ELYRA_CODE_VIEWER_NAMESPACE, - autoStart: true, - requires: [IEditorServices], - optional: [ILayoutRestorer], - activate: ( - app: JupyterFrontEnd, - editorServices: IEditorServices, - restorer: ILayoutRestorer - ) => { - console.log('Elyra - code-viewer extension is activated!'); - - const tracker = new WidgetTracker>({ - namespace: ELYRA_CODE_VIEWER_NAMESPACE - }); - - // Handle state restoration - if (restorer) { - void restorer.restore(tracker, { - command: CommandIDs.openViewer, - args: (widget) => ({ - content: widget.content.getContent(), - label: widget.content.title.label, - mimeType: widget.content.getMimeType(), - widgetId: widget.content.id - }), - name: (widget) => widget.content.id - }); - } - - const openCodeViewer = async ( - args: IOpenCodeViewerArgs - ): Promise => { - const func = editorServices.factoryService.newDocumentEditor; - const factory: CodeEditor.Factory = (options) => { - return func(options); - }; - - // Derive mimetype from extension - let mimetype = args.mimeType; - if (!mimetype && args.extension) { - mimetype = editorServices.mimeTypeService.getMimeTypeByFilePath( - `temp.${args.extension.replace(/\\.$/, '')}` - ); - } - - const widget = CodeViewerWidget.getCodeViewer({ - factory, - content: args.content, - mimeType: mimetype - }); - widget.title.label = args.label || 'Code Viewer'; - widget.title.caption = widget.title.label; - - // Get the fileType based on the mimetype to determine the icon - const fileType = toArray(app.docRegistry.fileTypes()).find((fileType) => { - return mimetype ? fileType.mimeTypes.includes(mimetype) : undefined; - }); - widget.title.icon = fileType?.icon ?? textEditorIcon; - - if (args.widgetId) { - widget.id = args.widgetId; - } - const main = new MainAreaWidget({ content: widget }); - await tracker.add(main); - app.shell.add(main, 'main'); - return widget; - }; - - app.commands.addCommand(CommandIDs.openViewer, { - execute: (args) => { - return openCodeViewer(args as unknown as IOpenCodeViewerArgs); - } - }); - } -}; - -export default extension; diff --git a/packages/code-viewer/style/index.css b/packages/code-viewer/style/index.css deleted file mode 100644 index c89f75005..000000000 --- a/packages/code-viewer/style/index.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2018-2025 Elyra Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ diff --git a/packages/code-viewer/tsconfig.json b/packages/code-viewer/tsconfig.json deleted file mode 100644 index 84575cb5f..000000000 --- a/packages/code-viewer/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "lib" - }, - "include": ["src"] -} diff --git a/packages/pipeline-editor/src/PipelineEditorWidget.tsx b/packages/pipeline-editor/src/PipelineEditorWidget.tsx index eba11bd26..d9a4f2a23 100644 --- a/packages/pipeline-editor/src/PipelineEditorWidget.tsx +++ b/packages/pipeline-editor/src/PipelineEditorWidget.tsx @@ -119,7 +119,7 @@ export const commandIDs = { submitNotebook: 'notebook:submit', addFileToPipeline: 'pipeline-editor:add-node', refreshPalette: 'pipeline-editor:refresh-palette', - openViewer: 'elyra-code-viewer:open' + openViewer: 'code-viewer:open' }; interface IExtendedThemeProviderProps diff --git a/pyproject.toml b/pyproject.toml index 50fa077cd..d8dbb4491 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -176,7 +176,6 @@ core-metadata-version = "2.3" # Include data files with dist [tool.hatch.build.targets.wheel.shared-data] "labextensions/elyra_code_snippet_extension/labextension" = "share/jupyter/labextensions/@elyra/code-snippet-extension" -"labextensions/elyra_code_viewer_extension/labextension" = "share/jupyter/labextensions/@elyra/code-viewer-extension" "labextensions/elyra_metadata_common/labextension" = "share/jupyter/labextensions/@elyra/metadata-common" "labextensions/elyra_metadata_extension/labextension" = "share/jupyter/labextensions/@elyra/metadata-extension" "labextensions/elyra_pipeline_editor_extension/labextension" = "share/jupyter/labextensions/@elyra/pipeline-editor-extension" diff --git a/yarn.lock b/yarn.lock index 9644c5d0c..24d600ea2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3199,22 +3199,6 @@ __metadata: languageName: unknown linkType: soft -"@elyra/code-viewer-extension@workspace:packages/code-viewer": - version: 0.0.0-use.local - resolution: "@elyra/code-viewer-extension@workspace:packages/code-viewer" - dependencies: - "@jupyterlab/application": ^4.2.5 - "@jupyterlab/apputils": ^4.2.5 - "@jupyterlab/builder": ^4.2.5 - "@jupyterlab/codeeditor": ^4.2.5 - "@jupyterlab/ui-components": ^4.2.5 - "@lumino/algorithm": "*" - "@lumino/widgets": ^2.3.1 - rimraf: ~5.0.5 - typescript: ~5.1.6 - languageName: unknown - linkType: soft - "@elyra/metadata-common@4.0.0-dev, @elyra/metadata-common@workspace:packages/metadata-common": version: 0.0.0-use.local resolution: "@elyra/metadata-common@workspace:packages/metadata-common"