(function(t,N){if(typeof module=="object"&&module.exports){module.exports=N(t);return}t.MemberAdminPages=N(t),t.document&&t.document.addEventListener("DOMContentLoaded",function(){t.MemberAdminPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(t){"use strict";function N(e){return t.ProfileUI&&typeof t.ProfileUI.confirmAction=="function"?t.ProfileUI.confirmAction(e):Promise.resolve(!t.confirm||t.confirm(e))}var p=t.document,h=Object.create(null),M="",U="",c="",I=!1,y=!1,H=["owner","admin","editor","member","visitor"],j=["admin","editor","member"],x={owner:"谱主",admin:"管理员",editor:"编辑",member:"成员",visitor:"访客"};function L(){return t.GenealogyApi&&t.GenealogyApi.defaultClient}function m(e,r){return p?(r||p).querySelector(e):null}function P(e,r){return p?Array.prototype.slice.call((r||p).querySelectorAll(e)):[]}function d(e){return e==null?"":String(e)}function G(e){var r=d(e).trim();return r||void 0}function g(e){return e==null||e===""||typeof e=="number"&&!Number.isSafeInteger(e)?"":/^[1-9][0-9]*$/.test(String(e))?String(e):""}function T(e){var r=e===void 0&&t.location?t.location.search:e,n,a;return e===void 0&&t.ProfileUI&&t.ProfileUI.getGenealogyId&&(n=t.ProfileUI.getGenealogyId(),n)?g(n):(a=new URLSearchParams(d(r).replace(/^\?/,"")),g(a.get("genealogyId")))}function k(e){var r=g(e&&e.memberId),n=g(e&&e.genealogyId),a=g(e&&e.appUserId),i=g(e&&e.lineagePersonId),f=g(e&&e.inviterUserId),l=d(e&&e.roleType),o=d(e&&e.status),S;return!r||!n||!a||H.indexOf(l)<0||o!=="0"||e.lineagePersonId!==void 0&&e.lineagePersonId!==null&&e.lineagePersonId!==""&&!i||e.inviterUserId!==void 0&&e.inviterUserId!==null&&e.inviterUserId!==""&&!f?null:(S={memberId:r,genealogyId:n,genealogyNo:d(e.genealogyNo),genealogyName:d(e.genealogyName),surname:d(e.surname),appUserId:a,appUserNickName:d(e.appUserNickName),appUserPhone:d(e.appUserPhone),lineagePersonNo:d(e.lineagePersonNo),lineagePersonName:d(e.lineagePersonName),memberName:d(e.memberName),roleType:l,relationName:d(e.relationName),joinSource:d(e.joinSource),inviterNickName:d(e.inviterNickName),inviterPhone:d(e.inviterPhone),joinTime:d(e.joinTime),status:o},i&&(S.lineagePersonId=i),f&&(S.inviterUserId=f),S)}function R(e){var r;return Array.isArray(e)?(r=e.map(k),r.some(function(n){return!n})?[]:r):[]}function q(e){var r=g(e&&e.personId),n=G(e&&e.name);return!r||!n?null:{personId:r,name:n,generationName:d(e.generationName)}}function V(e){var r=e||{},n={},a=G(r.memberName),i=G(r.relationName),f=G(r.roleType),l=g(r.lineagePersonId);if(f!==void 0&&j.indexOf(f)<0)throw new Error("成员角色只能是管理员、编辑或成员");return a!==void 0&&(n.memberName=a),i!==void 0&&(n.relationName=i),f!==void 0&&(n.roleType=f),r.lineagePersonId!==void 0&&r.lineagePersonId!==null&&r.lineagePersonId!==""&&(l?n.lineagePersonId=l:n.invalidLineagePersonId=!0),n}function W(e){return e?e.memberName!==void 0&&e.memberName.length>50?"成员名称不能超过 50 个字符":e.relationName!==void 0&&e.relationName.length>100?"关系名称不能超过 100 个字符":e.roleType!==void 0&&j.indexOf(e.roleType)<0?"成员角色只能是管理员、编辑或成员":e.invalidLineagePersonId?"世系人物选项无效":"":"成员修改内容无效"}function A(e,r){return r==="owner"?!1:r==="admin"?e==="owner":e==="owner"||e==="admin"}function $(e,r){return A(e,r)}function C(e){return!!(e&&e!=="owner")}function z(e,r){return e==="owner"&&r===!0}function J(e){return{targetMemberId:g(e)}}function K(e,r){return!e||!e.targetMemberId?"请选择新谱主":g(r)&&e.targetMemberId===g(r)?"不能转让给自己":""}function v(e){return d(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function O(e){return e.memberName||e.lineagePersonName||e.appUserNickName||"未命名成员"}function Q(e,r){var n=r||{},a=[x[e.roleType]||e.roleType,e.relationName,e.lineagePersonName?"世系人物:"+e.lineagePersonName:"",e.joinTime?"加入:"+e.joinTime:""].filter(Boolean).join(" · "),i="";return n.canManage&&A(n.actorRole,e.roleType)&&(i=''),'

'+v(O(e))+(e.memberId===n.currentMemberId?' 当前账号':"")+"

"+v(a)+'

'+i+"
"}function X(e,r){var n=r&&(r.status||r.code);return!e||!e.getToken||!e.getToken()||Number(n)===401}function s(e){return Number(e&&(e.status||e.code))===403}function b(e,r){return X(e,r)?(e&&e.clearToken&&e.clearToken(),t.NavigationUtil.open("login.html"),!0):!1}function E(e){t.layui&&t.layui.layer?t.layui.layer.msg(e):t.alert&&t.alert(e)}function u(e,r,n){var a=m(e);if(a){if(!r){a.innerHTML="";return}if(n&&t.ProfileUI&&t.ProfileUI.setApiState){t.ProfileUI.setApiState(a,n,r);return}a.textContent=r}}function B(e,r){var n=m("[data-member-list]");if(n){if(t.ProfileUI&&t.ProfileUI.setApiState){t.ProfileUI.setApiState(n,e,r);return}n.innerHTML='
'+v(r)+"
"}}function D(e,r,n){P(e).forEach(function(a){a.dataset.defaultLabel||(a.dataset.defaultLabel=a.textContent),a.textContent=r?n:a.dataset.defaultLabel,a.setAttribute("aria-busy",r?"true":"false")})}function re(){t.ProfileUI&&t.ProfileUI.syncGenealogyContextLinks&&t.ProfileUI.syncGenealogyContextLinks()}function w(e){y=!!e,P("[data-member-form] input, [data-member-form] select, [data-member-form] button, [data-owner-transfer-form] select, [data-owner-transfer-form] button, [data-member-edit-id], [data-member-remove-id], [data-member-leave]").forEach(function(r){r.disabled=y}),D("[data-member-submit]",y,"正在保存…"),D("[data-owner-transfer-submit]",y,"正在转让…"),D("[data-member-leave]",y,"正在退出…")}function ne(e){var r=m("[data-member-lineage-options]"),n=Array.isArray(e)?e.map(q).filter(Boolean):[];return r&&(r.innerHTML=''+n.map(function(a){var i=a.name+(a.generationName?" · "+a.generationName:"");return'"}).join("")),n}function Y(e){var r=m("[data-owner-transfer-target]"),n=e.filter(function(a){return a.memberId!==U&&a.roleType!=="owner"});return r&&(r.innerHTML=''+n.map(function(a){return'"}).join("")),n}function Z(e){var r=m("[data-member-list]"),n=R(e);return h=Object.create(null),n.forEach(function(a){h[a.memberId]=a}),r?!Array.isArray(e)||e.length&&!n.length?(B("error","成员响应缺少稳定 GenealogyMemberVo 字段,请联系后端核对。"),[]):n.length?(r.innerHTML=n.map(function(a){return Q(a,{actorRole:c,currentMemberId:U,canManage:I})}).join(""),Y(n),n):(B("empty","暂无正常成员"),Y(n),n):n}function ae(e){var r=m("[data-member-role-options]"),n=c==="owner"?j:["editor","member"];r&&(r.innerHTML=n.map(function(a){return'"}).join(""),r.value=n.indexOf(e)>=0?e:n[n.length-1])}function te(e){var r=m("[data-member-form]");!r||!e||!I||!A(c,e.roleType)||(M=e.memberId,r.hidden=!1,m('[name="memberName"]',r).value=e.memberName,m('[name="relationName"]',r).value=e.relationName,ae(e.roleType),m('[name="lineagePersonId"]',r).value=e.lineagePersonId||"",m("[data-member-form-title]")&&(m("[data-member-form-title]").textContent="编辑“"+O(e)+"”"),u("[data-member-form-status]",""))}function F(){var e=m("[data-member-form]");M="",e&&(e.reset(),e.hidden=!0),u("[data-member-form-status]","")}async function _(e,r){var n=await e.genealogyMembers(r),a=Z(n);if(Array.isArray(n)&&n.length&&!a.length)throw new Error("成员响应字段不完整");return a}function ie(){B("forbidden","请先选择家谱,再管理成员。"),u("[data-member-overview]","当前没有家谱上下文。","forbidden"),u("[data-member-action-status]","请先选择家谱,再进行成员操作。","forbidden"),P("[data-member-management], [data-member-leave-section], [data-owner-transfer-section]").forEach(function(e){e.hidden=!0})}async function ee(){var e=L(),r,n,a,i,f,l;if(!b(e)){if(r=T(),!r){ie();return}re(),u("[data-member-overview]","正在加载家谱和当前权限…","loading"),B("loading","正在加载成员…"),u("[data-member-action-status]","");try{n=await Promise.all([e.genealogyDetail(r),e.currentProfile(),e.genealogyMembers(r),e.lineagePersonOptions(r)]),a=n[0]||{},i=g(n[1]&&n[1].userId),c=H.indexOf(d(a.roleType))>=0?d(a.roleType):"",I=a.canManage===!0,f=R(n[2]),l=f.find(function(o){return o.appUserId===i})||null,U=l?l.memberId:"",!c&&l&&(c=l.roleType),u("[data-member-overview]",(a.genealogyName||"当前家谱")+" · "+f.length+" 位正常成员 · 当前角色:"+(x[c]||"成员")),P("[data-member-management]").forEach(function(o){o.hidden=!I}),P("[data-member-leave-section]").forEach(function(o){o.hidden=!l||!C(c)}),P("[data-owner-transfer-section]").forEach(function(o){o.hidden=!l||!z(c,I)}),ne(n[3]),Z(n[2])}catch(o){if(b(e,o))return;B(s(o)?"forbidden":"error",s(o)?"当前账号无权查看该家谱成员。":"成员加载失败,请稍后重试。"),u("[data-member-overview]",s(o)?"当前账号无权查看该家谱成员。":"成员加载失败,请稍后重试。",s(o)?"forbidden":"error"),E(s(o)?"当前账号无权查看该家谱成员。":o.message||"成员加载失败")}}}function oe(e){var r={};return P("[name]",e).forEach(function(n){r[n.name]=n.value}),r}async function le(e){var r=L(),n=T(),a=h[M],i,f,l;if(!(y||!n||!a||!I||!A(c,a.roleType)||b(r))){if(i=V(oe(e)),f=W(i),f){u("[data-member-form-status]",f,"error");return}delete i.invalidLineagePersonId,w(!0),u("[data-member-form-status]","正在保存成员…","loading");try{if(l=k(await r.updateGenealogyMember(n,M,i)),!l||l.memberId!==M)throw new Error("成员修改响应缺少稳定 memberId");if(!(await _(r,n)).some(function(o){return o.memberId===l.memberId}))throw new Error("修改后成员列表未返回同一成员");F(),E("成员信息已更新")}catch(o){if(b(r,o))return;u("[data-member-form-status]",s(o)?"当前账号无权修改该成员。":o.message||"成员修改失败",s(o)?"forbidden":"error")}finally{w(!1)}}}async function de(e){var r=L(),n=T(),a=h[e];if(!(y||!n||!a||!I||!$(c,a.roleType)||b(r))&&await N("确认将“"+O(a)+"”移出当前家谱吗?该操作不会删除其世系人物资料。")){w(!0),u("[data-member-action-status]","正在移出成员…","loading");try{if(await r.removeGenealogyMember(n,e),(await _(r,n)).some(function(i){return i.memberId===e}))throw new Error("移出后成员仍存在于正常成员列表");M===e&&F(),E("成员已移出家谱")}catch(i){if(b(r,i))return;u("[data-member-action-status]",s(i)?"当前账号无权移出该成员。":i.message||"移出成员失败",s(i)?"forbidden":"error"),E(s(i)?"当前账号无权移出该成员。":i.message||"移出成员失败")}finally{w(!1)}}}async function ue(){var e=L(),r=T();if(!(y||!r||!U||!C(c)||b(e))&&await N("确认退出当前家谱吗?退出后需重新受邀才能进入。世系人物资料不会被删除。")){w(!0),u("[data-member-action-status]","正在退出当前家谱…","loading");try{await e.leaveGenealogy(r),t.NavigationUtil.open("profile-families.html")}catch(n){if(b(e,n))return;u("[data-member-action-status]",s(n)?"当前账号无权退出该家谱。":n.message||"退出家谱失败",s(n)?"forbidden":"error"),E(s(n)?"当前账号无权退出该家谱。":n.message||"退出家谱失败")}finally{w(!1)}}}async function fe(e){var r=L(),n=T(),a=J(m('[name="targetMemberId"]',e).value),i=K(a,U),f=h[a.targetMemberId];if(!(y||!n||!z(c,I)||b(r))){if(i||!f){u("[data-owner-transfer-status]",i||"请选择成员列表中的新谱主","error");return}if(await N("确认将谱主转让给“"+O(f)+"”吗?转让后当前账号将变为管理员。")){w(!0),u("[data-owner-transfer-status]","正在转让谱主…","loading");try{await r.transferGenealogyOwner(n,a),await ee(),u("[data-owner-transfer-status]","谱主已转让")}catch(l){if(b(r,l))return;u("[data-owner-transfer-status]",s(l)?"只有当前谱主可以执行转让。":l.message||"谱主转让失败",s(l)?"forbidden":"error")}finally{w(!1)}}}}function se(){p&&(p.addEventListener("click",function(e){var r=e.target.closest("[data-member-edit-id]"),n=e.target.closest("[data-member-remove-id]"),a=e.target.closest("[data-member-leave]");r?(e.preventDefault(),te(h[r.getAttribute("data-member-edit-id")])):n?(e.preventDefault(),de(n.getAttribute("data-member-remove-id"))):a&&(e.preventDefault(),ue())}),p.addEventListener("submit",function(e){var r=e.target.closest("[data-member-form]"),n=e.target.closest("[data-owner-transfer-form]");r?(e.preventDefault(),le(r)):n&&(e.preventDefault(),fe(n))}),p.addEventListener("reset",function(e){e.target.closest("[data-member-form]")&&F()}))}function me(){!p||!m("[data-member-admin-page]")||(se(),ee())}return{getCurrentGenealogyId:T,normalizeMember:k,normalizeMembers:R,normalizeLineageOption:q,buildMemberUpdateBody:V,validateMemberUpdateBody:W,canEditMember:A,canRemoveMember:$,canLeaveGenealogy:C,canTransferOwner:z,buildOwnerTransferBody:J,validateOwnerTransferBody:K,renderMemberRow:Q,shouldRedirectToLogin:X,isForbidden:s,init:me}});