/**
 * 解码 bpmnXmlBase64 到原始 BPMN XML
 * @param {string} bpmnXmlBase64 待解码的 Base64 字符串
 * @returns {string} 原始 BPMN XML 文本
 */
export default function decodeBpmnXmlBase64(bpmnXmlBase64: string) {
  // 入参校验
  if (!bpmnXmlBase64 || typeof bpmnXmlBase64 !== 'string') {
    throw new Error('bpmnXmlBase64 不能为空且必须为字符串格式');
  }

  try {
    // 步骤1：Base64 解码为字节数组（浏览器环境）
    // 浏览器内置 atob 方法解码 Base64 字符串为 ASCII 字符串
    const asciiStr = window.atob(bpmnXmlBase64);
    // 步骤2：将 ASCII 字符串转换为 UTF-8 编码的 BPMN XML
    const byteArr = new Uint8Array(asciiStr.length);
    for (let i = 0; i < asciiStr.length; i++) {
      byteArr[i] = asciiStr.charCodeAt(i);
    }
    // 通过 TextDecoder 转换为 UTF-8 文本（兼容特殊字符）
    const decoder = new TextDecoder('utf-8');
    return decoder.decode(byteArr);
  }
  catch (error) {
    throw new Error(`解码失败：无效的 bpmnXmlBase64 格式，${error}`);
  }
}
