34 protected const UNDO =
'UNDO';
35 protected const REDO =
'REDO';
38 self::UNDO => RemoveBlockAction::class,
39 self::REDO => AddBlockAction::class,
42 self::UNDO => AddBlockAction::class,
43 self::REDO => RemoveBlockAction::class,
46 self::UNDO => SortBlockAction::class,
47 self::REDO => SortBlockAction::class,
50 self::UNDO => RemoveCardAction::class,
51 self::REDO => AddCardAction::class,
54 self::UNDO => AddCardAction::class,
55 self::REDO => RemoveCardAction::class,
58 self::UNDO => EditTextAction::class,
59 self::REDO => EditTextAction::class,
62 self::UNDO => EditMapAction::class,
63 self::REDO => EditMapAction::class,
66 self::UNDO => EditEmbedAction::class,
67 self::REDO => EditEmbedAction::class,
70 self::UNDO => EditImgAction::class,
71 self::REDO => EditImgAction::class,
74 self::UNDO => EditIconAction::class,
75 self::REDO => EditIconAction::class,
78 self::UNDO => EditLinkAction::class,
79 self::REDO => EditLinkAction::class,
82 self::UNDO => EditComponentAction::class,
83 self::REDO => EditComponentAction::class,
86 self::UNDO => EditStyleAction::class,
87 self::REDO => EditStyleAction::class,
89 'EDIT_ATTRIBUTES' => [
90 self::UNDO => EditAttributesAction::class,
91 self::REDO => EditAttributesAction::class,
94 self::UNDO => UpdateContentAction::class,
95 self::REDO => UpdateContentAction::class,
98 self::UNDO => ChangeAnchorAction::class,
99 self::REDO => ChangeAnchorAction::class,
101 'CHANGE_NODE_NAME_ACTION' => [
102 self::UNDO => ChangeNodeNameAction::class,
103 self::REDO => ChangeNodeNameAction::class,
105 'UPDATE_DYNAMIC' => [
106 self::UNDO => UpdateDynamicAction::class,
107 self::REDO => UpdateDynamicAction::class,
110 self::UNDO => MultiplyAction::class,
111 self::REDO => MultiplyAction::class,
114 self::UNDO => RemoveNodeAction::class,
115 self::REDO => AddNodeAction::class,
118 self::UNDO => AddNodeAction::class,
119 self::REDO => RemoveNodeAction::class,
121 'REPLACE_LANDING' => [
122 self::UNDO => ReplaceLanding::class,
123 self::REDO => ReplaceLanding::class,
136 if (self::isActionExists($actionName))
156 return array_key_exists($actionName, self::ACTIONS);
165 public static function getActionClass(
string $actionName, ?
bool $undo =
false): ?string
168 $class = self::ACTIONS[$actionName][
$direction];
170 if (class_exists($class))
185 return $undo ? self::UNDO : self::REDO;
197 $prevStep[
'ENTITY_TYPE'] === $nextStep[
'ENTITY_TYPE']
198 && $prevStep[
'ENTITY_ID'] === $nextStep[
'ENTITY_ID']
199 && $prevStep[
'ACTION'] === $nextStep[
'ACTION']
203 if ($class && is_callable([$class, self::COMPARE_METHOD]))
205 return call_user_func(
206 [$class, self::COMPARE_METHOD],
207 $prevStep[
'ACTION_PARAMS'],
208 $nextStep[
'ACTION_PARAMS']
static getAction(string $actionName, ?bool $undo=false)
static getActionClass(string $actionName, ?bool $undo=false)
static compareSteps(array $prevStep, array $nextStep)