(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12039,e=>{"use strict";var t=e.i(36792),r=e.i(56422),a=e.i(69744);let n=(0,r.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 s({className:e,variant:r,...s}){return(0,t.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,a.cn)(n({variant:r}),e),...s})}function i({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"alert-title",className:(0,a.cn)("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",e),...r})}function o({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"alert-description",className:(0,a.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...r})}e.s(["Alert",()=>s,"AlertDescription",()=>o,"AlertTitle",()=>i])},6315,e=>{"use strict";let t=(0,e.i(27706).default)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["default",()=>t])},41610,e=>{"use strict";var t=e.i(6315);e.s(["X",()=>t.default])},42864,e=>{"use strict";let t=(0,e.i(27706).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",()=>t],42864)},984,e=>{"use strict";var t=e.i(34526),r=e.i(34346),a=e.i(69074);function n(){return"undefined"!=typeof window}function s(){return"production"}function i(){return"development"===((n()?window.vam:s())||"production")}function o(e){return RegExp(`/${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=[/?#]|$)`)}function l(e){return(0,r.useEffect)(()=>{var t;e.beforeSend&&(null==(t=window.va)||t.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]),(0,r.useEffect)(()=>{!function(e={debug:!0}){var t;if(!n())return;!function(e="auto"){if("auto"===e){window.vam=s();return}window.vam=e}(e.mode),window.va||(window.va=function(...e){(window.vaq=window.vaq||[]).push(e)}),e.beforeSend&&(null==(t=window.va)||t.call(window,"beforeSend",e.beforeSend));let r=e.scriptSrc?e.scriptSrc:i()?"https://va.vercel-scripts.com/v1/script.debug.js":e.basePath?`${e.basePath}/insights/script.js`:"/_vercel/insights/script.js";if(document.head.querySelector(`script[src*="${r}"]`))return;let a=document.createElement("script");a.src=r,a.defer=!0,a.dataset.sdkn="@vercel/analytics"+(e.framework?`/${e.framework}`:""),a.dataset.sdkv="1.5.0",e.disableAutoTrack&&(a.dataset.disableAutoTrack="1"),e.endpoint?a.dataset.endpoint=e.endpoint:e.basePath&&(a.dataset.endpoint=`${e.basePath}/insights`),e.dsn&&(a.dataset.dsn=e.dsn),a.onerror=()=>{let e=i()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${r}. ${e}`)},i()&&!1===e.debug&&(a.dataset.debug="false"),document.head.appendChild(a)}({framework:e.framework||"react",basePath:e.basePath??function(){if(void 0!==t.default&&void 0!==t.default.env)return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}(),...void 0!==e.route&&{disableAutoTrack:!0},...e})},[]),(0,r.useEffect)(()=>{e.route&&e.path&&function({route:e,path:t}){var r;null==(r=window.va)||r.call(window,"pageview",{route:e,path:t})}({route:e.route,path:e.path})},[e.route,e.path]),null}function d(e){let n,s,i,{route:d,path:c}=(n=(0,a.useParams)(),s=(0,a.useSearchParams)(),i=(0,a.usePathname)(),n?{route:function(e,t){if(!e||!t)return e;let r=e;try{let e=Object.entries(t);for(let[t,a]of e)if(!Array.isArray(a)){let e=o(a);e.test(r)&&(r=r.replace(e,`/[${t}]`))}for(let[t,a]of e)if(Array.isArray(a)){let e=o(a.join("/"));e.test(r)&&(r=r.replace(e,`/[...${t}]`))}return r}catch(t){return e}}(i,Object.keys(n).length?n:Object.fromEntries(s.entries())),path:i}:{route:null,path:i});return r.default.createElement(l,{path:c,route:d,...e,basePath:function(){if(void 0!==t.default&&void 0!==t.default.env)return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH}(),framework:"next"})}function c(e){return r.default.createElement(r.Suspense,{fallback:null},r.default.createElement(d,{...e}))}e.s(["Analytics",()=>c])},85367,e=>{"use strict";var t=e.i(36792),r=e.i(34346),a=e.i(9991),n=e.i(10743),s=e.i(42864),i=e.i(41610);let o=(0,e.i(27706).default)("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);var l=e.i(12039);function d(){let[e,d]=(0,r.useState)(null),[c,u]=(0,r.useState)(!1),[f,m]=(0,r.useState)(!1),[v,p]=(0,r.useState)(!1);(0,r.useEffect)(()=>{{let e=window.matchMedia("(display-mode: standalone)").matches,t=!0===window.navigator.standalone;if(e||t)return void m(!0)}let e=e=>{e.preventDefault(),d(e),u(!0),setTimeout(()=>{localStorage.getItem("pwa-install-prompt-seen")||p(!0)},3e4)},t=()=>{m(!0),p(!1),u(!1)};return window.addEventListener("beforeinstallprompt",e),window.addEventListener("appinstalled",t),()=>{window.removeEventListener("beforeinstallprompt",e),window.removeEventListener("appinstalled",t)}},[]);let h=async()=>{if(!e)return;e.prompt();let{outcome:t}=await e.userChoice;"accepted"===t?console.log("用户接受了安装"):console.log("用户拒绝了安装"),d(null),p(!1),localStorage.setItem("pwa-install-prompt-seen","true")};return f||!c?null:(0,t.jsxs)(t.Fragment,{children:[v&&(0,t.jsx)("div",{className:"fixed bottom-4 right-4 z-50 max-w-sm animate-in slide-in-from-bottom-5",children:(0,t.jsxs)(n.Card,{className:"shadow-lg border-2 border-primary",children:[(0,t.jsxs)(n.CardHeader,{className:"pb-3",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(o,{className:"h-5 w-5 text-primary"}),(0,t.jsx)(n.CardTitle,{className:"text-base",children:"安装应用"})]}),(0,t.jsx)(a.Button,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>{p(!1),localStorage.setItem("pwa-install-prompt-seen","true")},children:(0,t.jsx)(i.X,{className:"h-4 w-4"})})]}),(0,t.jsx)(n.CardDescription,{className:"text-xs",children:"将家谱应用添加到主屏幕,随时随地访问"})]}),(0,t.jsx)(n.CardContent,{className:"pt-0",children:(0,t.jsxs)(a.Button,{onClick:h,className:"w-full",size:"sm",children:[(0,t.jsx)(s.Download,{className:"mr-2 h-4 w-4"}),"立即安装"]})})]})}),!v&&(0,t.jsxs)(l.Alert,{className:"cursor-pointer hover:bg-muted/50 transition-colors",onClick:h,children:[(0,t.jsx)(s.Download,{className:"h-4 w-4"}),(0,t.jsxs)(l.AlertDescription,{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{children:"将应用安装到设备"}),(0,t.jsx)(a.Button,{size:"sm",variant:"outline",children:"安装"})]})]})]})}function c({children:e}){return(0,r.useEffect)(()=>{!function(){if(!("serviceWorker"in navigator))return console.log("Service Worker 不被支持");let e=()=>{navigator.serviceWorker.register("/sw.js").then(e=>{e.addEventListener("updatefound",()=>{let t=e.installing;t&&t.addEventListener("statechange",()=>{"installed"===t.state&&navigator.serviceWorker.controller})})}).catch(e=>{console.error("Service Worker 注册失败:",e)})};"complete"===document.readyState?e():window.addEventListener("load",e)}()},[]),(0,t.jsxs)(t.Fragment,{children:[e,(0,t.jsx)(d,{})]})}e.s(["PWAProvider",()=>c],85367)},21483,e=>{"use strict";var t=e.i(36792),r=e.i(87830);function a({children:e}){return(0,t.jsx)(r.SessionProvider,{children:e})}e.s(["SessionProvider",()=>a])}]);