saveSnapshot(entry) {
      const snapshot = {
        ...entry,
        state: JSON.parse(JSON.stringify(this.model.data)),
        computed: this.getComputedValues()
      };
      this.history = this.history.slice(0, this.currentIndex + 1);
      this.history.push(snapshot);
      this.currentIndex++;
      if (this.history.length > this.options.maxSnapshots) {
        this.history.shift();
        this.currentIndex--;
      }
    }
Saves a snapshot of the current model state, including computed properties and relevant metadata.

- Trims the history to ensure the size does not exceed `maxSnapshots`.
- Updates the snapshot history and current snapshot index.

@param {Object} entry - The change entry that triggered the snapshot.
@param {string} entry.type - The type of change (for example, 'data-change', 'model-event', etc.).
@param {string} [entry.path] - Path of the property being changed (if applicable).
@param {any} [entry.oldValue] - The previous value before the change (if applicable).
@param {any} [entry.newValue] - The new value after the change (if applicable).
@param {number} entry.timestamp - A timestamp indicating when the change occurred.