(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined, "[project]/Documents/go-new/chinese-family-tree/lib/mock-data.ts [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "mockFamilyData", ()=>mockFamilyData ]); // Helper to create a member quickly const createMember = (id, name, gender, generation, props = {})=>{ const surname = "李"; return { id, surname, givenName: name, fullName: surname + name, gender, generation, spouseIds: [], childrenIds: [], createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), ...props }; }; const members = { // ========== 第一代 (曾祖父母辈,1920年代出生) ========== "1": createMember("1", "国强", "male", 1, { ancestralHome: "广东省广州市", bio: "李氏家族第一代,抗战时期参加革命工作,新中国成立后在政府部门工作,为人正直,深受敬重。", tags: [ "革命干部", "始祖" ], birthDate: "1925-03-15", deathDate: "2008-08-20", spouseIds: [ "2" ], childrenIds: [ "3", "4", "5" ] }), "2": createMember("2", "秀芳", "female", 1, { fullName: "王秀芳", surname: "王", givenName: "秀芳", ancestralHome: "广东省广州市", bio: "知识分子家庭出身,建国后在学校任教,相夫教子,育有三子。", birthDate: "1928-07-08", deathDate: "2015-12-10", spouseIds: [ "1" ], childrenIds: [ "3", "4", "5" ] }), // ========== 第二代 (祖父母辈,1950年代出生) ========== "3": createMember("3", "建华", "male", 2, { fatherId: "1", motherId: "2", ancestralHome: "广东省深圳市", birthPlace: "广东省深圳市", bio: "国强长子,改革开放后下海经商,迁往深圳创办家族企业,事业有成。", tags: [ "企业家" ], birthDate: "1952-05-20", deathDate: "2020-03-15", spouseIds: [ "6" ], childrenIds: [ "9", "10" ] }), "4": createMember("4", "建国", "male", 2, { fatherId: "1", motherId: "2", generationName: "建", rank: 2, bio: "次子,大学教授,追随教育事业迁往北京,从事教育工作四十余年,桃李满天下。", tags: [ "教授", "次子" ], birthDate: "1955-11-03", ancestralHome: "北京市", birthPlace: "北京市", spouseIds: [ "7" ], childrenIds: [ "11", "12", "13" ] }), "5": createMember("5", "建军", "male", 2, { fatherId: "1", motherId: "2", generationName: "建", rank: 3, bio: "三子,医生,支援西部建设迁往上海,从医三十余年,救死扶伤。", tags: [ "医生", "三子" ], birthDate: "1958-11-03", ancestralHome: "上海市", birthPlace: "上海市", spouseIds: [ "8" ], childrenIds: [ "14" ] }), // 第二代配偶 "6": createMember("6", "丽华", "female", 2, { fullName: "陈丽华", surname: "陈", givenName: "丽华", ancestralHome: "广东省深圳市", bio: "建华之妻,企业管理者,协助丈夫打理家族企业。", birthDate: "1955-05-20", deathDate: "2021-11-05", spouseIds: [ "3" ], childrenIds: [ "9", "10" ] }), "7": createMember("7", "美玲", "female", 2, { fullName: "张美玲", surname: "张", givenName: "美玲", ancestralHome: "广东省广州市", bio: "建国之妻,中学教师,与丈夫志同道合,共同从事教育事业。", birthDate: "1957-01-15", spouseIds: [ "4" ], childrenIds: [ "11", "12", "13" ] }), "8": createMember("8", "雅琴", "female", 2, { fullName: "林雅琴", surname: "林", givenName: "雅琴", ancestralHome: "福建省厦门市", bio: "建军之妻,护士长,温柔贤惠,善于持家。", birthDate: "1960-08-10", spouseIds: [ "5" ], childrenIds: [ "14" ] }), // ========== 第三代 (父母辈,1980年代出生) ========== "9": createMember("9", "志远", "male", 3, { fatherId: "3", motherId: "6", generationName: "志", rank: 1, ancestralHome: "广东省深圳市", birthPlace: "广东省深圳市", bio: "建华长子,留学归国,接管家族企业,推动企业转型升级。", tags: [ "企业家", "海归" ], birthDate: "1980-03-08", phone: "13800138001", email: "zhiyuan.li@company.com", address: "广东省广州市天河区珠江新城XX路XX号", spouseIds: [ "15" ], childrenIds: [ "17", "18" ] }), "10": createMember("10", "志强", "male", 3, { fatherId: "3", motherId: "6", generationName: "志", rank: 2, ancestralHome: "北京市", birthPlace: "北京市", bio: "建华次子,互联网创业者,北上创业,创办科技公司。", tags: [ "创业者", "科技" ], birthDate: "1983-07-22", phone: "13900139002", email: "zhiqiang.li@techco.com", address: "北京市朝阳区望京SOHO", spouseIds: [ "16" ], childrenIds: [ "19" ] }), "11": createMember("11", "志明", "male", 3, { fatherId: "4", motherId: "7", generationName: "志", rank: 1, ancestralHome: "广东省广州市", birthPlace: "广东省广州市", bio: "建国长子,大学副教授,从北京返回广州从事教育研究工作。", tags: [ "副教授", "学者" ], birthDate: "1982-01-18", phone: "13700137003", telephone: "020-8888-8888", email: "zhiming.li@university.edu.cn", address: "广东省广州市海珠区大学城", spouseIds: [ "20" ], childrenIds: [ "21", "22" ] }), "12": createMember("12", "志文", "male", 3, { fatherId: "4", motherId: "7", generationName: "志", rank: 2, bio: "建国次子,作家,追求文学梦想迁往成都,出版多部文学作品。", tags: [ "作家", "文学" ], birthDate: "1985-09-12", ancestralHome: "四川省成都市", birthPlace: "四川省成都市", phone: "13600136004", email: "zhiwen.li@writer.com" }), "13": createMember("13", "志勇", "male", 3, { fatherId: "4", motherId: "7", generationName: "志", rank: 3, ancestralHome: "上海市", birthPlace: "上海市", bio: "建国三子,律师,从北京迁往上海,执业于知名律师事务所。", tags: [ "律师" ], birthDate: "1988-11-05", phone: "13500135005", email: "zhiyong.li@lawfirm.com", address: "上海市浦东新区陆家嘴金融中心" }), "14": createMember("14", "志诚", "male", 3, { fatherId: "5", motherId: "8", generationName: "志", rank: 1, ancestralHome: "广东省深圳市", birthPlace: "广东省深圳市", bio: "建军独子,医生,从上海迁往深圳,继承父业,在医院工作。", tags: [ "医生" ], birthDate: "1986-04-28", phone: "13400134006", telephone: "0755-6666-6666", email: "zhicheng.li@hospital.com", address: "广东省深圳市福田区人民医院", spouseIds: [ "23" ], childrenIds: [ "24" ] }), // 第三代配偶 "15": createMember("15", "晓雯", "female", 3, { fullName: "赵晓雯", surname: "赵", givenName: "晓雯", ancestralHome: "上海市", bio: "志远之妻,金融行业从业者,MBA学位。", birthDate: "1982-06-15", spouseIds: [ "9" ], childrenIds: [ "17", "18" ] }), "16": createMember("16", "诗涵", "female", 3, { fullName: "刘诗涵", surname: "刘", givenName: "诗涵", ancestralHome: "北京市", bio: "志强之妻,设计师,从事品牌设计工作。", birthDate: "1985-10-08", spouseIds: [ "10" ], childrenIds: [ "19" ] }), "20": createMember("20", "雨欣", "female", 3, { fullName: "周雨欣", surname: "周", givenName: "雨欣", ancestralHome: "浙江省杭州市", bio: "志明之妻,中学教师,温柔贤淑。", birthDate: "1984-02-25", spouseIds: [ "11" ], childrenIds: [ "21", "22" ] }), "23": createMember("23", "婉婷", "female", 3, { fullName: "郑婉婷", surname: "郑", givenName: "婉婷", ancestralHome: "广东省广州市", bio: "志诚之妻,护士,在医院工作。", birthDate: "1988-12-03", spouseIds: [ "14" ], childrenIds: [ "24" ] }), // ========== 第四代 (子女辈,2010年代出生) ========== "17": createMember("17", "浩然", "male", 4, { fatherId: "9", motherId: "15", generationName: "浩", rank: 1, bio: "志远长子,在读高中生,成绩优异。", tags: [ "学生" ], birthDate: "2010-05-10" }), "18": createMember("18", "思琪", "female", 4, { fatherId: "9", motherId: "15", generationName: "思", rank: 2, bio: "志远次女,在读初中,喜欢绘画。", tags: [ "学生" ], birthDate: "2013-08-22" }), "19": createMember("19", "宇轩", "male", 4, { fatherId: "10", motherId: "16", generationName: "宇", rank: 1, bio: "志强独子,在读小学,对编程感兴趣。", tags: [ "学生" ], birthDate: "2015-11-18" }), "21": createMember("21", "梓涵", "female", 4, { fatherId: "11", motherId: "20", generationName: "梓", rank: 1, bio: "志明长女,在读大学,主修经济学。", tags: [ "大学生" ], birthDate: "2007-03-05" }), "22": createMember("22", "子轩", "male", 4, { fatherId: "11", motherId: "20", generationName: "子", rank: 2, bio: "志明次子,在读高中,擅长数学。", tags: [ "学生" ], birthDate: "2010-07-14" }), "24": createMember("24", "欣怡", "female", 4, { fatherId: "14", motherId: "23", generationName: "欣", rank: 1, bio: "志诚独女,在读初中,活泼可爱。", tags: [ "学生" ], birthDate: "2012-09-20" }) }; const mockFamilyData = { members, rootId: "1" }; if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/lib/db.ts [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "FamilyTreeDB", ()=>FamilyTreeDB, "db", ()=>db ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$40$4$2e$2$2e$1$2f$node_modules$2f$dexie$2f$import$2d$wrapper$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/dexie@4.2.1/node_modules/dexie/import-wrapper.mjs [app-client] (ecmascript)"); ; class FamilyTreeDB extends __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$40$4$2e$2$2e$1$2f$node_modules$2f$dexie$2f$import$2d$wrapper$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] { members; settings; images; activityLogs; constructor(){ super("FamilyTreeDB"); this.version(1).stores({ members: "id, fullName, fatherId, motherId, [fatherId+motherId]", settings: "key", images: "id" }); this.version(2).stores({ members: "id, fullName, fatherId, motherId, [fatherId+motherId]", settings: "key", images: "id", activityLogs: "id, timestamp, action, entityType, entityId" }); } } const db = new FamilyTreeDB(); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/lib/notifications.ts [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "checkTodayAnniversaries", ()=>checkTodayAnniversaries, "checkUpcomingAnniversaries", ()=>checkUpcomingAnniversaries, "notifyTodayAnniversaries", ()=>notifyTodayAnniversaries, "requestNotificationPermission", ()=>requestNotificationPermission, "sendNotification", ()=>sendNotification, "setupDailyNotificationCheck", ()=>setupDailyNotificationCheck ]); async function requestNotificationPermission() { if (("TURBOPACK compile-time value", "object") === "undefined" || !("Notification" in window)) { console.warn("浏览器不支持通知"); return false; } if (Notification.permission === "granted") { return true; } if (Notification.permission !== "denied") { const permission = await Notification.requestPermission(); return permission === "granted"; } return false; } function sendNotification(title, options) { if (("TURBOPACK compile-time value", "object") === "undefined" || !("Notification" in window)) { return; } if (Notification.permission === "granted") { new Notification(title, { icon: "/icon.svg", badge: "/icon.svg", ...options }); } } function checkTodayAnniversaries(members) { const today = new Date(); const currentMonth = today.getMonth() + 1; const currentDay = today.getDate(); const birthdays = []; const deathdays = []; members.forEach((member)=>{ // 检查生日 if (member.birthDate) { const birthDate = new Date(member.birthDate); if (birthDate.getMonth() + 1 === currentMonth && birthDate.getDate() === currentDay) { birthdays.push(member); } } // 检查忌日 if (member.deathDate) { const deathDate = new Date(member.deathDate); if (deathDate.getMonth() + 1 === currentMonth && deathDate.getDate() === currentDay) { deathdays.push(member); } } }); return { birthdays, deathdays }; } function checkUpcomingAnniversaries(members, days = 7) { const today = new Date(); const birthdays = []; const deathdays = []; members.forEach((member)=>{ // 检查生日 if (member.birthDate) { const birthDate = new Date(member.birthDate); const thisYearBirthday = new Date(today.getFullYear(), birthDate.getMonth(), birthDate.getDate()); if (thisYearBirthday < today) { thisYearBirthday.setFullYear(today.getFullYear() + 1); } const daysUntil = Math.ceil((thisYearBirthday.getTime() - today.getTime()) / (1000 * 60 * 60 * 24)); if (daysUntil > 0 && daysUntil <= days) { birthdays.push({ member, daysUntil }); } } // 检查忌日 if (member.deathDate) { const deathDate = new Date(member.deathDate); const thisYearDeathday = new Date(today.getFullYear(), deathDate.getMonth(), deathDate.getDate()); if (thisYearDeathday < today) { thisYearDeathday.setFullYear(today.getFullYear() + 1); } const daysUntil = Math.ceil((thisYearDeathday.getTime() - today.getTime()) / (1000 * 60 * 60 * 24)); if (daysUntil > 0 && daysUntil <= days) { deathdays.push({ member, daysUntil }); } } }); return { birthdays, deathdays }; } function notifyTodayAnniversaries(members) { const { birthdays, deathdays } = checkTodayAnniversaries(members); if (birthdays.length > 0) { const names = birthdays.map((m)=>m.fullName).join("、"); sendNotification("🎂 今日生日提醒", { body: `今天是 ${names} 的生日!`, tag: "birthday-today" }); } if (deathdays.length > 0) { const names = deathdays.map((m)=>m.fullName).join("、"); sendNotification("🕯️ 今日忌日提醒", { body: `今天是 ${names} 的忌日,缅怀先人。`, tag: "deathday-today" }); } } function setupDailyNotificationCheck(members) { if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; // 检查是否已经在今天检查过 const lastCheckDate = localStorage.getItem("lastNotificationCheck"); const today = new Date().toDateString(); if (lastCheckDate !== today) { notifyTodayAnniversaries(members); localStorage.setItem("lastNotificationCheck", today); } // 设置每小时检查一次(防止用户长时间开着页面) setInterval(()=>{ const currentDate = new Date().toDateString(); const lastCheck = localStorage.getItem("lastNotificationCheck"); if (lastCheck !== currentDate) { notifyTodayAnniversaries(members); localStorage.setItem("lastNotificationCheck", currentDate); } }, 60 * 60 * 1000); // 每小时检查一次 } if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "FamilyProvider", ()=>FamilyProvider, "useFamily", ()=>useFamily ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/mock-data.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/db.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/dexie-react-hooks@4.2.0_@types+react@19.2.6_dexie@4.2.1_react@19.2.0/node_modules/dexie-react-hooks/dist/dexie-react-hooks.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$notifications$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/notifications.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(), _s1 = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; const FamilyContext = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"])(undefined); function FamilyProvider({ children }) { _s(); const [searchResults, setSearchResults] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]); const [isInitialized, setIsInitialized] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [highlightedMemberId, setHighlightedMemberId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); // Live query to get all members const members = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"])({ "FamilyProvider.useLiveQuery[members]": ()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.toArray() }["FamilyProvider.useLiveQuery[members]"]); // Live query to get rootId const rootIdSetting = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"])({ "FamilyProvider.useLiveQuery[rootIdSetting]": ()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings.get("rootId") }["FamilyProvider.useLiveQuery[rootIdSetting]"]); // Initialize DB with mock data if empty (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "FamilyProvider.useEffect": ()=>{ const initDb = { "FamilyProvider.useEffect.initDb": async ()=>{ const count = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.count(); if (count === 0) { await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings, { "FamilyProvider.useEffect.initDb": async ()=>{ await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.bulkAdd(Object.values(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mockFamilyData"].members)); await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings.put({ key: "rootId", value: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mockFamilyData"].rootId }); } }["FamilyProvider.useEffect.initDb"]); } setIsInitialized(true); } }["FamilyProvider.useEffect.initDb"]; initDb(); } }["FamilyProvider.useEffect"], []); // 设置通知检查 (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "FamilyProvider.useEffect": ()=>{ if (isInitialized && members && members.length > 0) { // 检查通知权限并设置每日检查 if ("Notification" in window && Notification.permission === "granted") { (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$notifications$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["setupDailyNotificationCheck"])(members); } } } }["FamilyProvider.useEffect"], [ isInitialized, members ]); // Construct treeData from DB results const treeData = { rootId: rootIdSetting?.value || "", members: (members || []).reduce((acc, member)=>{ acc[member.id] = member; return acc; }, {}) }; const getMember = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[getMember]": (id)=>{ return treeData.members[id]; } }["FamilyProvider.useCallback[getMember]"], [ treeData ]); const addMember = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[addMember]": async (member)=>{ await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, { "FamilyProvider.useCallback[addMember]": async ()=>{ // Add the member await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.add(member); // Update relationships (Father) if (member.fatherId) { const father = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.get(member.fatherId); if (father && !father.childrenIds.includes(member.id)) { await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(member.fatherId, { childrenIds: [ ...father.childrenIds, member.id ] }); } } // Update relationships (Mother) if (member.motherId) { const mother = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.get(member.motherId); if (mother && !mother.childrenIds.includes(member.id)) { await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(member.motherId, { childrenIds: [ ...mother.childrenIds, member.id ] }); } } // Update relationships (Spouses) if (member.spouseIds && member.spouseIds.length > 0) { for (const spouseId of member.spouseIds){ const spouse = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.get(spouseId); if (spouse && !spouse.spouseIds.includes(member.id)) { await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(spouseId, { spouseIds: [ ...spouse.spouseIds, member.id ] }); } } } } }["FamilyProvider.useCallback[addMember]"]); } }["FamilyProvider.useCallback[addMember]"], []); const updateMember = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[updateMember]": async (id, updates)=>{ await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(id, { ...updates, updatedAt: new Date().toISOString() }); } }["FamilyProvider.useCallback[updateMember]"], []); const deleteMember = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[deleteMember]": async (id)=>{ await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings, { "FamilyProvider.useCallback[deleteMember]": async ()=>{ // Remove from DB await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.delete(id); // Note: In a real app, we should also remove references to this ID from other members' // childrenIds, spouseIds, etc. For now, we'll keep it simple as per the original implementation. // If we deleted the root, we might want to handle that, but for now let's leave it. } }["FamilyProvider.useCallback[deleteMember]"]); } }["FamilyProvider.useCallback[deleteMember]"], []); const loadData = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[loadData]": async (data)=>{ await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings, { "FamilyProvider.useCallback[loadData]": async ()=>{ await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.clear(); await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.bulkAdd(Object.values(data.members)); await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings.put({ key: "rootId", value: data.rootId }); } }["FamilyProvider.useCallback[loadData]"]); } }["FamilyProvider.useCallback[loadData]"], []); const resetData = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[resetData]": async ()=>{ await loadData(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mockFamilyData"]); } }["FamilyProvider.useCallback[resetData]"], [ loadData ]); const searchMembers = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "FamilyProvider.useCallback[searchMembers]": (query)=>{ if (!query.trim()) { setSearchResults([]); return; } const lowerQuery = query.toLowerCase(); // Perform search on the in-memory treeData for simplicity and speed // (Dexie also supports querying, but we already have the data loaded) const results = Object.values(treeData.members).filter({ "FamilyProvider.useCallback[searchMembers].results": (member)=>member.fullName.includes(lowerQuery) || member.givenName.includes(lowerQuery) || member.courtesyName?.includes(lowerQuery) || member.artName?.includes(lowerQuery) }["FamilyProvider.useCallback[searchMembers].results"]); setSearchResults(results); } }["FamilyProvider.useCallback[searchMembers]"], [ treeData ]); // Listen for import events (legacy support for the file input in settings if needed, // but we should prefer using the context method) (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "FamilyProvider.useEffect": ()=>{ const handleImport = { "FamilyProvider.useEffect.handleImport": (e)=>{ loadData(e.detail); } }["FamilyProvider.useEffect.handleImport"]; window.addEventListener("family-data-import", handleImport); return ({ "FamilyProvider.useEffect": ()=>window.removeEventListener("family-data-import", handleImport) })["FamilyProvider.useEffect"]; } }["FamilyProvider.useEffect"], [ loadData ]); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(FamilyContext.Provider, { value: { treeData, getMember, addMember, updateMember, deleteMember, searchResults, searchMembers, loadData, resetData, isLoading: !isInitialized || !members, highlightedMemberId, setHighlightedMemberId }, children: children }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx", lineNumber: 186, columnNumber: 5 }, this); } _s(FamilyProvider, "Z8JbHypIWB7xWhr4KfFw1q/vc28=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"], __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"] ]; }); _c = FamilyProvider; function useFamily() { _s1(); const context = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"])(FamilyContext); if (context === undefined) { throw new Error("useFamily must be used within a FamilyProvider"); } return context; } _s1(useFamily, "b9L3QQ+jgeyIrH0NfHrJ8nn7VMU="); var _c; __turbopack_context__.k.register(_c, "FamilyProvider"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/lib/register-sw.ts [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "registerServiceWorker", ()=>registerServiceWorker, "unregisterServiceWorker", ()=>unregisterServiceWorker ]); function registerServiceWorker() { if (("TURBOPACK compile-time value", "object") === "undefined" || !("serviceWorker" in navigator)) { console.log("Service Worker 不被支持"); return; } window.addEventListener("load", ()=>{ navigator.serviceWorker.register("/sw.js").then((registration)=>{ console.log("Service Worker 注册成功:", registration.scope); // 检查更新 registration.addEventListener("updatefound", ()=>{ const newWorker = registration.installing; if (newWorker) { newWorker.addEventListener("statechange", ()=>{ if (newWorker.state === "installed" && navigator.serviceWorker.controller) { // 新的 Service Worker 已安装,提示用户刷新 if (confirm("发现新版本,是否立即更新?")) { window.location.reload(); } } }); } }); }).catch((error)=>{ console.log("Service Worker 注册失败:", error); }); }); } function unregisterServiceWorker() { if (("TURBOPACK compile-time value", "object") === "undefined" || !("serviceWorker" in navigator)) { return; } navigator.serviceWorker.ready.then((registration)=>{ registration.unregister(); }).catch((error)=>{ console.error("Service Worker 注销失败:", error); }); } if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/lib/utils.ts [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "cn", ()=>cn ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$clsx$40$2$2e$1$2e$1$2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$tailwind$2d$merge$40$2$2e$6$2e$0$2f$node_modules$2f$tailwind$2d$merge$2f$dist$2f$bundle$2d$mjs$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/tailwind-merge@2.6.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs [app-client] (ecmascript)"); ; ; function cn(...inputs) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$tailwind$2d$merge$40$2$2e$6$2e$0$2f$node_modules$2f$tailwind$2d$merge$2f$dist$2f$bundle$2d$mjs$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["twMerge"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$clsx$40$2$2e$1$2e$1$2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["clsx"])(inputs)); } if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/components/ui/button.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Button", ()=>Button, "buttonVariants", ()=>buttonVariants ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f40$radix$2d$ui$2b$react$2d$slot$40$1$2e$1$2e$1_$40$types$2b$react$40$19$2e$2$2e$6_react$40$19$2e$2$2e$0$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/@radix-ui+react-slot@1.1.1_@types+react@19.2.6_react@19.2.0/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$class$2d$variance$2d$authority$40$0$2e$7$2e$1$2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/utils.ts [app-client] (ecmascript)"); ; ; ; ; const buttonVariants = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$class$2d$variance$2d$authority$40$0$2e$7$2e$1$2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cva"])("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { default: 'bg-primary text-primary-foreground hover:bg-primary/90', destructive: 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', outline: 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', link: 'text-primary underline-offset-4 hover:underline' }, size: { default: 'h-9 px-4 py-2 has-[>svg]:px-3', sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', icon: 'size-9', 'icon-sm': 'size-8', 'icon-lg': 'size-10' } }, defaultVariants: { variant: 'default', size: 'default' } }); function Button({ className, variant, size, asChild = false, ...props }) { const Comp = asChild ? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f40$radix$2d$ui$2b$react$2d$slot$40$1$2e$1$2e$1_$40$types$2b$react$40$19$2e$2$2e$6_react$40$19$2e$2$2e$0$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Slot"] : 'button'; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Comp, { "data-slot": "button", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])(buttonVariants({ variant, size, className })), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/button.tsx", lineNumber: 52, columnNumber: 5 }, this); } _c = Button; ; var _c; __turbopack_context__.k.register(_c, "Button"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Card", ()=>Card, "CardAction", ()=>CardAction, "CardContent", ()=>CardContent, "CardDescription", ()=>CardDescription, "CardFooter", ()=>CardFooter, "CardHeader", ()=>CardHeader, "CardTitle", ()=>CardTitle ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/utils.ts [app-client] (ecmascript)"); ; ; function Card({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 7, columnNumber: 5 }, this); } _c = Card; function CardHeader({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-header", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 20, columnNumber: 5 }, this); } _c1 = CardHeader; function CardTitle({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-title", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('leading-none font-semibold', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 33, columnNumber: 5 }, this); } _c2 = CardTitle; function CardDescription({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-description", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('text-muted-foreground text-sm', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 43, columnNumber: 5 }, this); } _c3 = CardDescription; function CardAction({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-action", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('col-start-2 row-span-2 row-start-1 self-start justify-self-end', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 53, columnNumber: 5 }, this); } _c4 = CardAction; function CardContent({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-content", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('px-6', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 66, columnNumber: 5 }, this); } _c5 = CardContent; function CardFooter({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-footer", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('flex items-center px-6 [.border-t]:pt-6', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx", lineNumber: 76, columnNumber: 5 }, this); } _c6 = CardFooter; ; var _c, _c1, _c2, _c3, _c4, _c5, _c6; __turbopack_context__.k.register(_c, "Card"); __turbopack_context__.k.register(_c1, "CardHeader"); __turbopack_context__.k.register(_c2, "CardTitle"); __turbopack_context__.k.register(_c3, "CardDescription"); __turbopack_context__.k.register(_c4, "CardAction"); __turbopack_context__.k.register(_c5, "CardContent"); __turbopack_context__.k.register(_c6, "CardFooter"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/components/ui/alert.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Alert", ()=>Alert, "AlertDescription", ()=>AlertDescription, "AlertTitle", ()=>AlertTitle ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$class$2d$variance$2d$authority$40$0$2e$7$2e$1$2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/utils.ts [app-client] (ecmascript)"); ; ; ; const alertVariants = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$class$2d$variance$2d$authority$40$0$2e$7$2e$1$2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cva"])('relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current', { variants: { variant: { default: 'bg-card text-card-foreground', destructive: 'text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90' } }, defaultVariants: { variant: 'default' } }); function Alert({ className, variant, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "alert", role: "alert", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])(alertVariants({ variant }), className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/alert.tsx", lineNumber: 28, columnNumber: 5 }, this); } _c = Alert; function AlertTitle({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "alert-title", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/alert.tsx", lineNumber: 39, columnNumber: 5 }, this); } _c1 = AlertTitle; function AlertDescription({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "alert-description", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])('text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className), ...props }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/alert.tsx", lineNumber: 55, columnNumber: 5 }, this); } _c2 = AlertDescription; ; var _c, _c1, _c2; __turbopack_context__.k.register(_c, "Alert"); __turbopack_context__.k.register(_c1, "AlertTitle"); __turbopack_context__.k.register(_c2, "AlertDescription"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "PWAInstaller", ()=>PWAInstaller ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$download$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Download$3e$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/lucide-react@0.454.0_react@19.2.0/node_modules/lucide-react/dist/esm/icons/download.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/lucide-react@0.454.0_react@19.2.0/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$smartphone$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Smartphone$3e$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/lucide-react@0.454.0_react@19.2.0/node_modules/lucide-react/dist/esm/icons/smartphone.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$alert$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/alert.tsx [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; function PWAInstaller() { _s(); const [deferredPrompt, setDeferredPrompt] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [isInstallable, setIsInstallable] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [isInstalled, setIsInstalled] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [showPrompt, setShowPrompt] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "PWAInstaller.useEffect": ()=>{ // 检查是否已安装 if ("TURBOPACK compile-time truthy", 1) { const isStandalone = window.matchMedia('(display-mode: standalone)').matches; const isIOSStandalone = window.navigator.standalone === true; if (isStandalone || isIOSStandalone) { setIsInstalled(true); return; } } // 监听 beforeinstallprompt 事件 const handleBeforeInstallPrompt = { "PWAInstaller.useEffect.handleBeforeInstallPrompt": (e)=>{ e.preventDefault(); setDeferredPrompt(e); setIsInstallable(true); // 延迟显示提示(给用户一些时间浏览应用) setTimeout({ "PWAInstaller.useEffect.handleBeforeInstallPrompt": ()=>{ const hasSeenPrompt = localStorage.getItem('pwa-install-prompt-seen'); if (!hasSeenPrompt) { setShowPrompt(true); } } }["PWAInstaller.useEffect.handleBeforeInstallPrompt"], 30000); // 30秒后显示 } }["PWAInstaller.useEffect.handleBeforeInstallPrompt"]; // 监听安装完成事件 const handleAppInstalled = { "PWAInstaller.useEffect.handleAppInstalled": ()=>{ setIsInstalled(true); setShowPrompt(false); setIsInstallable(false); } }["PWAInstaller.useEffect.handleAppInstalled"]; if ("TURBOPACK compile-time truthy", 1) { window.addEventListener('beforeinstallprompt', handleBeforeInstallPrompt); window.addEventListener('appinstalled', handleAppInstalled); return ({ "PWAInstaller.useEffect": ()=>{ window.removeEventListener('beforeinstallprompt', handleBeforeInstallPrompt); window.removeEventListener('appinstalled', handleAppInstalled); } })["PWAInstaller.useEffect"]; } } }["PWAInstaller.useEffect"], []); const handleInstallClick = async ()=>{ if (!deferredPrompt) return; // 显示安装提示 deferredPrompt.prompt(); // 等待用户响应 const { outcome } = await deferredPrompt.userChoice; if (outcome === 'accepted') { console.log('用户接受了安装'); } else { console.log('用户拒绝了安装'); } setDeferredPrompt(null); setShowPrompt(false); localStorage.setItem('pwa-install-prompt-seen', 'true'); }; const handleDismiss = ()=>{ setShowPrompt(false); localStorage.setItem('pwa-install-prompt-seen', 'true'); }; if (isInstalled) { return null; } if (!isInstallable) { return null; } return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ showPrompt && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed bottom-4 right-4 z-50 max-w-sm animate-in slide-in-from-bottom-5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Card"], { className: "shadow-lg border-2 border-primary", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CardHeader"], { className: "pb-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-start justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$smartphone$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Smartphone$3e$__["Smartphone"], { className: "h-5 w-5 text-primary" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 102, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CardTitle"], { className: "text-base", children: "安装应用" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 103, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 101, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "ghost", size: "icon", className: "h-6 w-6", onClick: handleDismiss, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__["X"], { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 111, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 105, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 100, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CardDescription"], { className: "text-xs", children: "将家谱应用添加到主屏幕,随时随地访问" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 114, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 99, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CardContent"], { className: "pt-0", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleInstallClick, className: "w-full", size: "sm", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$download$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Download$3e$__["Download"], { className: "mr-2 h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 124, columnNumber: 17 }, this), "立即安装" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 119, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 118, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 98, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 97, columnNumber: 9 }, this), !showPrompt && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$alert$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Alert"], { className: "cursor-pointer hover:bg-muted/50 transition-colors", onClick: handleInstallClick, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$download$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Download$3e$__["Download"], { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 135, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$alert$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AlertDescription"], { className: "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { children: "将应用安装到设备" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 137, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: "outline", children: "安装" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 138, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 136, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx", lineNumber: 134, columnNumber: 9 }, this) ] }, void 0, true); } _s(PWAInstaller, "jT7GWzxjRQb413ToaUpCsgzCVbI="); _c = PWAInstaller; var _c; __turbopack_context__.k.register(_c, "PWAInstaller"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-provider.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "PWAProvider", ()=>PWAProvider ]); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$register$2d$sw$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/register-sw.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$pwa$2f$pwa$2d$installer$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-installer.tsx [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; function PWAProvider({ children }) { _s(); (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "PWAProvider.useEffect": ()=>{ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$register$2d$sw$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["registerServiceWorker"])(); } }["PWAProvider.useEffect"], []); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ children, /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$pwa$2f$pwa$2d$installer$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PWAInstaller"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/components/pwa/pwa-provider.tsx", lineNumber: 15, columnNumber: 7 }, this) ] }, void 0, true); } _s(PWAProvider, "OD7bBpZva5O2jO+Puf00hKivP7c="); _c = PWAProvider; var _c; __turbopack_context__.k.register(_c, "PWAProvider"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), ]); //# sourceMappingURL=Documents_go-new_chinese-family-tree_d7eac8a1._.js.map