diff --git a/frontend/packages/process-editor/src/hooks/useBpmnEditor.ts b/frontend/packages/process-editor/src/hooks/useBpmnEditor.ts index 810c2155b7b..e994a617839 100644 --- a/frontend/packages/process-editor/src/hooks/useBpmnEditor.ts +++ b/frontend/packages/process-editor/src/hooks/useBpmnEditor.ts @@ -1,6 +1,6 @@ import { useEffect, useCallback } from 'react'; import { useBpmnContext } from '../contexts/BpmnContext'; -import { useBpmnModeler } from './useBpmnModeler'; +import { BpmnModelerInstance } from '../utils/bpmnModeler/BpmnModelerInstance'; import { useBpmnConfigPanelFormContext } from '../contexts/BpmnConfigPanelContext'; import { useBpmnApiContext } from '../contexts/BpmnApiContext'; import type { TaskEvent } from '../types/TaskEvent'; @@ -15,7 +15,6 @@ export type UseBpmnEditorResult = (div: HTMLDivElement) => void; export const useBpmnEditor = (): UseBpmnEditorResult => { const { getUpdatedXml, bpmnXml, modelerRef, setBpmnDetails } = useBpmnContext(); const { metadataFormRef, resetForm } = useBpmnConfigPanelFormContext(); - const { getModeler, destroyModeler } = useBpmnModeler(); const { addAction } = useStudioRecommendedNextActionContext(); const { saveBpmn, onProcessTaskAdd, onProcessTaskRemove } = useBpmnApiContext(); @@ -96,10 +95,7 @@ export const useBpmnEditor = (): UseBpmnEditorResult => { const canvasRef = useCallback((div: HTMLDivElement) => { if (modelerRef.current) return; - // GetModeler can only be fetched from this hook once since the modeler creates a - // new instance and will attach the same canvasRef container to all instances it fetches. - // Set modelerRef.current to the Context so that it can be used in other components - modelerRef.current = getModeler(div); + modelerRef.current = BpmnModelerInstance.getInstance(div); initializeEditor().then(() => { // Wait for the initializeEditor to be initialized before attaching event listeners, to avoid trigger add.shape events on first draw @@ -112,7 +108,7 @@ export const useBpmnEditor = (): UseBpmnEditorResult => { useEffect(() => { // Destroy the modeler instance when the component is unmounted return () => { - destroyModeler(); + BpmnModelerInstance.destroyInstance(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); diff --git a/frontend/packages/process-editor/src/hooks/useBpmnModeler/index.ts b/frontend/packages/process-editor/src/hooks/useBpmnModeler/index.ts deleted file mode 100644 index b1d93287fcf..00000000000 --- a/frontend/packages/process-editor/src/hooks/useBpmnModeler/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { useBpmnModeler } from './useBpmnModeler'; diff --git a/frontend/packages/process-editor/src/hooks/useBpmnModeler/useBpmnModeler.test.ts b/frontend/packages/process-editor/src/hooks/useBpmnModeler/useBpmnModeler.test.ts deleted file mode 100644 index fac817172ca..00000000000 --- a/frontend/packages/process-editor/src/hooks/useBpmnModeler/useBpmnModeler.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { renderHook } from '@testing-library/react'; -import { useBpmnModeler } from './useBpmnModeler'; -import type Modeler from 'bpmn-js/lib/Modeler'; - -type ModelerMock = Modeler & { container: { container: HTMLDivElement } }; - -jest.mock( - 'bpmn-js/lib/Modeler', - () => - class BpmnModelerMockImpl { - public container: HTMLDivElement; - - constructor(_container: HTMLDivElement) { - this.container = _container; - } - }, -); - -const mockedCanvasHTMLDivElement = `