@@ -65,6 +65,15 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
6565 return false ;
6666 }
6767
68+ isExtensionInNode ( node : any , extensionType : string ) : boolean {
69+ if ( node && node . data ) {
70+ return node . data . some (
71+ ( extension : any ) => extensionType === extension . type
72+ ) ;
73+ }
74+ return false ;
75+ }
76+
6877 isValidCodeFlowCanvasNode ( node : any ) : boolean {
6978 if ( node . data && Array . isArray ( node . data ) ) {
7079 return node . data . some (
@@ -76,6 +85,10 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
7685 return false ;
7786 }
7887
88+ isOcifCompatibleCodeFlowCanvasNode ( nodeType : string ) {
89+ return codeFlowCanvasToOcif [ nodeType ] !== undefined ;
90+ }
91+
7992 doesRootOCIFNodeExistInFlow (
8093 id : string ,
8194 elements : ElementNodeMap < BaseNodeInfo >
@@ -123,8 +136,9 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
123136 ) {
124137 const nodeType = codeFlowCanvasToOcif [ d . type ] ?? d . type ;
125138 if (
126- nodeType === '@ocif/node/rect' ||
127- nodeType === '@ocif/node/oval'
139+ ! this . isExtensionInNode ( codeFlowCanvasNode , nodeType ) &&
140+ ( nodeType === '@ocif/node/rect' ||
141+ nodeType === '@ocif/node/oval' )
128142 ) {
129143 const canvasNode = this . getNodeFromElements (
130144 node . id ,
@@ -215,18 +229,34 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
215229 ports : ports ,
216230 } ) ;
217231 }
218- const clonedNodeInfo = structuredClone ( nodeInfo ) as any ;
219- delete clonedNodeInfo . fillColor ;
220- delete clonedNodeInfo . strokeColor ;
221- delete clonedNodeInfo . strokeWidth ;
222232
233+ const clonedNodeInfo = structuredClone ( nodeInfo ) as any ;
223234 const ocifNode : OCIFNode = {
224235 id : `${ node . id } ` ,
225236 position : [ node . x , node . y ] ,
226237 size : [ node . width ?? 0 , node . height ?? 0 ] ,
227238 data : [ ...portsNode ] ,
228239 resource : `${ node . id } -resource` ,
229240 } ;
241+
242+ if (
243+ ocifNode &&
244+ ocifNode . data &&
245+ nodeInfo . type &&
246+ this . isOcifCompatibleCodeFlowCanvasNode ( nodeInfo . type )
247+ ) {
248+ const ocifType = codeFlowCanvasToOcif [ nodeInfo . type ] ;
249+ ocifNode . data . push ( {
250+ fillColor : clonedNodeInfo . fillColor ,
251+ strokeColor : clonedNodeInfo . strokeColor ,
252+ strokeWidth : clonedNodeInfo . strokeWidth ,
253+ type : ocifType ,
254+ } ) ;
255+ }
256+ delete clonedNodeInfo . fillColor ;
257+ delete clonedNodeInfo . strokeColor ;
258+ delete clonedNodeInfo . strokeWidth ;
259+
230260 if ( nodeInfo . type === 'group' ) {
231261 // only export group as a relation
232262 if (
0 commit comments