Files
chinese-family-tree-2/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_da5a5998._.js
T
freedakgmail c033e46782 0.0.0.4
2025-11-22 23:49:24 +08:00

707 lines
37 KiB
JavaScript

(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;
constructor(){
super("FamilyTreeDB");
this.version(1).stores({
members: "id, fullName, fatherId, motherId, [fatherId+motherId]",
settings: "key",
images: "id"
});
}
}
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/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 _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"], []);
// 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: 175,
columnNumber: 5
}, this);
}
_s(FamilyProvider, "MaXTifX1wt5nxXGJqZ0hkHvJfuc=", 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$);
}
}),
]);
//# sourceMappingURL=Documents_go-new_chinese-family-tree_da5a5998._.js.map