undo method

  1. @override
void undo(
  1. EditorState state
)
override

Implementation

@override
void undo(EditorState state) {
  final elements = List<EditorElement>.from(state.elements);

  if (parentId != null) {
    final pIndex = elements.indexWhere((e) => e.id == parentId);
    if (pIndex != -1) {
      final parent = elements[pIndex].element;
      if (parent is KoiTicketForEachElement) {
        final newTemplates = List<KoiTicketElement>.from(parent.templates);
        if (element.element is KoiTicketElement) {
          newTemplates.remove(element.element as KoiTicketElement);
        }
        elements[pIndex] = elements[pIndex].copyWith(
          element: KoiTicketForEachElement(
            listKey: parent.listKey,
            templates: newTemplates,
          ),
        );
      }
    }
  } else {
    elements.removeWhere((e) => e.id == element.id);
  }

  state.updateElements(elements);
  if (state.selectedElementId == element.id) {
    state.selectElement(null);
  }
}