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.

NameTypStandardBeschreibung
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) => voidRegistriert 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 }) => booleanSpeichert 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) => () => voidCommittet 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.

NameTypBeschreibung
statesSignal<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.

NameSignaturRückgabeBeschreibung
createHistoryStorecreateHistoryStore<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.statesstates: 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.registerObjectregisterObject(id: K, initialState: T): voidRegistriert ein verfolgtes Objekt mit seinem Anfangszustand und beginnt für diese id eine neue, leere History-Zeitleiste.
HistoryStore.registerFromObjectregisterFromObject(initialState: T): KKRegistriert 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.commitcommit(id: K, newState: T, options?: HistoryCommitOptions): booleanbooleanCommittet 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.commitFromObjectcommitFromObject(newState: T, options?: HistoryCommitOptions): booleanbooleanCommittet einen neuen Zustand und leitet die id aus dem konfigurierten keySelector ab. Wirft einen Fehler, wenn kein keySelector konfiguriert wurde.
HistoryStore.undoundo(id: K): booleanbooleanMacht 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.redoredo(id: K): booleanbooleanWendet einen History-Schritt erneut an, indem der Vorwärts-Patch des Eintrags angewendet wird. Gibt false zurück, wenn nichts wiederherzustellen ist.
HistoryStore.canUndocanUndo(id: K): booleanbooleanGibt zurück, ob undo für die angegebene Objekt-id aktuell möglich ist.
HistoryStore.canRedocanRedo(id: K): booleanbooleanGibt zurück, ob redo für die angegebene Objekt-id aktuell möglich ist.
HistoryStore.getStategetState(id: K): T | undefinedT | undefinedGibt einen Deep Clone des aktuellen Zustands für die angegebene id zurück, oder undefined, wenn die id nicht registriert ist.
HistoryStore.historyhistory(id: K): HistoryMetadataHistoryMetadataGibt 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.beginTransactionbeginTransaction(id: K, label?: string): voidStartet 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.endTransactionendTransaction(id: K): booleanbooleanBeendet 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.watchFormwatchForm(id: K, form: FormGroup, options?: WatchFormOptions): () => void() => voidAbonniert die valueChanges einer FormGroup und committet automatisch jede Emission, optional unter Auslassung der ersten. Gibt einen Unsubscribe-Callback zurück.
HistoryStore.clearHistoryclearHistory(id: K): voidLö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.