diff --git a/elyra/static/icons/notebook.svg b/elyra/static/icons/notebook.svg
new file mode 100644
index 000000000..24a197ba0
--- /dev/null
+++ b/elyra/static/icons/notebook.svg
@@ -0,0 +1,6 @@
+
diff --git a/elyra/static/icons/py-logo.svg b/elyra/static/icons/py-logo.svg
new file mode 100644
index 000000000..1f632c58b
--- /dev/null
+++ b/elyra/static/icons/py-logo.svg
@@ -0,0 +1,6 @@
+
diff --git a/elyra/static/icons/r-logo.svg b/elyra/static/icons/r-logo.svg
new file mode 100644
index 000000000..6b7b8f724
--- /dev/null
+++ b/elyra/static/icons/r-logo.svg
@@ -0,0 +1,4 @@
+
diff --git a/packages/pipeline-editor/src/pipeline-hooks.ts b/packages/pipeline-editor/src/pipeline-hooks.ts
index ff2888041..a5e22847e 100644
--- a/packages/pipeline-editor/src/pipeline-hooks.ts
+++ b/packages/pipeline-editor/src/pipeline-hooks.ts
@@ -15,10 +15,8 @@
*/
import { MetadataService, RequestHandler } from '@elyra/services';
-import { pyIcon, rIcon } from '@elyra/ui-components';
import { URLExt } from '@jupyterlab/coreutils';
import { ServerConnection } from '@jupyterlab/services';
-import { notebookIcon } from '@jupyterlab/ui-components';
import produce from 'immer';
import useSWR from 'swr';
@@ -148,18 +146,9 @@ export const sortPalette = (palette: {
// TODO: This should be enabled through `extensions`
const NodeIcons: Map = new Map([
- [
- 'execute-notebook-node',
- 'data:image/svg+xml;utf8,' + encodeURIComponent(notebookIcon.svgstr)
- ],
- [
- 'execute-python-node',
- 'data:image/svg+xml;utf8,' + encodeURIComponent(pyIcon.svgstr)
- ],
- [
- 'execute-r-node',
- 'data:image/svg+xml;utf8,' + encodeURIComponent(rIcon.svgstr)
- ]
+ ['execute-notebook-node', 'static/elyra/notebook.svg'],
+ ['execute-python-node', 'static/elyra/py-logo.svg'],
+ ['execute-r-node', 'static/elyra/r-logo.svg']
]);
// TODO: We should decouple components and properties to support lazy loading.
@@ -213,18 +202,18 @@ export const componentFetcher = async (type: string): Promise => {
category.node_types?.[0]?.runtime_type ?? 'LOCAL';
const type = types.find((t: any) => t.id === category_runtime_type);
- const defaultIcon = URLExt.parse(
- URLExt.join(ServerConnection.makeSettings().baseUrl, type?.icon || '')
- ).pathname;
+ const baseUrl = ServerConnection.makeSettings().baseUrl;
+ const defaultIcon = URLExt.parse(URLExt.join(baseUrl, type?.icon || ''))
+ .pathname;
category.image = defaultIcon;
for (const node of category.node_types) {
// update icon
- let nodeIcon = NodeIcons.get(node.op);
- if (nodeIcon === undefined || nodeIcon === '') {
- nodeIcon = defaultIcon;
- }
+ const genericNodeIcon = NodeIcons.get(node.op);
+ const nodeIcon = genericNodeIcon
+ ? URLExt.parse(URLExt.join(baseUrl, genericNodeIcon)).pathname
+ : defaultIcon;
// Not sure which is needed...
node.image = nodeIcon;
diff --git a/tests/snapshots/pipeline-editor-tests/matches-complex-pipeline-snapshot.1.snap b/tests/snapshots/pipeline-editor-tests/matches-complex-pipeline-snapshot.1.snap
index 169d6ae2b..1eb22e3a2 100644
--- a/tests/snapshots/pipeline-editor-tests/matches-complex-pipeline-snapshot.1.snap
+++ b/tests/snapshots/pipeline-editor-tests/matches-complex-pipeline-snapshot.1.snap
@@ -38,7 +38,7 @@ Object {
"label": "",
"ui_data": Object {
"description": "Run notebook file",
- "image": "data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20viewBox%3D%220%200%2022%2022%22%3E%0A%20%20%3Cg%20class%3D%22jp-icon-warn0%20jp-icon-selectable%22%20fill%3D%22%23EF6C00%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M18.7%203.3v15.4H3.3V3.3h15.4m1.5-1.5H1.8v18.3h18.3l.1-18.3z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M16.5%2016.5l-5.4-4.3-5.6%204.3v-11h11z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A",
+ "image": "/static/elyra/notebook.svg",
"label": "producer.ipynb",
"x_pos": 85,
"y_pos": 95,
@@ -93,7 +93,7 @@ Object {
"label": "",
"ui_data": Object {
"description": "Run notebook file",
- "image": "data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20viewBox%3D%220%200%2022%2022%22%3E%0A%20%20%3Cg%20class%3D%22jp-icon-warn0%20jp-icon-selectable%22%20fill%3D%22%23EF6C00%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M18.7%203.3v15.4H3.3V3.3h15.4m1.5-1.5H1.8v18.3h18.3l.1-18.3z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M16.5%2016.5l-5.4-4.3-5.6%204.3v-11h11z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A",
+ "image": "/static/elyra/notebook.svg",
"label": "consumer.ipynb",
"x_pos": 105,
"y_pos": 115,
@@ -150,7 +150,7 @@ Object {
"label": "",
"ui_data": Object {
"description": "Run Python script",
- "image": "data:image/svg+xml;utf8,%3Csvg%20width%3D%2232%22%20height%3D%2232%22%20viewBox%3D%220%200%20238%20237%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20overflow%3D%22hidden%22%3E%0A%20%20%20%20%3Cg%20transform%3D%22translate(-706%20314)%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22jp-icon-selectable%22%20d%3D%22M792.441-295.763C786.496-295.763%20781.697-290.979%20781.697-285.062%20781.697-279.166%20786.496-274.382%20792.441-274.382%20798.365-274.382%20803.184-279.166%20803.184-285.062%20803.184-290.979%20798.365-295.763%20792.441-295.763ZM823.472-312.998C833.277-313.043%20843.484-312.329%20853.336-310.724%20868.899-308.185%20882-296.728%20882-281.516L882-228.072C882-212.398%20869.282-199.557%20853.336-199.557L796.03-199.557C776.58-199.557%20760.189-183.169%20760.189-164.641L760.189-139%20740.485-139C723.817-139%20714.114-150.877%20710.037-167.494%20704.538-189.82%20704.772-203.124%20710.037-224.505%20714.602-243.159%20729.189-253%20745.857-253L767.365-253%20824.693-253%20824.693-260.134%20767.365-260.134%20767.365-281.516C767.365-297.715%20771.76-306.527%20796.03-310.724%20804.268-312.151%20813.668-312.953%20823.472-312.998Z%22%20fill%3D%22%23366A96%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22jp-icon-selectable%22%20d%3D%22M857.377-117.071C851.466-117.071%20846.655-112.267%20846.655-106.348%20846.655-100.406%20851.466-95.6026%20857.377-95.6026%20863.31-95.6026%20868.099-100.406%20868.099-106.348%20868.099-112.267%20863.31-117.071%20857.377-117.071ZM889.563-253%20911.007-253C927.662-253%20935.502-240.696%20939.614-224.39%20945.334-201.743%20945.589-184.804%20939.614-167.148%20933.828-150%20927.642-138.539%20911.007-138.539L882.402-138.539%20825.211-138.539%20825.211-131.375%20882.402-131.375%20882.402-109.908C882.402-93.6435%20868.205-85.4055%20853.796-81.2973%20832.12-75.1034%20814.722-76.0513%20796.606-81.2973%20781.476-85.6801%20768-94.6332%20768-109.908L768-163.568C768-179.01%20780.947-192.199%20796.606-192.199L853.796-192.199C872.846-192.199%20889.563-208.568%20889.563-227.971Z%22%20fill%3D%22%23FFC836%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A",
+ "image": "/static/elyra/py-logo.svg",
"label": "setup.py",
"x_pos": 125,
"y_pos": 135,
@@ -208,7 +208,7 @@ Object {
"label": "",
"ui_data": Object {
"description": "Run Python script",
- "image": "data:image/svg+xml;utf8,%3Csvg%20width%3D%2232%22%20height%3D%2232%22%20viewBox%3D%220%200%20238%20237%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20overflow%3D%22hidden%22%3E%0A%20%20%20%20%3Cg%20transform%3D%22translate(-706%20314)%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22jp-icon-selectable%22%20d%3D%22M792.441-295.763C786.496-295.763%20781.697-290.979%20781.697-285.062%20781.697-279.166%20786.496-274.382%20792.441-274.382%20798.365-274.382%20803.184-279.166%20803.184-285.062%20803.184-290.979%20798.365-295.763%20792.441-295.763ZM823.472-312.998C833.277-313.043%20843.484-312.329%20853.336-310.724%20868.899-308.185%20882-296.728%20882-281.516L882-228.072C882-212.398%20869.282-199.557%20853.336-199.557L796.03-199.557C776.58-199.557%20760.189-183.169%20760.189-164.641L760.189-139%20740.485-139C723.817-139%20714.114-150.877%20710.037-167.494%20704.538-189.82%20704.772-203.124%20710.037-224.505%20714.602-243.159%20729.189-253%20745.857-253L767.365-253%20824.693-253%20824.693-260.134%20767.365-260.134%20767.365-281.516C767.365-297.715%20771.76-306.527%20796.03-310.724%20804.268-312.151%20813.668-312.953%20823.472-312.998Z%22%20fill%3D%22%23366A96%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22jp-icon-selectable%22%20d%3D%22M857.377-117.071C851.466-117.071%20846.655-112.267%20846.655-106.348%20846.655-100.406%20851.466-95.6026%20857.377-95.6026%20863.31-95.6026%20868.099-100.406%20868.099-106.348%20868.099-112.267%20863.31-117.071%20857.377-117.071ZM889.563-253%20911.007-253C927.662-253%20935.502-240.696%20939.614-224.39%20945.334-201.743%20945.589-184.804%20939.614-167.148%20933.828-150%20927.642-138.539%20911.007-138.539L882.402-138.539%20825.211-138.539%20825.211-131.375%20882.402-131.375%20882.402-109.908C882.402-93.6435%20868.205-85.4055%20853.796-81.2973%20832.12-75.1034%20814.722-76.0513%20796.606-81.2973%20781.476-85.6801%20768-94.6332%20768-109.908L768-163.568C768-179.01%20780.947-192.199%20796.606-192.199L853.796-192.199C872.846-192.199%20889.563-208.568%20889.563-227.971Z%22%20fill%3D%22%23FFC836%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A",
+ "image": "/static/elyra/py-logo.svg",
"label": "create-source-files.py",
"x_pos": 145,
"y_pos": 155,
@@ -266,7 +266,7 @@ Object {
"label": "",
"ui_data": Object {
"description": "Run Python script",
- "image": "data:image/svg+xml;utf8,%3Csvg%20width%3D%2232%22%20height%3D%2232%22%20viewBox%3D%220%200%20238%20237%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20overflow%3D%22hidden%22%3E%0A%20%20%20%20%3Cg%20transform%3D%22translate(-706%20314)%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22jp-icon-selectable%22%20d%3D%22M792.441-295.763C786.496-295.763%20781.697-290.979%20781.697-285.062%20781.697-279.166%20786.496-274.382%20792.441-274.382%20798.365-274.382%20803.184-279.166%20803.184-285.062%20803.184-290.979%20798.365-295.763%20792.441-295.763ZM823.472-312.998C833.277-313.043%20843.484-312.329%20853.336-310.724%20868.899-308.185%20882-296.728%20882-281.516L882-228.072C882-212.398%20869.282-199.557%20853.336-199.557L796.03-199.557C776.58-199.557%20760.189-183.169%20760.189-164.641L760.189-139%20740.485-139C723.817-139%20714.114-150.877%20710.037-167.494%20704.538-189.82%20704.772-203.124%20710.037-224.505%20714.602-243.159%20729.189-253%20745.857-253L767.365-253%20824.693-253%20824.693-260.134%20767.365-260.134%20767.365-281.516C767.365-297.715%20771.76-306.527%20796.03-310.724%20804.268-312.151%20813.668-312.953%20823.472-312.998Z%22%20fill%3D%22%23366A96%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22jp-icon-selectable%22%20d%3D%22M857.377-117.071C851.466-117.071%20846.655-112.267%20846.655-106.348%20846.655-100.406%20851.466-95.6026%20857.377-95.6026%20863.31-95.6026%20868.099-100.406%20868.099-106.348%20868.099-112.267%20863.31-117.071%20857.377-117.071ZM889.563-253%20911.007-253C927.662-253%20935.502-240.696%20939.614-224.39%20945.334-201.743%20945.589-184.804%20939.614-167.148%20933.828-150%20927.642-138.539%20911.007-138.539L882.402-138.539%20825.211-138.539%20825.211-131.375%20882.402-131.375%20882.402-109.908C882.402-93.6435%20868.205-85.4055%20853.796-81.2973%20832.12-75.1034%20814.722-76.0513%20796.606-81.2973%20781.476-85.6801%20768-94.6332%20768-109.908L768-163.568C768-179.01%20780.947-192.199%20796.606-192.199L853.796-192.199C872.846-192.199%20889.563-208.568%20889.563-227.971Z%22%20fill%3D%22%23FFC836%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A",
+ "image": "/static/elyra/py-logo.svg",
"label": "producer-script.py",
"x_pos": 165,
"y_pos": 175,
diff --git a/tests/snapshots/pipeline-editor-tests/matches-simple-pipeline-snapshot.1.snap b/tests/snapshots/pipeline-editor-tests/matches-simple-pipeline-snapshot.1.snap
index b5f431037..c3960f7ae 100644
--- a/tests/snapshots/pipeline-editor-tests/matches-simple-pipeline-snapshot.1.snap
+++ b/tests/snapshots/pipeline-editor-tests/matches-simple-pipeline-snapshot.1.snap
@@ -45,7 +45,7 @@ Object {
},
],
"description": "Run notebook file",
- "image": "data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20viewBox%3D%220%200%2022%2022%22%3E%0A%20%20%3Cg%20class%3D%22jp-icon-warn0%20jp-icon-selectable%22%20fill%3D%22%23EF6C00%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M18.7%203.3v15.4H3.3V3.3h15.4m1.5-1.5H1.8v18.3h18.3l.1-18.3z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M16.5%2016.5l-5.4-4.3-5.6%204.3v-11h11z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A",
+ "image": "/static/elyra/notebook.svg",
"label": "helloworld.ipynb",
"x_pos": 85,
"y_pos": 95,