Angular Undo-Redo-History-Store | ng-hub-ui-history
Angular Undo- und Redo-History-Store mit Signals-freundlichen APIs, Transaktionen, Limits und Unterstützung für Reactive Forms.
API-Referenz
Hier ist der vollständige Vertrag für history: alles, was du binden, abhören, projizieren und gestalten kannst, an einem Ort gesammelt. Verdrahte, was du brauchst, und gestalte, was du willst — es ist standalone und Signals-freundlich.
Inputs
Stelle history mit 4 Inputs ein. Binde sie wie jeden Angular-@Input.
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
createHistoryStore(config) | HistoryStoreConfig<T, K> | — | Erstellt einen Signal-basierten Speicher mit optionalen Limits und benutzerdefinierten diff/patch-Funktionen. |
registerObject(id, initialState)Erforderlich | (id: K, initialState: T) => void | — | Registriert den Basiszustand des Objekts und startet einen linearen Verlauf für diesen Schlüssel. |
commit(id, newState, options?)Erforderlich | (id: K, state: T, options?: { label?: string }) => boolean | — | Speichert den diff-Patch und macht den Redo-Zweig ungültig, wenn der Zeiger nicht am Ende war. |
watchForm(id, form, options?) | (id: K, form: FormGroup, options?: WatchFormOptions) => () => void | — | Committet automatisch Änderungen des Formularwerts und gibt einen unsubscribe-Callback zurück. |
Outputs
Reagiere darauf, was history tut — 1 Events, an die du deine Logik anknüpfen kannst.
| Name | Typ | Beschreibung |
|---|---|---|
states | Signal<Map<K, T>> | Reaktive Signal-Map mit aktuellen unveränderlichen Snapshots pro Objekt-ID. |
Methoden
Steuere history aus dem Code heraus — 16 Methoden auf der programmatischen Schnittstelle.
| Name | Signatur | Rückgabe | Beschreibung |
|---|---|---|---|
createHistoryStore | createHistoryStore<T, K>(config?: HistoryStoreConfig<T, K>): HistoryStore<T, K> | HistoryStore<T, K> | Factory, die einen Signal-basierten History-Store erzeugt, der mehrere Objekte anhand ihrer id verfolgt. Akzeptiert optionale Aufbewahrungslimits (maxEntries, Standard 100; maxBytes, Standard 512000), einen keySelector sowie eigene Diff-/Patch-Strategien. |
HistoryStore.states | states: Signal<Map<K, T>> | Signal<Map<K, T>> | Computed Signal, das eine Map der aktuellen unveränderlichen Zustands-Snapshots bereitstellt, geschlüsselt nach Objekt-id. |
HistoryStore.registerObject | registerObject(id: K, initialState: T): void | — | Registriert ein verfolgtes Objekt mit seinem Anfangszustand und beginnt für diese id eine neue, leere History-Zeitleiste. |
HistoryStore.registerFromObject | registerFromObject(initialState: T): K | K | Registriert ein verfolgtes Objekt, leitet dessen id aus dem konfigurierten keySelector ab und gibt diese id zurück. Wirft einen Fehler, wenn kein keySelector konfiguriert wurde. |
HistoryStore.commit | commit(id: K, newState: T, options?: HistoryCommitOptions): boolean | boolean | Committet einen neuen Zustands-Snapshot für eine registrierte id, speichert Vorwärts- und Rückwärts-Patches und verwirft alle Redo-Einträge vor dem Zeiger. Gibt false zurück, wenn der neue Zustand keine Änderungen erzeugt. Innerhalb einer offenen Transaktion wird nur der aktuelle Zustand aktualisiert, ohne einen Eintrag zu erzeugen. |
HistoryStore.commitFromObject | commitFromObject(newState: T, options?: HistoryCommitOptions): boolean | boolean | Committet einen neuen Zustand und leitet die id aus dem konfigurierten keySelector ab. Wirft einen Fehler, wenn kein keySelector konfiguriert wurde. |
HistoryStore.undo | undo(id: K): boolean | boolean | Macht einen History-Schritt rückgängig, indem der Rückwärts-Patch des Eintrags angewendet wird. Gibt false zurück, wenn nichts rückgängig zu machen ist. |
HistoryStore.redo | redo(id: K): boolean | boolean | Wendet einen History-Schritt erneut an, indem der Vorwärts-Patch des Eintrags angewendet wird. Gibt false zurück, wenn nichts wiederherzustellen ist. |
HistoryStore.canUndo | canUndo(id: K): boolean | boolean | Gibt zurück, ob undo für die angegebene Objekt-id aktuell möglich ist. |
HistoryStore.canRedo | canRedo(id: K): boolean | boolean | Gibt zurück, ob redo für die angegebene Objekt-id aktuell möglich ist. |
HistoryStore.getState | getState(id: K): T | undefined | T | undefined | Gibt einen Deep Clone des aktuellen Zustands für die angegebene id zurück, oder undefined, wenn die id nicht registriert ist. |
HistoryStore.history | history(id: K): HistoryMetadata | HistoryMetadata | Gibt schreibgeschützte Metadaten zur History des Objekts zurück: den Zeiger, die Anzahl der Einträge, die ungefähre Anzahl vorgehaltener Bytes sowie je Eintrag Label, Zeitstempel und Bytes. |
HistoryStore.beginTransaction | beginTransaction(id: K, label?: string): void | — | Startet eine Transaktion, sodass nachfolgende Commits zu einem einzigen konsolidierten History-Eintrag zusammengefasst werden. Wirft einen Fehler, wenn für die id bereits eine Transaktion offen ist. |
HistoryStore.endTransaction | endTransaction(id: K): boolean | boolean | Beendet die offene Transaktion und committet einen konsolidierten Eintrag vom Zustand zu Transaktionsbeginn bis zum aktuellen Zustand. Gibt false zurück, wenn keine Transaktion offen war oder keine Änderungen vorgenommen wurden. |
HistoryStore.watchForm | watchForm(id: K, form: FormGroup, options?: WatchFormOptions): () => void | () => void | Abonniert die valueChanges einer FormGroup und committet automatisch jede Emission, optional unter Auslassung der ersten. Gibt einen Unsubscribe-Callback zurück. |
HistoryStore.clearHistory | clearHistory(id: K): void | — | Löscht alle History-Einträge für die angegebene id, behält den aktuellen Zustand als neuen Basis-Snapshot und verwirft eine gegebenenfalls offene Transaktion. |
Templates
Noch keine Templates dokumentiert.