|
|
|
@ -1,4 +1,5 @@
|
|
|
|
import React, { createContext, useContext, useState, useCallback, useRef, useEffect } from 'react';
|
|
|
|
import React, { createContext, useContext, useState, useCallback, useRef, useEffect } from 'react';
|
|
|
|
|
|
|
|
import { debounce } from 'lodash';
|
|
|
|
import { Node, Edge } from '@xyflow/react';
|
|
|
|
import { Node, Edge } from '@xyflow/react';
|
|
|
|
|
|
|
|
|
|
|
|
interface HistoryContextType {
|
|
|
|
interface HistoryContextType {
|
|
|
|
@ -147,11 +148,11 @@ const HistoryProvider: React.FC<HistoryProviderProps> = ({
|
|
|
|
|
|
|
|
|
|
|
|
// 监听 takeSnapshot 事件
|
|
|
|
// 监听 takeSnapshot 事件
|
|
|
|
useEffect(() => {
|
|
|
|
useEffect(() => {
|
|
|
|
const handleTakeSnapshot = ((event: CustomEvent) => {
|
|
|
|
const handleTakeSnapshot = debounce((event: CustomEvent) => {
|
|
|
|
const { nodes, edges } = event.detail;
|
|
|
|
const { nodes, edges } = event.detail;
|
|
|
|
updateCurrentState(nodes, edges);
|
|
|
|
updateCurrentState(nodes, edges);
|
|
|
|
takeSnapshot();
|
|
|
|
takeSnapshot();
|
|
|
|
}) as EventListener;
|
|
|
|
}, 100) as EventListener;
|
|
|
|
|
|
|
|
|
|
|
|
document.addEventListener('takeSnapshot', handleTakeSnapshot);
|
|
|
|
document.addEventListener('takeSnapshot', handleTakeSnapshot);
|
|
|
|
return () => {
|
|
|
|
return () => {
|
|
|
|
|