first commit

This commit is contained in:
douboer@gmail.com
2026-03-03 13:23:14 +08:00
commit 3b7c1d558a
161 changed files with 28120 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import { isArray } from "../helpers";
import type { IHistory } from "./interface";
/**
* History stack
*/
export default class XHistory implements IHistory {
private store;
private ptr;
constructor(initialState: string[] = []) {
this.store = isArray(initialState) ? initialState : [];
this.ptr = -1;
}
private get size(): number {
return this.store.length;
}
public get list(): string[] {
return [].slice.call(this.store).reverse();
}
add(input: string): void {
if (input && input !== this.store[0]) {
this.store.unshift(input);
}
this.ptr = -1;
}
previous(): string {
this.ptr++;
if (this.ptr >= this.size) this.ptr = this.size - 1;
return this.store[this.ptr] || "";
}
next(): string {
this.ptr--;
if (this.ptr <= -1) this.ptr = -1;
return this.store[this.ptr] || "";
}
clear(): void {
this.store.splice(0);
}
}