import { DEBUG } from "cc/env";

/**
 * Cocos Creator 工具栏管理器
 * 用于动态控制工具栏的显示和隐藏
 */
export class ToolbarManager {
  private static _ins: ToolbarManager;
  private _isHidden: boolean = false;
  private _styleElement: HTMLStyleElement | null = null;

  public static get ins(): ToolbarManager {
    return this._ins ?? (this._ins = new ToolbarManager());
  }

  /**
   * 隐藏工具栏
   */
  public hideToolbar(): void {
    if (this._isHidden) return;

    // 创建隐藏样式
    this._styleElement = document.createElement('style');
    this._styleElement.id = 'cocos-toolbar-hide';
    this._styleElement.textContent = `
      /* 隐藏 Cocos Creator 工具栏 */
      .cocos-toolbar,
      .toolbar,
      .cc-toolbar,
      .editor-toolbar,
      [class*="toolbar"],
      [id*="toolbar"],
      [class*="Toolbar"],
      [id*="Toolbar"] {
        display: none !important;
        visibility: hidden !important;
        opacity: 0 !important;
        height: 0 !important;
        overflow: hidden !important;
      }
      
      /* 隐藏可能的工具栏容器 */
      .toolbar-container,
      .toolbar-wrapper,
      .editor-toolbar-container {
        display: none !important;
      }
    `;
    
    document.head.appendChild(this._styleElement);
    this._isHidden = true;
    
    console.log('[ToolbarManager] 工具栏已隐藏');
  }

  /**
   * 显示工具栏
   */
  public showToolbar(): void {
    if (!this._isHidden) return;

    // 移除隐藏样式
    if (this._styleElement) {
      this._styleElement.remove();
      this._styleElement = null;
    }
    
    this._isHidden = false;
    console.log('[ToolbarManager] 工具栏已显示');
  }

  /**
   * 切换工具栏显示状态
   */
  public toggleToolbar(): void {
    if (this._isHidden) {
      this.showToolbar();
    } else {
      this.hideToolbar();
    }
  }

  /**
   * 检查工具栏是否隐藏
   */
  public isToolbarHidden(): boolean {
    return this._isHidden;
  }

  /**
   * 通过 JavaScript 直接操作 DOM 隐藏工具栏
   */
  public hideToolbarByDOM(): void {
    const toolbarSelectors = [
      '.cocos-toolbar',
      '.toolbar',
      '.cc-toolbar', 
      '.editor-toolbar',
      '[class*="toolbar"]',
      '[id*="toolbar"]',
      '[class*="Toolbar"]',
      '[id*="Toolbar"]'
    ];

    let hiddenCount = 0;
    toolbarSelectors.forEach(selector => {
      const elements = document.querySelectorAll(selector);
      elements.forEach(el => {
        const element = el as HTMLElement;
        if (element.style.display !== 'none') {
          element.style.display = 'none';
          hiddenCount++;
        }
      });
    });

    console.log(`[ToolbarManager] 通过 DOM 操作隐藏了 ${hiddenCount} 个工具栏元素`);
  }

  /**
   * 通过 JavaScript 直接操作 DOM 显示工具栏
   */
  public showToolbarByDOM(): void {
    const toolbarSelectors = [
      '.cocos-toolbar',
      '.toolbar',
      '.cc-toolbar',
      '.editor-toolbar', 
      '[class*="toolbar"]',
      '[id*="toolbar"]',
      '[class*="Toolbar"]',
      '[id*="Toolbar"]'
    ];

    let shownCount = 0;
    toolbarSelectors.forEach(selector => {
      const elements = document.querySelectorAll(selector);
      elements.forEach(el => {
        const element = el as HTMLElement;
        if (element.style.display === 'none') {
          element.style.display = '';
          shownCount++;
        }
      });
    });

    console.log(`[ToolbarManager] 通过 DOM 操作显示了 ${shownCount} 个工具栏元素`);
  }

  /**
   * 初始化工具栏管理器
   */
  public init(): void {
    // 检查是否需要自动隐藏工具栏
    if (localStorage.getItem('hide_cocos_toolbar') === 'true') {
      this.hideToolbar();
    }
    
    console.log('[ToolbarManager] 工具栏管理器已初始化');
  }

  /**
   * 设置工具栏隐藏状态并保存到本地存储
   */
  public setToolbarHidden(hidden: boolean): void {
    localStorage.setItem('hide_cocos_toolbar', hidden.toString());
    
    if (hidden) {
      this.hideToolbar();
    } else {
      this.showToolbar();
    }
  }
} 