(function(o,z){if(typeof module=="object"&&module.exports){module.exports=z(o);return}o.LineagePages=z(o),o.document&&o.document.addEventListener("DOMContentLoaded",function(){o.LineagePages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(o){"use strict";function z(e){return o.ProfileUI&&typeof o.ProfileUI.confirmAction=="function"?o.ProfileUI.confirmAction(e):Promise.resolve(!o.confirm||o.confirm(e))}var E=o.MediaDisplay||(typeof require=="function"?require("./media-display.js"):null),m=o.document,v="",C="",S="",I=Object.create(null),c=1,$=20,N=null,U=!1,b=!1,K="";function G(){return o.GenealogyApi&&o.GenealogyApi.defaultClient}function re(e,a){var n=a&&(a.status||a.code);return!e||!e.getToken||!e.getToken()||Number(n)===401}function w(e){return Number(e&&(e.status||e.code))===403}function y(e,a){return re(e,a)?(e&&e.clearToken&&e.clearToken(),o.NavigationUtil.open("login.html"),!0):!1}function l(e,a){return m?(a||m).querySelector(e):null}function h(e,a){return m?Array.prototype.slice.call((a||m).querySelectorAll(e)):[]}function O(e){if(o.layui&&o.layui.layer){o.layui.layer.msg(e);return}o.alert&&o.alert(e)}function Ie(e,a){var n=new URLSearchParams(String(e||"").replace(/^\?/,""));return n.get(a)||""}function te(e){var a=l("[data-lineage-page]"),n=e===void 0&&o.location?o.location.search:e,r;return e===void 0&&o.ProfileUI&&o.ProfileUI.getGenealogyId&&(r=o.ProfileUI.getGenealogyId(),r)?r:Ie(n,"genealogyId")||a&&a.getAttribute("data-genealogy-id")||""}function f(e){var a=String(e==null?"":e).trim();return a||void 0}function x(e){var a=f(e),n;if(a)return n=Number(a),Number.isInteger(n)&&Number.isSafeInteger(n)?n:void 0}function g(e){var a;return e==null||e===""||typeof e=="number"&&!Number.isSafeInteger(e)?"":(a=String(e),/^\d+$/.test(a)?a:"")}function j(e){return g(e&&e.personId)}function ie(e){var a=f(e);if(a)return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(a)?a.replace("T"," ")+":00":/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(a)?a.replace("T"," "):a}function oe(e){var a=e||{},n=f(a.bindingMode),r={bindingMode:n,name:f(a.name)},t=["personNo","aliasName","sex","generationName","birthLunar","birthPlace","deathLunar","deathPlace","burialPlace","personStatus","biography","remark","relationName"],i=["avatarOssId","fatherId","motherId"],u=f(a.generation),s=f(a.sortOrder),M=ie(a.birthDate),Q=ie(a.deathDate);return t.forEach(function(F){var k=f(a[F]);k!==void 0&&(r[F]=k)}),i.forEach(function(F){var k=g(a[F]);k&&(r[F]=k)}),n==="SPECIFIED"&&(r.appUserId=g(a.appUserId)||f(a.appUserId)),M!==void 0&&(r.birthDate=M),Q!==void 0&&(r.deathDate=Q),u!==void 0&&(r.generation=Number(u)),s!==void 0&&(r.sortOrder=Number(s)),r}function le(e){return!e||!e.name?"请填写成员姓名":e.bindingMode?["NONE","SELF","SPECIFIED"].indexOf(e.bindingMode)===-1?"账号绑定方式无效":e.bindingMode==="SPECIFIED"&&!g(e.appUserId)?"指定账号绑定缺少用户选项":e.bindingMode!=="SPECIFIED"&&e.appUserId!==void 0?"当前绑定方式不能提交指定用户":e.sex!==void 0&&["0","1","2"].indexOf(e.sex)===-1?"性别选项无效":e.personStatus!==void 0&&["0","1","2"].indexOf(e.personStatus)===-1?"人物状态选项无效":e.birthLunar!==void 0&&["0","1"].indexOf(e.birthLunar)===-1?"出生历法选项无效":e.deathLunar!==void 0&&["0","1"].indexOf(e.deathLunar)===-1?"逝世历法选项无效":["avatarOssId","fatherId","motherId"].some(function(a){return e[a]!==void 0&&!g(e[a])})?"人物关联字段无效":e.generation!==void 0&&(!Number.isInteger(e.generation)||!Number.isSafeInteger(e.generation))?"世代序号必须是整数":e.sortOrder!==void 0&&(!Number.isInteger(e.sortOrder)||!Number.isSafeInteger(e.sortOrder))?"排序值必须是整数":"":"请选择账号绑定方式"}function D(e){var a=j(e),n=f(e&&e.name),r,t=!1;return!a||!n||(r={personId:a,name:n},["genealogyName","genealogyNo","appUserNickName","personNo","aliasName","sex","generationName","fatherName","motherName","spouseNames","birthDate","birthLunar","birthPlace","deathDate","deathLunar","deathPlace","burialPlace","personStatus","biography","status","remark","relationType","relationName"].forEach(function(i){e&&e[i]!==void 0&&e[i]!==null&&(r[i]=String(e[i]))}),["appUserId","genealogyId","fatherId","motherId"].forEach(function(i){if(e&&e[i]!==void 0&&e[i]!==null){var u=g(e[i]);if(!u){t=!0;return}r[i]=u}}),t)||e&&e.avatarFile!==void 0&&e.avatarFile!==null&&(r.avatarFile=E&&E.normalizeFileAccess(e.avatarFile),!r.avatarFile)?null:(x(e&&e.generation)!==void 0&&(r.generation=x(e.generation)),x(e&&e.sortOrder)!==void 0&&(r.sortOrder=x(e.sortOrder)),r)}function ue(e){return{canEditContent:!!(e&&e.canEditContent===!0)}}function de(e){var a=x(e&&e.generationNo),n=f(e&&e.generationText);return!a||!n?null:{generation:a,generationName:n}}function se(e){var a=g(e&&e.memberId),n=g(e&&e.genealogyId),r=g(e&&e.appUserId),t=f(e&&e.status);return!a||!n||!r||t!=="0"?null:{memberId:a,genealogyId:n,appUserId:r,appUserNickName:String(e.appUserNickName===void 0||e.appUserNickName===null?"":e.appUserNickName),memberName:String(e.memberName===void 0||e.memberName===null?"":e.memberName),roleType:String(e.roleType===void 0||e.roleType===null?"":e.roleType),status:t}}function fe(e){return Array.isArray(e)?e.map(se).filter(Boolean):[]}function ge(e,a){var n=g(e&&e.appUserId),r=g(a);return n?r&&n===r?{bindingMode:"SELF",appUserId:""}:{bindingMode:"SPECIFIED",appUserId:n}:{bindingMode:"NONE",appUserId:""}}function P(e){return Array.isArray(e)?e:e&&Array.isArray(e.rows)?e.rows:[]}function d(e){return String(e==null?"":e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function ce(e){var a=[];return e.generation!==void 0&&a.push("第 "+e.generation+" 世"),e.generationName&&a.push("字辈:"+e.generationName),e.aliasName&&a.push("别名:"+e.aliasName),e.relationName&&a.push("关系称谓:"+e.relationName),e.personStatus&&a.push("人物状态:"+e.personStatus),a.join(" · ")||"未填写世代信息"}function pe(e){var a=l("[data-lineage-list]"),n=P(e).map(D),r=n.filter(function(i){return!i}).length,t=n.filter(Boolean);if(I=Object.create(null),t.forEach(function(i){I[i.personId]=i}),!!a){if(r){p("[data-lineage-list]","error","人物响应缺少可安全使用的 personId 或 name,请联系后端补充 DTO。");return}if(!t.length){p("[data-lineage-list]","empty","暂无世系人物");return}a.innerHTML=t.map(function(i){var u=i.personId===v?" is-selected":"";return''}).join("")}}function W(e,a){var n=D(e),r,t,i,u="";return n?a[n.personId]?'
  • '+d(n.name)+" 已在上级关系中展示
  • ":(r=Object.assign({},a),r[n.personId]=!0,t=P(e&&e.spouses).map(function(s){return W(s,r)}).filter(Boolean).join(""),i=P(e&&e.children).map(function(s){return W(s,r)}).filter(Boolean).join(""),t&&(u+=""),i&&(u+=""),'
  • "+u+"
  • "):""}function me(e){var a=P(e).map(function(n){return W(n,{})}).filter(Boolean);return a.length?'":""}function Ne(e){var a=l("[data-lineage-tree]"),n=me(e);if(a){if(!n){p("[data-lineage-tree]","empty","暂无世系树");return}a.innerHTML=n}}function ye(e){var a=l("[data-lineage-person-options]"),n=P(e).map(D).filter(Boolean),r=n.map(function(t){return'"}).join("");a&&(a.innerHTML=''+r,a.value=v,h("[data-lineage-parent-option]").forEach(function(t){var i=t.getAttribute("data-empty-label")||"请选择人物";t.innerHTML='"+r}))}function Pe(e){var a=l("[data-lineage-generation]"),n=l("[data-lineage-generation-filter]"),r=a?a.value:"",t=n?n.value:"",i=P(e).map(de).filter(Boolean),u=i.map(function(s){return'"}).join("");a&&(a.innerHTML=''+u,a.value=r),n&&(n.innerHTML=''+u,n.value=t)}function H(){var e=l('[name="bindingMode"]'),a=l("[data-lineage-member-options]"),n=l("[data-lineage-specified-member]"),r=!!(e&&e.value==="SPECIFIED");a&&(n&&(n.hidden=!r),a.hidden=!r,a.required=r,r||(a.value=""))}function Le(e){var a=l("[data-lineage-member-options]"),n=a?a.value:"",r=fe(e).filter(function(t){return t.appUserId!==K});return a&&(a.innerHTML=''+r.map(function(t){var i=t.memberName||t.appUserNickName||"家谱成员";return'"}).join(""),a.value=n,H()),r}function Se(e){var a=l("[data-lineage-list-summary]"),n;a&&(n=P(e).map(D).filter(Boolean).length,a.textContent=n?"成员总览已返回 "+n+" 人;下方结果按页展示。":"成员总览暂无可展示人物。")}function J(){var e=l("[data-lineage-pagination]"),a=l('[data-lineage-page-action="previous"]'),n=l('[data-lineage-page-action="next"]'),r=l("[data-lineage-page-status]"),t=b;if(e){if(N===null){e.hidden=!0;return}e.hidden=!1,a&&(a.disabled=t||c<=1),n&&(n.disabled=t||c*$>=N),r&&(r.textContent="第 "+c+" 页,共 "+N+" 人")}}function ve(e){return!e}function Ue(e){var a=e&&Number(e.total);N=Number.isFinite(a)&&a>=0?a:null,J()}function Ee(e){var a=l("[data-lineage-detail]"),n=D(e),r,t="";if(a){if(!n){p("[data-lineage-detail]","error","人物详情缺少可安全使用的 personId 或 name,请联系后端补充 DTO。");return}v=n.personId,I[n.personId]=n,r=[n.sex!==void 0?"性别:"+({0:"男",1:"女",2:"未知"}[n.sex]||n.sex):"",n.generation!==void 0?"世代:"+n.generation:"",n.generationName?"字辈:"+n.generationName:"",n.personNo?"人物编号:"+n.personNo:"",n.aliasName?"别名:"+n.aliasName:"",n.fatherName?"父亲:"+n.fatherName:"",n.motherName?"母亲:"+n.motherName:"",n.spouseNames?"配偶:"+n.spouseNames:"",n.appUserNickName?"绑定账号:"+n.appUserNickName:"",n.birthDate?"出生:"+n.birthDate:"",n.birthPlace?"出生地:"+n.birthPlace:"",n.deathDate?"逝世:"+n.deathDate:"",n.deathPlace?"逝世地:"+n.deathPlace:"",n.burialPlace?"安葬地:"+n.burialPlace:"",n.personStatus!==void 0?"人物状态:"+({0:"健在",1:"已故",2:"未知"}[n.personStatus]||n.personStatus):"",n.biography?"简介:"+n.biography:"",n.remark?"备注:"+n.remark:""].filter(Boolean),U&&(t='
    '),a.innerHTML='

    '+d(n.name)+"

    "+d(r.join(" · ")||"暂无更多资料")+"

    "+t+"
    ",pe(Object.keys(I).map(function(i){return I[i]})),l("[data-lineage-person-options]")&&(l("[data-lineage-person-options]").value=n.personId),Z()}}function Oe(e){var a={};return h("[name]",e).forEach(function(n){a[n.name]=n.value}),a}function p(e,a,n){var r=l(e);if(r){if(o.ProfileUI&&o.ProfileUI.setApiState){o.ProfileUI.setApiState(r,a,n);return}r.innerHTML='
    '+d(n)+"
    "}}function L(e,a){var n=l("[data-lineage-form-status]");if(n){if(!e){n.innerHTML="";return}if(a&&o.ProfileUI&&o.ProfileUI.setApiState){o.ProfileUI.setApiState(n,a,e);return}n.textContent=e}}function B(e,a){var n=l("[data-lineage-action-status]");if(n){if(!e){n.innerHTML="";return}if(a&&o.ProfileUI&&o.ProfileUI.setApiState){o.ProfileUI.setApiState(n,a,e);return}n.textContent=e}}function xe(e){h("[data-lineage-submit]").forEach(function(a){a.dataset.defaultLabel||(a.dataset.defaultLabel=a.textContent),a.textContent=e?"正在保存…":a.dataset.defaultLabel,a.setAttribute("aria-busy",e?"true":"false")})}function X(e){h("[data-lineage-submit]").forEach(function(a){a.dataset.defaultLabel=e,b||(a.textContent=e)})}function Y(e){return{parents:"父母",spouses:"配偶",children:"子女",siblings:"兄弟姐妹"}[e]||""}function De(e){if(o.ProfileUI&&o.ProfileUI.syncGenealogyContextLinks){o.ProfileUI.syncGenealogyContextLinks();return}h("[data-genealogy-context-link]").forEach(function(a){var n=a.getAttribute("href"),r;!n||n==="#"||(r=n.split("?")[0],a.href=r+"?genealogyId="+encodeURIComponent(e))})}function Ae(){["[data-lineage-tree]","[data-lineage-list]","[data-lineage-detail]"].forEach(function(e){p(e,"error","请从具体家谱进入世系管理")}),l("[data-lineage-list-summary]")&&(l("[data-lineage-list-summary]").textContent=""),N=null,_(!1),B("请从具体家谱进入世系管理。","error"),J()}function q(){var e=te();return e||(Ae(),O("请从具体家谱进入世系管理")),e}function Z(){var e=!U||b;h("[data-lineage-management]").forEach(function(a){a.hidden=!U}),h("[data-lineage-relation], [data-lineage-form] button, [data-lineage-form] input, [data-lineage-form] select, [data-lineage-form] textarea, [data-lineage-edit], [data-lineage-disable]").forEach(function(a){a.disabled=e}),h("[data-lineage-relation]").forEach(function(a){a.disabled=e||!v}),h("[data-lineage-search], [data-lineage-person-options]").forEach(function(a){a.disabled=b}),J()}function _(e){U=!!e,Z()}function R(e){b=!!e,Z(),xe(b)}function V(){["[data-lineage-tree]","[data-lineage-list]","[data-lineage-detail]"].forEach(function(e){p(e,"forbidden","当前账号没有世系人物管理权限")}),l("[data-lineage-list-summary]")&&(l("[data-lineage-list-summary]").textContent=""),N=null,_(!1),L("当前账号没有世系人物管理权限","forbidden"),B("当前账号没有世系人物管理权限","forbidden")}function A(){var e=l("[data-lineage-keyword]");return e?e.value:""}function be(e,a,n){var r=e||{},t={pageNum:Number(a),pageSize:Number(n)},i=f(r.keyword),u=x(r.generation),s=f(r.personStatus);return i!==void 0&&(t.keyword=i),u!==void 0&&u>0&&(t.generation=u),["0","1","2"].indexOf(s)!==-1&&(t.personStatus=s),t}function Te(e){var a=l("[data-lineage-generation-filter]"),n=l("[data-lineage-status-filter]");return{keyword:e,generation:a?a.value:"",personStatus:n?n.value:""}}async function T(e,a){var n=G(),r,t,i,u=f(e),s=Number(a);if(!y(n)&&(r=q(),!!r)){c=Number.isInteger(s)&&s>0?s:1,De(r),p("[data-lineage-tree]","loading","正在加载世系树…"),p("[data-lineage-list]","loading","正在加载世系人物…"),B("");try{t=await Promise.all([n.genealogyDetail(r),n.currentProfile(),n.lineageTree(r),n.lineagePersons(r),n.lineagePersonsPage(r,be(Te(u),c,$)),n.lineagePersonOptions(r),n.generationPoems(r)]),i=ue(t[0]),K=g(t[1]&&t[1].userId),_(i.canEditContent),Ne(t[2]),Se(t[3]),pe(t[4]),Ue(t[4]),ye(t[5]),Pe(t[6]),i.canEditContent&&Le(await n.genealogyMemberOptions(r))}catch(M){if(y(n,M))return;if(w(M)){V();return}["[data-lineage-tree]","[data-lineage-list]"].forEach(function(Q){p(Q,"error","世系人物加载失败,请稍后重试")}),O(M.message||"世系人物加载失败")}}}async function ee(e){var a=G(),n;if(!y(a)&&(n=q(),!(!n||!e))){p("[data-lineage-detail]","loading","正在加载成员详情…");try{Ee(await a.lineagePersonDetail(n,e))}catch(r){if(y(a,r))return;if(w(r)){V();return}p("[data-lineage-detail]","error","人物详情加载失败,请稍后重试。"),O(r.message||"人物详情加载失败")}}}function Me(e){var a=I[v],n=l('[data-lineage-form] button[type="submit"]');if(!(!U||b)){if(!a){O("请先从成员列表、世系树或下拉框选择当前成员");return}S=e,C="",ae(e==="spouses"),n&&X("新增"+Y(e)),L("当前将为“"+a.name+"”新增"+Y(e))}}function he(e){var a=f(e);return a?a.slice(0,16).replace(" ","T"):""}function ae(e){var a=l("[data-lineage-spouse-field]");a&&(a.hidden=!e)}function Ce(e){var a=l("[data-lineage-form]"),n,r,t;!a||!e||(t=ge(e,K),n={bindingMode:t.bindingMode,appUserId:t.appUserId,avatarOssId:e.avatarOssId,name:e.name,sex:e.sex,generation:e.generation,generationName:e.generationName,fatherId:e.fatherId,motherId:e.motherId,personNo:e.personNo,aliasName:e.aliasName,birthDate:he(e.birthDate),birthLunar:e.birthLunar,birthPlace:e.birthPlace,deathDate:he(e.deathDate),deathLunar:e.deathLunar,deathPlace:e.deathPlace,burialPlace:e.burialPlace,personStatus:e.personStatus,sortOrder:e.sortOrder,relationName:e.relationName,biography:e.biography,remark:e.remark},h("[name]",a).forEach(function(i){i.value=n[i.name]===void 0||n[i.name]===null?"":n[i.name]}),H(),S="",C=e.personId,ae(!1),r=l('[data-lineage-form] button[type="submit"]'),r&&X("保存修改"),L("正在编辑“"+e.name+"”"))}function ne(){var e=l('[data-lineage-form] button[type="submit"]');S="",C="",ae(!1),e&&X("保存成员"),L(""),o.setTimeout&&o.setTimeout(H,0)}async function we(e){var a=G(),n,r=oe(Oe(e)),t=le(r),i;if(!(b||!U||y(a))&&(n=q(),!!n)){if(t){L(t,"error");return}R(!0),L("正在保存成员…","loading");try{C?i=await a.updateLineagePerson(n,C,r):S==="parents"?i=await a.createLineageParent(n,v,r):S==="spouses"?i=await a.createLineageSpouse(n,v,r):S==="children"?i=await a.createLineageChild(n,v,r):S==="siblings"?i=await a.createLineageSibling(n,v,r):i=await a.createLineagePerson(n,r),e.reset(),ne(),L("成员已保存"),await T(A(),c),j(i)&&await ee(j(i))}catch(u){if(y(a,u))return;if(w(u)){V();return}L(u.message||"成员保存失败","error")}finally{R(!1)}}}async function Be(e){var a=G(),n,r=I[e];if(!(b||!U||y(a))&&(n=q(),!(!n||!e)&&await z("确认停用“"+(r?r.name:"该成员")+"”吗?有正常子女时后端会拒绝停用。"))){R(!0),B("正在停用成员…","loading");try{await a.disableLineagePerson(n,e),v="",ne(),await T(A(),c),O("成员已停用")}catch(t){if(y(a,t))return;if(w(t)){V();return}B(t.message||"成员停用失败","error"),O(t.message||"成员停用失败")}finally{R(!1)}}}function Fe(){m&&(m.addEventListener("submit",function(e){var a=e.target.closest("[data-lineage-form]");a&&(e.preventDefault(),we(a))}),m.addEventListener("reset",function(e){e.target.closest("[data-lineage-form]")&&ne()}),m.addEventListener("change",function(e){var a=e.target.closest("[data-lineage-person-options]"),n=e.target.closest("[data-lineage-generation]"),r=e.target.closest('[name="bindingMode"]'),t,i,u;a&&a.value&&ee(a.value),n&&(t=n.options[n.selectedIndex],i=l('[name="generationName"]',n.form),i&&(i.value=t&&t.getAttribute("data-generation-name")||"")),r&&(u=l('[name="appUserId"]',r.form),r.value!=="SPECIFIED"&&u&&(u.value=""),H())}),m.addEventListener("click",function(e){var a=e.target,n=a.closest("[data-lineage-person]"),r=a.closest("[data-lineage-relation]"),t=a.closest("[data-lineage-edit]"),i=a.closest("[data-lineage-disable]"),u=a.closest("[data-lineage-page-action]");if(a.closest("[data-lineage-search]")){e.preventDefault(),T(A(),1);return}if(u){if(e.preventDefault(),!ve(b))return;u.getAttribute("data-lineage-page-action")==="previous"&&c>1&&T(A(),c-1),u.getAttribute("data-lineage-page-action")==="next"&&N!==null&&c*$