/**
 * WPS 宿主桥接层 — V1 论文助手
 *
 * 职责：Ribbon 回调 + 打开右侧 TaskPane
 * 业务逻辑全在 taskpane.html（Vue 应用）中
 *
 * TASKPANE_URL_OVERRIDE 由构建时 WPS_TASKPANE_URL 环境变量注入
 * （开发期指向 vite dev server，实现 WPS 内热更）；缺省走插件根相对路径。
 */

var TASKPANE_URL_OVERRIDE = null;

function GetUrlPath() {
  var e = document.location.toString();
  return -1 != (e = decodeURI(e)).indexOf('/') && (e = e.substring(0, e.lastIndexOf('/'))), e;
}

function taskpaneUrl() {
  if (typeof TASKPANE_URL_OVERRIDE === 'string' && TASKPANE_URL_OVERRIDE) {
    return TASKPANE_URL_OVERRIDE;
  }
  return GetUrlPath() + '/wps-plugin/taskpane.html';
}

function OnAddinLoad() {
  console.log('[WPS Plugin V1] 宿主桥接层已加载');
  return true;
}

function OnOpenPane() {
  try {
    if (typeof Application === 'undefined') {
      throw new Error('Application 对象不存在（非 WPS 宿主环境）');
    }
    if (typeof Application.CreateTaskPane !== 'function') {
      throw new Error('Application.CreateTaskPane 不可用');
    }

    var url = taskpaneUrl();
    var taskPane = Application.CreateTaskPane(url);
    if (!taskPane) {
      // CreateTaskPane 对 URL 做安全检查，不通过时返回 undefined
      throw new Error('CreateTaskPane 返回空（URL 安全检查未通过？）: ' + url);
    }

    taskPane.Title = 'AIForScience';
    taskPane.Visible = true;
    taskPane.DockPosition = 2;
    taskPane.Width = 400;

    // 通知 Vue 应用 TaskPane 已被用户关闭（停止轮询等清理）
    taskPane.OnClose = function () {
      try {
        var iframe = document.querySelector('iframe');
        if (iframe && iframe.contentWindow) {
          iframe.contentWindow.postMessage({ type: 'wps:taskpane-closed' }, '*');
        }
      } catch (e) { /* 静默 */ }
    };

    console.log('[WPS Plugin V1] TaskPane 已打开: ' + url);
    return true;
  } catch (error) {
    console.error('[WPS Plugin V1] 打开 TaskPane 失败:', (error && error.stack) || error);
    return false;
  }
}

window.OnAddinLoad = OnAddinLoad;
window.OnOpenPane = OnOpenPane;
window.GetUrlPath = GetUrlPath;
