(function(n,g){if(typeof module=="object"&&module.exports){module.exports=g(n);return}n.FamilyInvitePages=g(n),n.document&&n.document.addEventListener("DOMContentLoaded",n.FamilyInvitePages.init)})(typeof globalThis!="undefined"?globalThis:window,function(n){"use strict";var g={ACTIVE:"待使用",REDEEMED:"已使用",REVOKED:"已撤销",EXPIRED:"已过期"};function u(e){return String(e==null?"":e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function I(e){var t=String(e==null?"":e).trim();return/^[1-9][0-9]*$/.test(t)?t:""}function y(e){var t=e||{},a=I(t.inviteId),c=I(t.genealogyId);return!a||!c||!String(t.genealogyName||"").trim()?null:{inviteId:a,genealogyId:c,genealogyName:String(t.genealogyName).trim(),lineagePersonName:String(t.lineagePersonName||"").trim(),status:String(t.status||"").toUpperCase(),token:String(t.token||"").trim(),expiresAt:String(t.expiresAt||"").trim(),createTime:String(t.createTime||"").trim()}}function A(e){var t;return e?n.location?(t=String(n.location.href||"").split("?")[0].split("#")[0],t+"?token="+encodeURIComponent(e)):"profile-invite.html?token="+encodeURIComponent(e):""}function S(e){var t=Array.isArray(e)?e.map(y).filter(Boolean):[];return t.length?t.map(function(a){var c=a.status==="ACTIVE";return'

'+u(a.genealogyName)+(a.lineagePersonName?" · "+u(a.lineagePersonName):"")+"

"+u([a.createTime,a.expiresAt?"有效期至 "+a.expiresAt:""].filter(Boolean).join(" · "))+'

'+u(g[a.status]||a.status||"未知")+""+(c?'':"")+"
"}).join(""):'
还没有发出的邀请
'}function P(e){e&&e.clearToken&&e.clearToken(),n.NavigationUtil.open("login.html")}async function b(){var e=n.document&&n.document.querySelector("[data-family-invite-page]"),t=n.GenealogyApi&&n.GenealogyApi.defaultClient,a=n.ProfileUI&&n.ProfileUI.getGenealogyId?n.ProfileUI.getGenealogyId():"",c=e&&e.querySelector("[data-invite-form]"),k=e&&e.querySelector("[data-invite-person]"),h=e&&e.querySelector("[data-invite-status]"),v=e&&e.querySelector("[data-invite-result]"),f=e&&e.querySelector("[data-invite-list]"),d=e&&e.querySelector("[data-invite-redeem]"),m=n.location?new URLSearchParams(n.location.search).get("token"):"",l=!1;if(!e)return;if(!t||!t.getToken||!t.getToken())return P(t);if(m&&d){c.hidden=!0,f.hidden=!0,d.hidden=!1,d.querySelector("[data-invite-token]").textContent=m;try{var p=y(await t.previewGenealogyInvitation(m));if(!p)throw new Error("邀请预览响应无效");d.querySelector("h3").textContent="接受“"+p.genealogyName+"”邀请",i("",p.expiresAt?"邀请有效期至 "+p.expiresAt:"请确认是否加入该家谱")}catch(r){i("error",r.message||"邀请预览失败"),d.querySelector("[data-invite-redeem-submit]").disabled=!0;return}d.querySelector("[data-invite-redeem-submit]").addEventListener("click",async function(){if(!l){l=!0,i("loading","正在接受邀请…");try{await t.redeemGenealogyInvitation({token:m}),i("","邀请已接受,你已加入该家谱。")}catch(r){i("error",r.message||"接受邀请失败")}finally{l=!1}}});return}if(!a){n.ProfileUI.setApiState(h,"error","缺少家谱上下文,请从“我的家谱”重新进入。");return}function i(r,o){r?n.ProfileUI.setApiState(h,r,o):h.textContent=o||""}async function E(){var r=await t.myGenealogyInvitations();f.innerHTML=S(r)}try{var T=await Promise.all([t.lineagePersonOptions(a),t.myGenealogyInvitations()]);k.innerHTML=''+(Array.isArray(T[0])?T[0]:[]).map(function(r){var o=I(r.personId||r.lineagePersonId),s=String(r.displayName||r.personName||r.name||"").trim();return o&&s?'":""}).join(""),f.innerHTML=S(T[1]),i("","可生成一次性邀请链接")}catch(r){i("error",r.message||"邀请服务读取失败")}c.addEventListener("submit",async function(r){var o={},s,w;if(r.preventDefault(),!l){k.value&&(o.lineagePersonId=k.value),l=!0,i("loading","正在生成邀请…");try{if(s=y(await t.issueGenealogyInvitation(a,o)),!s||!s.token)throw new Error("邀请已创建,但响应缺少一次性令牌");w=A(s.token),v.hidden=!1,v.querySelector("[data-invite-link]").value=w,i("","邀请已生成,请及时复制给家人。"),await E()}catch(q){i("error",q.message||"邀请生成失败")}finally{l=!1}}}),v.querySelector("[data-invite-copy]").addEventListener("click",async function(){var r=v.querySelector("[data-invite-link]").value;try{await n.navigator.clipboard.writeText(r),i("","邀请链接已复制")}catch(o){v.querySelector("[data-invite-link]").select(),i("","请按 Ctrl+C 复制邀请链接")}}),f.addEventListener("click",async function(r){var o=r.target.closest("[data-invite-revoke]");if(!(!o||l)){l=!0,i("loading","正在撤销邀请…");try{await t.revokeGenealogyInvitation(o.getAttribute("data-invite-revoke")),await E(),i("","邀请已撤销")}catch(s){i("error",s.message||"撤销邀请失败")}finally{l=!1}}})}return{normalizeInvitation:y,invitationLink:A,renderInvitations:S,init:b}});