Files
n8n-enterprise-unlocked/packages/frontend/editor-ui/src/stores/canvas.store.ts

33 lines
1.1 KiB
TypeScript

import { computed, ref } from 'vue';
import { defineStore } from 'pinia';
import { useWorkflowsStore } from '@/stores/workflows.store';
import type { INodeUi, XYPosition } from '@/Interface';
import { useLoadingService } from '@/composables/useLoadingService';
export const useCanvasStore = defineStore('canvas', () => {
const workflowStore = useWorkflowsStore();
const loadingService = useLoadingService();
const newNodeInsertPosition = ref<XYPosition | null>(null);
const nodes = computed<INodeUi[]>(() => workflowStore.allNodes);
const aiNodes = computed<INodeUi[]>(() =>
nodes.value.filter((node) => node.type.includes('langchain')),
);
const hasRangeSelection = ref(false);
function setHasRangeSelection(value: boolean) {
hasRangeSelection.value = value;
}
return {
newNodeInsertPosition,
isLoading: loadingService.isLoading,
aiNodes,
hasRangeSelection: computed(() => hasRangeSelection.value),
startLoading: loadingService.startLoading,
setLoadingText: loadingService.setLoadingText,
stopLoading: loadingService.stopLoading,
setHasRangeSelection,
};
});