Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/undo redo #296

Merged
merged 16 commits into from Apr 29, 2020
Merged

Feature/undo redo #296

merged 16 commits into from Apr 29, 2020

Conversation

dxinteractive
Copy link
Collaborator

@dxinteractive dxinteractive commented Apr 27, 2020

Addresses #277

Parcel's buffer was already made of an array of changes, that get applied to a value on submit. Perfect for exposing this as undo / redo. Care is taken to only store data that says how to make the changes, rather than cached data of the result of those changes, so it should be really quite efficient on memory.

Works with rebasing (so if your "save" action changes your parcel data), works with submitting changes after having undone a few actions. Even works with undoing actions past the point where the data was last submitted and going into negative change territory.

react-dataparcels

  • Adds parcel.meta.undo() and parcel.meta.redo() to useParcel, useBuffer and Boundary
  • Adds parcel.meta.canUndo, parcel.meta.canRedo & parcel.meta.synced booleans
  • useParcel and useBuffer have an optional history param, to set the minimum number of history items to always remember. Often there'll be many items being remembered anyway because the history array is only cleared on submit / debounce. This history param instructs the hooks not clear all history items on submit if it would result in a number of history items lower than history.

@dxinteractive dxinteractive merged commit 9f773c5 into release/strict-swift Apr 29, 2020
@dxinteractive dxinteractive deleted the feature/undo-redo branch April 30, 2020 00:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants