Store Undo Redo для Angular | ng-hub-ui-history
Store отмены и повтора для Angular с API, дружественными к Signals, транзакциями, лимитами и поддержкой реактивных форм.
Справочник API
Вот полный контракт history: всё, что можно привязать, прослушать, спроецировать и тематизировать, собрано в одном месте. Подключите то, что нужно, и оформите так, как хотите — это standalone и дружит с сигналами.
Входные свойства
Настройте history с помощью 4 входных свойств. Привязывайте их, как любой @Input в Angular.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
createHistoryStore(config) | HistoryStoreConfig<T, K> | — | Создаёт хранилище на основе Signals с необязательными ограничениями и пользовательскими функциями diff/patch. |
registerObject(id, initialState)Обязательно | (id: K, initialState: T) => void | — | Регистрирует базовое состояние объекта и начинает линейную историю для этого ключа. |
commit(id, newState, options?)Обязательно | (id: K, state: T, options?: { label?: string }) => boolean | — | Сохраняет diff-патч, инвалидирует ветку redo, если указатель не находился в конце. |
watchForm(id, form, options?) | (id: K, form: FormGroup, options?: WatchFormOptions) => () => void | — | Автоматически фиксирует изменения значений формы и возвращает callback отписки. |
События
Реагируйте на то, что делает history, — 1 событий, к которым можно подключить вашу логику.
| Имя | Тип | Описание |
|---|---|---|
states | Signal<Map<K, T>> | Реактивная карта Signals с текущими неизменяемыми снимками для каждого id объекта. |
Шаблоны
Шаблоны пока не задокументированы.
CSS-переменные
CSS-переменные пока не задокументированы.
Стилизация и тематизация
Примеры стилизации пока не задокументированы. В этом разделе будут рецепты кастомизации и примеры тематизации.