feat: add "*"/any type input for dev page
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
import { create, type Delta } from "jsondiffpatch";
|
||||
import type { Graph } from "@nodarium/types";
|
||||
import { clone } from "./helpers/index.js";
|
||||
import { createLogger } from "@nodarium/utils";
|
||||
import type { Graph } from '@nodarium/types';
|
||||
import { createLogger } from '@nodarium/utils';
|
||||
import { create, type Delta } from 'jsondiffpatch';
|
||||
import { clone } from './helpers/index.js';
|
||||
|
||||
const diff = create({
|
||||
objectHash: function (obj, index) {
|
||||
if (obj === null) return obj;
|
||||
if ("id" in obj) return obj.id as string;
|
||||
if ("_id" in obj) return obj._id as string;
|
||||
if ('id' in obj) return obj.id as string;
|
||||
if ('_id' in obj) return obj._id as string;
|
||||
if (Array.isArray(obj)) {
|
||||
return obj.join("-");
|
||||
return obj.join('-');
|
||||
}
|
||||
return "$$index:" + index;
|
||||
},
|
||||
return '$$index:' + index;
|
||||
}
|
||||
});
|
||||
|
||||
const log = createLogger("history");
|
||||
const log = createLogger('history');
|
||||
log.mute();
|
||||
|
||||
export class HistoryManager {
|
||||
@@ -26,7 +26,7 @@ export class HistoryManager {
|
||||
|
||||
private opts = {
|
||||
debounce: 400,
|
||||
maxHistory: 100,
|
||||
maxHistory: 100
|
||||
};
|
||||
|
||||
constructor({ maxHistory = 100, debounce = 100 } = {}) {
|
||||
@@ -40,12 +40,12 @@ export class HistoryManager {
|
||||
if (!this.state) {
|
||||
this.state = clone(state);
|
||||
this.initialState = this.state;
|
||||
log.log("initial state saved");
|
||||
log.log('initial state saved');
|
||||
} else {
|
||||
const newState = state;
|
||||
const delta = diff.diff(this.state, newState);
|
||||
if (delta) {
|
||||
log.log("saving state");
|
||||
log.log('saving state');
|
||||
// Add the delta to history
|
||||
if (this.index < this.history.length - 1) {
|
||||
// Clear the history after the current index if new changes are made
|
||||
@@ -61,7 +61,7 @@ export class HistoryManager {
|
||||
}
|
||||
this.state = newState;
|
||||
} else {
|
||||
log.log("no changes");
|
||||
log.log('no changes');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,7 @@ export class HistoryManager {
|
||||
|
||||
undo() {
|
||||
if (this.index === -1 && this.initialState) {
|
||||
log.log("reached start, loading initial state");
|
||||
log.log('reached start, loading initial state');
|
||||
return clone(this.initialState);
|
||||
} else {
|
||||
const delta = this.history[this.index];
|
||||
@@ -95,7 +95,7 @@ export class HistoryManager {
|
||||
this.state = nextState;
|
||||
return clone(nextState);
|
||||
} else {
|
||||
log.log("reached end");
|
||||
log.log('reached end');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user