@gamesberry/karmyc-core
Version:
A flexible and powerful layout management system for React applications
223 lines (222 loc) • 10 kB
TypeScript
import { EnhancedHistoryAction, Diff, HistoryResult, HistoryStats } from '../types/historyTypes';
/**
* Hook to use the enhanced history system
* Inspired by a robust animation editor system
*/
export declare const useEnhancedHistory: (spaceId: string) => {
isActionInProgress: boolean;
currentActionId: string | null;
lastAction: EnhancedHistoryAction | null;
stats: HistoryStats;
startAction: (actionId: string) => HistoryResult;
submitAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
cancelAction: () => HistoryResult;
undo: () => HistoryResult;
redo: () => HistoryResult;
createSimpleAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
createSelectionAction: (name: string, selectionData: any, diffs?: Diff[]) => HistoryResult;
createTransformAction: (name: string, transformData: any, diffs?: Diff[]) => HistoryResult;
canUndo: () => boolean;
canRedo: () => boolean;
getCurrentAction: () => EnhancedHistoryAction | null;
getHistoryLength: () => number;
getHistoryStats: () => HistoryStats;
clearHistory: () => void;
updateSelectionState: (selectionState: any) => void;
ACTION_TYPES: {
readonly CREATE: "CREATE";
readonly UPDATE: "UPDATE";
readonly DELETE: "DELETE";
readonly MOVE: "MOVE";
readonly COPY: "COPY";
readonly PASTE: "PASTE";
readonly SELECT: "SELECT";
readonly DESELECT: "DESELECT";
readonly SELECT_ALL: "SELECT_ALL";
readonly DESELECT_ALL: "DESELECT_ALL";
readonly GROUP: "GROUP";
readonly UNGROUP: "UNGROUP";
readonly TRANSFORM: "TRANSFORM";
readonly ROTATE: "ROTATE";
readonly SCALE: "SCALE";
readonly TRANSLATE: "TRANSLATE";
readonly TIMELINE_UPDATE: "TIMELINE_UPDATE";
readonly KEYFRAME_ADD: "KEYFRAME_ADD";
readonly KEYFRAME_REMOVE: "KEYFRAME_REMOVE";
readonly KEYFRAME_UPDATE: "KEYFRAME_UPDATE";
readonly CUSTOM: "CUSTOM";
};
EVENTS: {
readonly ACTION_STARTED: "action-started";
readonly ACTION_SUBMITTED: "action-submitted";
readonly ACTION_CANCELLED: "action-cancelled";
readonly UNDO_PERFORMED: "undo-performed";
readonly REDO_PERFORMED: "redo-performed";
readonly HISTORY_CLEARED: "history-cleared";
readonly STATE_RESTORED: "state-restored";
};
};
/**
* Public alias: useHistory (Enhanced is now the only system)
*/
export declare const useHistory: (spaceId: string) => {
isActionInProgress: boolean;
currentActionId: string | null;
lastAction: EnhancedHistoryAction | null;
stats: HistoryStats;
startAction: (actionId: string) => HistoryResult;
submitAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
cancelAction: () => HistoryResult;
undo: () => HistoryResult;
redo: () => HistoryResult;
createSimpleAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
createSelectionAction: (name: string, selectionData: any, diffs?: Diff[]) => HistoryResult;
createTransformAction: (name: string, transformData: any, diffs?: Diff[]) => HistoryResult;
canUndo: () => boolean;
canRedo: () => boolean;
getCurrentAction: () => EnhancedHistoryAction | null;
getHistoryLength: () => number;
getHistoryStats: () => HistoryStats;
clearHistory: () => void;
updateSelectionState: (selectionState: any) => void;
ACTION_TYPES: {
readonly CREATE: "CREATE";
readonly UPDATE: "UPDATE";
readonly DELETE: "DELETE";
readonly MOVE: "MOVE";
readonly COPY: "COPY";
readonly PASTE: "PASTE";
readonly SELECT: "SELECT";
readonly DESELECT: "DESELECT";
readonly SELECT_ALL: "SELECT_ALL";
readonly DESELECT_ALL: "DESELECT_ALL";
readonly GROUP: "GROUP";
readonly UNGROUP: "UNGROUP";
readonly TRANSFORM: "TRANSFORM";
readonly ROTATE: "ROTATE";
readonly SCALE: "SCALE";
readonly TRANSLATE: "TRANSLATE";
readonly TIMELINE_UPDATE: "TIMELINE_UPDATE";
readonly KEYFRAME_ADD: "KEYFRAME_ADD";
readonly KEYFRAME_REMOVE: "KEYFRAME_REMOVE";
readonly KEYFRAME_UPDATE: "KEYFRAME_UPDATE";
readonly CUSTOM: "CUSTOM";
};
EVENTS: {
readonly ACTION_STARTED: "action-started";
readonly ACTION_SUBMITTED: "action-submitted";
readonly ACTION_CANCELLED: "action-cancelled";
readonly UNDO_PERFORMED: "undo-performed";
readonly REDO_PERFORMED: "redo-performed";
readonly HISTORY_CLEARED: "history-cleared";
readonly STATE_RESTORED: "state-restored";
};
};
/**
* Hook pour utiliser l'historique avec un espace actif automatique
*/
export declare const useActiveSpaceHistory: () => {
isActionInProgress: boolean;
currentActionId: string | null;
lastAction: EnhancedHistoryAction | null;
stats: HistoryStats;
startAction: (actionId: string) => HistoryResult;
submitAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
cancelAction: () => HistoryResult;
undo: () => HistoryResult;
redo: () => HistoryResult;
createSimpleAction: (name: string, diffs?: Diff[], allowIndexShift?: boolean, modifiedKeys?: string[]) => HistoryResult;
createSelectionAction: (name: string, selectionData: any, diffs?: Diff[]) => HistoryResult;
createTransformAction: (name: string, transformData: any, diffs?: Diff[]) => HistoryResult;
canUndo: () => boolean;
canRedo: () => boolean;
getCurrentAction: () => EnhancedHistoryAction | null;
getHistoryLength: () => number;
getHistoryStats: () => HistoryStats;
clearHistory: () => void;
updateSelectionState: (selectionState: any) => void;
ACTION_TYPES: {
readonly CREATE: "CREATE";
readonly UPDATE: "UPDATE";
readonly DELETE: "DELETE";
readonly MOVE: "MOVE";
readonly COPY: "COPY";
readonly PASTE: "PASTE";
readonly SELECT: "SELECT";
readonly DESELECT: "DESELECT";
readonly SELECT_ALL: "SELECT_ALL";
readonly DESELECT_ALL: "DESELECT_ALL";
readonly GROUP: "GROUP";
readonly UNGROUP: "UNGROUP";
readonly TRANSFORM: "TRANSFORM";
readonly ROTATE: "ROTATE";
readonly SCALE: "SCALE";
readonly TRANSLATE: "TRANSLATE";
readonly TIMELINE_UPDATE: "TIMELINE_UPDATE";
readonly KEYFRAME_ADD: "KEYFRAME_ADD";
readonly KEYFRAME_REMOVE: "KEYFRAME_REMOVE";
readonly KEYFRAME_UPDATE: "KEYFRAME_UPDATE";
readonly CUSTOM: "CUSTOM";
};
EVENTS: {
readonly ACTION_STARTED: "action-started";
readonly ACTION_SUBMITTED: "action-submitted";
readonly ACTION_CANCELLED: "action-cancelled";
readonly UNDO_PERFORMED: "undo-performed";
readonly REDO_PERFORMED: "redo-performed";
readonly HISTORY_CLEARED: "history-cleared";
readonly STATE_RESTORED: "state-restored";
};
};
/**
* Hook pour créer des actions d'historique typées
*/
export declare const useTypedHistoryActions: (spaceId: string) => {
create: (data: any) => HistoryResult;
update: (data: any, diffs?: Diff[]) => HistoryResult;
delete: (data: any) => HistoryResult;
move: (data: any, diffs?: Diff[]) => HistoryResult;
copy: (data: any) => HistoryResult;
paste: (data: any) => HistoryResult;
select: (selectionData: any) => HistoryResult;
deselect: (selectionData: any) => HistoryResult;
selectAll: (selectionData: any) => HistoryResult;
deselectAll: (selectionData: any) => HistoryResult;
group: (groupData: any, diffs?: Diff[]) => HistoryResult;
ungroup: (groupData: any, diffs?: Diff[]) => HistoryResult;
transform: (transformData: any, diffs?: Diff[]) => HistoryResult;
rotate: (rotateData: any, diffs?: Diff[]) => HistoryResult;
scale: (scaleData: any, diffs?: Diff[]) => HistoryResult;
translate: (translateData: any, diffs?: Diff[]) => HistoryResult;
timelineUpdate: (timelineData: any, diffs?: Diff[]) => HistoryResult;
keyframeAdd: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
keyframeRemove: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
keyframeUpdate: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
custom: (name: string, data: any, diffs?: Diff[]) => HistoryResult;
};
/**
* Hook pour utiliser des actions typées avec l'espace actif
*/
export declare const useActiveSpaceTypedActions: () => {
create: (data: any) => HistoryResult;
update: (data: any, diffs?: Diff[]) => HistoryResult;
delete: (data: any) => HistoryResult;
move: (data: any, diffs?: Diff[]) => HistoryResult;
copy: (data: any) => HistoryResult;
paste: (data: any) => HistoryResult;
select: (selectionData: any) => HistoryResult;
deselect: (selectionData: any) => HistoryResult;
selectAll: (selectionData: any) => HistoryResult;
deselectAll: (selectionData: any) => HistoryResult;
group: (groupData: any, diffs?: Diff[]) => HistoryResult;
ungroup: (groupData: any, diffs?: Diff[]) => HistoryResult;
transform: (transformData: any, diffs?: Diff[]) => HistoryResult;
rotate: (rotateData: any, diffs?: Diff[]) => HistoryResult;
scale: (scaleData: any, diffs?: Diff[]) => HistoryResult;
translate: (translateData: any, diffs?: Diff[]) => HistoryResult;
timelineUpdate: (timelineData: any, diffs?: Diff[]) => HistoryResult;
keyframeAdd: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
keyframeRemove: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
keyframeUpdate: (keyframeData: any, diffs?: Diff[]) => HistoryResult;
custom: (name: string, data: any, diffs?: Diff[]) => HistoryResult;
};