"use strict";
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const HISTORY_KEY = "mobile_page_history";
const MAX_HISTORY_SIZE = 20;
class PageHistory {
  constructor() {
    this.history = this.loadHistory();
  }
  /**
   * 从 sessionStorage 加载历史记录
   */
  loadHistory() {
    try {
      const data = sessionStorage.getItem(HISTORY_KEY);
      return data ? JSON.parse(data) : [];
    } catch (e) {
      console.error("加载页面历史失败:", e);
      return [];
    }
  }
  /**
   * 保存历史记录到 sessionStorage
   */
  saveHistory() {
    try {
      sessionStorage.setItem(HISTORY_KEY, JSON.stringify(this.history));
    } catch (e) {
      console.error("保存页面历史失败:", e);
    }
  }
  /**
   * 添加页面到历史
   * @param {Object} page - 页面配置对象，需包含 id
   */
  push(page) {
    if (!page || !page.id) {
      console.warn("页面配置无效，无法添加到历史");
      return;
    }
    if (this.history.length > 0 && this.history[this.history.length - 1].id == page.id) {
      return;
    }
    this.history.push({
      id: page.id,
      name: page.name || "",
      timestamp: Date.now(),
      data: page
    });
    if (this.history.length > MAX_HISTORY_SIZE) {
      this.history.shift();
    }
    this.saveHistory();
  }
  replace(page) {
    if (!page || !page.id) {
      console.warn("页面配置无效，无法替换");
      return;
    }
    if (this.history.length === 0) {
      this.push(page);
      return;
    }
    this.history[this.history.length - 1] = {
      id: page.id,
      name: page.name || "",
      timestamp: Date.now(),
      data: page
    };
    this.saveHistory();
  }
  /**
   * 后退到上一个页面
   * @returns {Object|null} 返回上一个页面的配置，如果无法后退则返回 null
   */
  back() {
    if (this.history.length <= 1) {
      return null;
    }
    this.history.pop();
    this.saveHistory();
    const prevPage = this.history[this.history.length - 1];
    return prevPage ? prevPage.data : null;
  }
  /**
   * 获取当前页面
   * @returns {Object|null}
   */
  getCurrentPage() {
    if (this.history.length == 0) {
      return null;
    }
    return this.history[this.history.length - 1].data;
  }
  /**
   * 判断是否可以后退
   * @returns {Boolean}
   */
  canBack() {
    return this.history.length > 1;
  }
  /**
   * 获取历史记录数量
   * @returns {Number}
   */
  getLength() {
    return this.history.length;
  }
  /**
   * 清空历史记录
   */
  clear() {
    this.history = [];
    this.saveHistory();
  }
}
const pageHistory = new PageHistory();
exports.default = pageHistory;
exports.pageHistory = pageHistory;
