(function(a,D){if(typeof module=="object"&&module.exports){module.exports=D(a);return}a.GrowthPages=D(a),a.document&&a.document.addEventListener("DOMContentLoaded",function(){a.GrowthPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(a){"use strict";function D(e){return a.ProfileUI&&typeof a.ProfileUI.confirmAction=="function"?a.ProfileUI.confirmAction(e):Promise.resolve(!a.confirm||a.confirm(e))}var A=a.MediaDisplay||(typeof require=="function"?require("./media-display.js"):null),P=a.document,C=Object.create(null),T=!1,R=!1;function G(){return a.GenealogyApi&&a.GenealogyApi.defaultClient}function o(e,r){return P?(r||P).querySelector(e):null}function E(e,r){return P?Array.prototype.slice.call((r||P).querySelectorAll(e)):[]}function q(e,r){var t=new URLSearchParams(String(e||"").replace(/^\?/,""));return t.get(r)||""}function s(e){return e==null||e===""||typeof e=="number"&&!Number.isSafeInteger(e)?"":/^[1-9][0-9]*$/.test(String(e))?String(e):""}function H(e){var r=e===void 0&&a.location?a.location.search:e,t;return e===void 0&&a.ProfileUI&&a.ProfileUI.getGenealogyId&&(t=a.ProfileUI.getGenealogyId(),t)?s(t):s(q(r,"genealogyId"))}function L(e){var r=e===void 0&&a.location?a.location.search:e;return s(q(r,"recordId"))}function v(e){var r=String(e==null?"":e).trim();return r||void 0}function ne(e){var r=v(e),t;if(r!==void 0)return t=Number(r),Number.isSafeInteger(t)?t:void 0}function ae(e){var r=v(e);if(r)return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(r)?r.replace("T"," ")+":00":/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(r)?r.replace("T"," "):r}function ie(e){var r=String(e||"");return/^\d{4}-\d{2}-\d{2}/.test(r)?r.slice(0,10):""}function de(e){var r=String(e||"");return/^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}/.test(r)?r.slice(0,16).replace(" ","T"):""}function V(e){var r=e||{},t={recordTitle:String(r.recordTitle||"").trim()},i=v(r.lineagePersonId),n=v(r.recordType),d=v(r.recordContent),l=v(r.recordDate),y=ae(r.remindTime),c=v(r.mediaOssIds),g=v(r.sortOrder),b=v(r.status);return i!==void 0&&(t.lineagePersonId=i),n!==void 0&&(t.recordType=n),d!==void 0&&(t.recordContent=d),l!==void 0&&(t.recordDate=l),y!==void 0&&(t.remindTime=y),c!==void 0&&(t.mediaOssIds=c),g!==void 0&&(t.sortOrder=ne(g),t.sortOrder===void 0&&(t.invalidSortOrder=!0)),b!==void 0&&(t.status=b),t}function j(e){return!e||!e.recordTitle?"请填写记录标题":e.lineagePersonId!==void 0&&!s(e.lineagePersonId)?"请选择有效的世系人物":e.mediaOssIds!==void 0&&!/^[1-9][0-9]*(,[1-9][0-9]*)*$/.test(e.mediaOssIds)?"附件上传结果无效":e.invalidSortOrder||Object.prototype.hasOwnProperty.call(e,"sortOrder")&&!Number.isSafeInteger(e.sortOrder)?"排序值必须是安全整数":e.recordDate!==void 0&&!/^\d{4}-\d{2}-\d{2}$/.test(e.recordDate)?"记录日期格式无效":e.remindTime!==void 0&&!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e.remindTime)?"提醒时间格式无效":e.status==="1"?"当前 PC 无法重新读取停用记录,暂不开放停用":e.status!==void 0&&e.status!=="0"?"记录状态只能是 0":""}function u(e){return e==null?"":String(e)}function oe(e){var r;if(!(e==null||e===""))return r=Number(e),Number.isSafeInteger(r)?r:void 0}function O(e){var r=s(e&&e.recordId),t=s(e&&e.genealogyId),i=s(e&&e.appUserId),n=s(e&&e.lineagePersonId),d=String(e&&e.recordTitle||"").trim(),l=u(e&&e.status),y=A?A.normalizeFileList(e&&e.mediaFiles):[],c=oe(e&&e.sortOrder),g;return!r||!t||!d||l!=="0"&&l!=="1"||e.appUserId!==void 0&&e.appUserId!==null&&e.appUserId!==""&&!i||e.lineagePersonId!==void 0&&e.lineagePersonId!==null&&e.lineagePersonId!==""&&!n||e.sortOrder!==void 0&&e.sortOrder!==null&&e.sortOrder!==""&&c===void 0?null:(g={recordId:r,genealogyId:t,genealogyNo:u(e.genealogyNo),genealogyName:u(e.genealogyName),surname:u(e.surname),appUserNickName:u(e.appUserNickName),appUserPhone:u(e.appUserPhone),lineagePersonNo:u(e.lineagePersonNo),lineagePersonName:u(e.lineagePersonName),recordType:u(e.recordType),recordTitle:d,recordContent:u(e.recordContent),recordDate:u(e.recordDate),remindTime:u(e.remindTime),status:l,remark:u(e.remark)},y.length&&(g.mediaFiles=y),i&&(g.appUserId=i),n&&(g.lineagePersonId=n),c!==void 0&&(g.sortOrder=c),g)}function z(e,r){var t=O(e);return!!(t&&t.recordId===s(r))}function le(e){var r=s(e&&(e.personId||e.lineagePersonId)),t=String(e&&(e.name||e.lineagePersonName)||"").trim();return!r||!t?null:{personId:r,name:t,generationName:u(e.generationName)}}function f(e){return u(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function $(e,r,t){var i=s(r),n=Array.isArray(e)?e.map(le).filter(Boolean):[],d=n.some(function(l){return l.personId===i});return i&&!d&&t&&n.push({personId:i,name:String(t),generationName:""}),''+n.map(function(l){return'"}).join("")}function Q(e){return Array.isArray(e)?e.length:0}function W(e,r){var t="profile-growth.html?genealogyId="+encodeURIComponent(e);return r?t+"&recordId="+encodeURIComponent(r):t}function J(e,r){var t="profile-growth-edit.html?genealogyId="+encodeURIComponent(e);return r?t+"&recordId="+encodeURIComponent(r):t}function K(e){return!!(e&&(e.canEditContent===!0||e.canManage===!0))}function ue(e){var r=[],t='';return e.lineagePersonName&&r.push(e.lineagePersonName),e.recordType&&r.push(e.recordType),e.recordDate&&r.push(e.recordDate),r.length||r.push("未填写日期和关联人物"),T&&(t+='编辑'),'

'+f(e.recordTitle)+"

"+f(r.join(" · "))+'

'+t+"
"}function p(e,r){return"

"+f(e)+""+f(r||"未提供")+"

"}function X(e){var r,t="";return e?(r=Q(e.mediaFiles),T&&(t='
编辑记录
'),(A?A.renderGallery(e.mediaFiles,{label:"成长记录附件"}):"")+'
'+p("标题",e.recordTitle)+p("关联人物",e.lineagePersonName||e.lineagePersonNo)+p("记录类型",e.recordType)+p("记录日期",e.recordDate)+p("提醒时间",e.remindTime)+p("记录内容",e.recordContent)+p("附件",r?r+" 个附件":"未上传")+p("记录人",e.appUserNickName)+p("状态",e.status==="0"?"正常":"停用")+p("备注",e.remark)+"
"+t):_("empty","请选择一条成长记录查看详情")}function x(e){if(a.layui&&a.layui.layer){a.layui.layer.msg(e);return}a.alert&&a.alert(e)}function Y(e,r){var t=r&&(r.status||r.code);return!e||!e.getToken||!e.getToken()||Number(t)===401}function h(e){return Number(e&&(e.status||e.code))===403}function N(e){return h(e)?"forbidden":"error"}function m(e,r){return Y(e,r)?(e&&e.clearToken&&e.clearToken(),a.NavigationUtil.open("login.html"),!0):!1}function Z(){a.ProfileUI&&a.ProfileUI.syncGenealogyContextLinks&&a.ProfileUI.syncGenealogyContextLinks()}function _(e,r){return a.ProfileUI&&a.ProfileUI.renderApiState?a.ProfileUI.renderApiState(e,r):'
'+f(r)+"
"}function I(e,r,t){if(e){if(a.ProfileUI&&a.ProfileUI.setApiState){a.ProfileUI.setApiState(e,r,t);return}e.innerHTML=_(r,t)}}function U(e,r){var t=o("[data-growth-form-status]");if(t){if(!e){t.innerHTML="";return}if(r&&a.ProfileUI&&a.ProfileUI.setApiState){a.ProfileUI.setApiState(t,r,e);return}t.textContent=e}}function k(e,r,t){var i=o("[data-growth-editor-placeholder]");E("[data-growth-editor], [data-growth-editor-action]").forEach(function(n){n.hidden=!e}),i&&(i.hidden=!!e,!e&&r&&(t?I(i,t,r):i.textContent=r))}function B(e){T=!!e,E("[data-growth-create-link]").forEach(function(r){r.hidden=!T})}async function ee(e,r){var t=await e.genealogyDetail(r);return B(K(t)),t}function se(){var e=o("[data-growth-list]"),r=o("[data-growth-detail]"),t="请先选择家谱,再查看或维护成长记录。";I(e,"empty",t),I(r,"empty","当前没有家谱上下文。"),B(!1),k(!1,t,"empty"),U(t,"empty")}function S(){var e=H();return e||se(),e}function F(e,r){var t=o('[data-growth-form] [type="submit"]');R=!!e,E("[data-growth-form] input, [data-growth-form] textarea, [data-growth-form] select, [data-growth-form] button, [data-growth-delete-id]").forEach(function(i){i.disabled=R}),t&&(t.dataset.defaultLabel||(t.dataset.defaultLabel=t.textContent),t.textContent=R&&r?r:t.dataset.defaultLabel,t.setAttribute("aria-busy",R?"true":"false"))}function fe(e){var r=o("[data-growth-list]"),t=Array.isArray(e)?e.map(O):[],i=t.filter(function(d){return!d}).length,n=t.filter(Boolean);return C=Object.create(null),n.forEach(function(d){C[d.recordId]=d}),r?!Array.isArray(e)||i?(I(r,"error","成长记录响应缺少稳定 GrowthRecordVo 字段,请联系后端核对。"),[]):n.length?(r.innerHTML=n.map(ue).join(""),n):(I(r,"empty","暂无成长记录"),[]):n}function re(e){var r=o("[data-growth-detail]");r&&(r.innerHTML=X(e))}async function M(e){var r=G(),t=S(),i;if(!t||!s(e)||m(r))return null;I(o("[data-growth-detail]"),"loading","正在加载成长记录详情…");try{if(i=O(await r.growthRecordDetail(t,e)),!i)throw new Error("成长记录详情响应缺少稳定 GrowthRecordVo 字段");return C[i.recordId]=i,re(i),i}catch(n){return m(r,n)||(I(o("[data-growth-detail]"),N(n),h(n)?"当前账号无权查看该成长记录。":"成长记录详情加载失败,请稍后重试。"),x(h(n)?"当前账号无权查看该成长记录。":n.message||"成长记录详情加载失败")),null}}async function te(){var e=G(),r,t,i;if(!m(e)&&(r=S(),!!r)){Z(),I(o("[data-growth-list]"),"loading","正在加载成长记录…");try{await ee(e,r),t=fe(await e.growthRecords(r)),i=L(),i&&C[i]?await M(i):t.length?await M(t[0].recordId):re(null)}catch(n){if(m(e,n))return;B(!1),I(o("[data-growth-list]"),N(n),h(n)?"当前账号无权查看该家谱的成长记录。":"成长记录加载失败,请稍后重试。"),x(h(n)?"当前账号无权查看该家谱的成长记录。":n.message||"成长记录加载失败")}}}function ce(e){var r={};return E("[name]",e).forEach(function(t){r[t.name]=t.value}),r}function w(e,r){var t=o('[data-growth-form] [name="'+e+'"]');t&&(t.value=r==null?"":String(r))}function ge(e){var r,t;w("lineagePersonId",e.lineagePersonId),w("recordType",e.recordType),w("recordTitle",e.recordTitle),w("recordContent",e.recordContent),w("recordDate",ie(e.recordDate)),w("remindTime",de(e.remindTime)),w("mediaOssIds",e.mediaOssIds),w("sortOrder",e.sortOrder),w("status","0"),r=o('[data-growth-form] [name="recordContent"]'),r&&a.AppRichEditor&&a.AppRichEditor.init&&(t=a.AppRichEditor.init(r),t&&t.editor&&t.editor.setHtml&&t.editor.setHtml(e.recordContent||"")),o("[data-growth-media-status]")&&(o("[data-growth-media-status]").textContent=e.mediaOssIds?"已保留 "+Q(e.mediaOssIds)+" 个附件,可继续选择追加":"未选择文件")}function pe(e,r,t){var i=o("[data-growth-lineage-person]");i&&(i.innerHTML=$(e,r,t))}async function he(){var e=G(),r,t,i,n;if(!m(e)&&(r=S(),!!r)){t=L(),Z(),k(!1,"正在加载成长记录编辑信息…","loading"),U("正在读取家谱权限…","loading");try{if(await ee(e,r),!T)throw{status:403,message:"当前账号无权维护该家谱的成长记录。"};if(i=await Promise.all([e.lineagePersonOptions(r),t?e.growthRecordDetail(r,t):Promise.resolve(null)]),n=t?O(i[1]):null,t&&!n)throw new Error("成长记录详情响应缺少稳定 GrowthRecordVo 字段");pe(i[0],n&&n.lineagePersonId,n&&n.lineagePersonName),n&&(ge(n),o("[data-growth-editor-title]")&&(o("[data-growth-editor-title]").textContent="编辑成长记录")),k(!0),U("")}catch(d){if(m(e,d))return;B(!1),k(!1,h(d)?"当前账号无权维护该家谱的成长记录。":d.message||"成长记录编辑信息加载失败",N(d)),U(h(d)?"当前账号无权维护该家谱的成长记录。":d.message||"成长记录编辑信息加载失败",N(d))}}}async function me(e){var r=G(),t=S(),i=L(),n,d,l,y,c,g;if(!(R||!T||!t||m(r))){if(n=V(ce(e)),d=j(n),d){U(d,"error");return}delete n.invalidSortOrder,F(!0,"正在保存…"),U("正在保存成长记录…","loading");try{if(l=i?await r.updateGrowthRecord(t,i,n):await r.createGrowthRecord(t,n),y=O(l),c=i||y&&y.recordId,!c)throw new Error("保存响应缺少 recordId");if(g=await r.growthRecordDetail(t,c),!z(g,c))throw new Error("保存后重读未返回同一条成长记录");a.NavigationUtil.open(W(t,c))}catch(b){if(m(r,b))return;U(h(b)?"当前账号无权保存该成长记录。":b.message||"成长记录保存失败",N(b))}finally{F(!1)}}}async function ve(e){var r=G(),t=S(),i=C[e];if(!(R||!T||!t||!s(e)||m(r))&&await D("确认删除“"+(i?i.recordTitle:"该成长记录")+"”吗?删除后不可恢复,并会释放附件引用。")){F(!0);try{await r.deleteGrowthRecord(t,e),await te(),x("成长记录已删除")}catch(n){if(m(r,n))return;x(h(n)?"当前账号无权删除该成长记录。":n.message||"成长记录删除失败")}finally{F(!1)}}}function Ie(){var e=o('[data-growth-form] [name="mediaOssIds"]'),r=o("[data-growth-media-status]"),t=o("[data-growth-media-input]");e&&(e.value=""),t&&(t.value=""),r&&(r.textContent="未选择文件")}function we(){P&&(P.addEventListener("click",function(e){var r=e.target.closest("[data-growth-detail-id]"),t=e.target.closest("[data-growth-delete-id]"),i=e.target.closest("[data-growth-clear-media]"),n,d;if(r){e.preventDefault(),n=r.getAttribute("data-growth-detail-id"),d=S(),a.history&&d&&a.history.replaceState(null,"",W(d,n)),M(n).then(function(l){l&&a.ProfileUI&&a.ProfileUI.revealDetail&&a.ProfileUI.revealDetail(o("[data-growth-detail-heading]"))});return}if(t){e.preventDefault(),ve(t.getAttribute("data-growth-delete-id"));return}i&&(e.preventDefault(),Ie())}),P.addEventListener("submit",function(e){var r=e.target.closest("[data-growth-form]");r&&(e.preventDefault(),me(r))}))}function ye(){P&&(we(),o("[data-growth-page]")&&te(),o("[data-growth-edit-page]")&&he())}return{getCurrentGenealogyId:H,getCurrentRecordId:L,buildGrowthRecordBody:V,validateGrowthRecordBody:j,normalizeGrowthRecord:O,matchesSavedRecord:z,canEditRecords:K,renderLineageOptions:$,renderGrowthDetail:X,shouldRedirectToLogin:Y,isForbidden:h,init:ye}});