1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7014,7831],{212:(e,t,r)=>{r.r(t),r.d(t,{default:()=>v});var n=r(85047),s=r(31615),a=r(82520),l=r(21410),i=r(10892),c=r(41178),o=r(73521),d=r(61325),h=r(42165),u=r(11787),p=r(85183),m=r(14188),f=r(39558),x=r(18534),g=r(37014),j=r(4063),w=r(21016);function v({will:e,onSave:t,onClose:r}){let{toast:b}=(0,c.dj)(),{user:N}=(0,o.A)(),[y,E]=(0,s.useState)(e.content),[F,k]=(0,s.useState)(e.content),[A,C]=(0,s.useState)(!1),[S,$]=(0,s.useState)(!1),[T,_]=(0,s.useState)(null),[I,z]=(0,s.useState)(!1),[L,M]=(0,s.useState)(!1),[R,U]=(0,s.useState)({top:0,left:0}),q=(0,s.useRef)(null),B=(0,s.useRef)(null);(0,s.useEffect)(()=>{E(e.content),k(e.content)},[e]),(0,s.useEffect)(()=>{let e=()=>{let e=(0,j.qG)();if(e&&e.length>10){_(e),M(!0);let t=window.getSelection();if(t&&t.rangeCount>0){let e=t.getRangeAt(0).getBoundingClientRect();U({top:e.bottom+window.scrollY+10,left:e.left+window.scrollX})}}else _(null),M(!1)};return document.addEventListener("selectionchange",e),()=>document.removeEventListener("selectionchange",e)},[]);let G=async()=>{if(T&&N){$(!0);try{let t=await (0,g.callFn)("generateWillAi",{type:e.type,userInfo:{name:"ç«éºå人"},specialInstructions:`è«éæ°æ°å¯«ä»¥ä¸æ®µè½ï¼ä¿æç¸åçèªå¢åé¢¨æ ¼ï¼ 2 3${T}`});if(t.data?.content){if(B.current){let{start:e,end:r}=B.current,n=y.substring(0,e)+t.data.content+y.substring(r);E(n)}else{let e=y.replace(T,t.data.content);E(e)}_(null),M(!1),b({title:"éæ°çææå",description:"段è½å·²éæ°çæ"})}}catch(e){b({title:"éæ°çæå¤±æ",description:e.message||"ç¡æ³éæ°çææ®µè½",variant:"destructive"})}finally{$(!1)}}},P=async()=>{if(N){C(!0);try{await d.b.updateWill(e.id,{content:y}),k(y),z(!1),b({title:"å²åæå",description:"éºåå·²æåæ´æ°"}),t?.()}catch(e){b({title:"å²å失æ",description:e.message||"ç¡æ³å²åéºå",variant:"destructive"})}finally{C(!1)}}},W=(0,j.nt)(F,y),Y=y!==F;return(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)(a.Zp,{children:[(0,n.jsx)(a.aR,{children:(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)(a.ZB,{children:e.title}),(0,n.jsx)(a.BT,{children:"編輯éºåå §å®¹"})]}),r&&(0,n.jsx)(l.$,{variant:"ghost",size:"icon",onClick:r,children:(0,n.jsx)(h.A,{className:"h-4 w-4"})})]})}),(0,n.jsxs)(a.Wu,{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(i.T,{ref:q,value:y,onChange:e=>{E(e.target.value);let t=e.target;B.current={start:t.selectionStart,end:t.selectionEnd}},onSelect:e=>{let t=e.target;B.current={start:t.selectionStart,end:t.selectionEnd}},className:"min-h-[400px] font-mono text-sm",placeholder:"è«è¼¸å ¥éºåå §å®¹..."}
3),L&&T&&(0,n.jsx)("div",{className:"absolute z-10",style:{top:`${R.top}px`,left:`${R.left}px`},children:(0,n.jsx)(l.$,{size:"sm",variant:"default",onClick:G,disabled:S,children:S?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(u.A,{className:"mr-2 h-4 w-4 animate-spin"}),"çæä¸..."]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p.A,{className:"mr-2 h-4 w-4"}),"éæ°çææ¤æ®µè½"]})})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"flex gap-2",children:Y&&(0,n.jsxs)(l.$,{variant:"outline",onClick:()=>{z(!0)},children:[(0,n.jsx)(m.A,{className:"mr-2 h-4 w-4"}),"æ¥çå·®ç°"]})}),(0,n.jsx)("div",{className:"flex gap-2",children:(0,n.jsx)(l.$,{onClick:P,disabled:A||!Y,children:A?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(u.A,{className:"mr-2 h-4 w-4 animate-spin"}),"å²åä¸..."]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(f.A,{className:"mr-2 h-4 w-4"}),"å²åè®æ´"]})})})]}),Y&&(0,n.jsx)(w.Fc,{children:(0,n.jsx)(w.TN,{children:"æ¨ææªå²åçè®æ´ãè«é»æãå²åè®æ´ãæé以å²åä¿®æ¹ã"})})]})]}),(0,n.jsx)(x.lG,{open:I,onOpenChange:z,children:(0,n.jsxs)(x.Cf,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[(0,n.jsxs)(x.c7,{children:[(0,n.jsx)(x.L3,{children:"çæ¬æ¯è¼"}),(0,n.jsx)(x.rr,{children:"顯示åå§çæ¬å編輯å¾çæ¬çå·®ç°"})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{className:"font-semibold mb-2",children:"æ°å¢çå
§å®¹ï¼ç¶ è²ï¼"}),(0,n.jsx)("div",{className:"rounded-lg border p-4 bg-green-50 dark:bg-green-950",children:W.added.length>0?(0,n.jsx)("pre",{className:"whitespace-pre-wrap text-sm text-green-800 dark:text-green-200",children:W.added.join("\n")}):(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"ç¡æ°å¢å
§å®¹"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{className:"font-semibold mb-2",children:"åªé¤çå
§å®¹ï¼ç´
è²ï¼"}),(0,n.jsx)("div",{className:"rounded-lg border p-4 bg-red-50 dark:bg-red-950",children:W.removed.length>0?(0,n.jsx)("pre",{className:"whitespace-pre-wrap text-sm text-red-800 dark:text-red-200",children:W.removed.join("\n")}):(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"ç¡åªé¤å
§å®¹"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{className:"font-semibold mb-2",children:"æªè®æ´çå
§å®¹"}),(0,n.jsx)("div",{className:"rounded-lg border p-4 bg-muted/50",children:(0,n.jsx)("pre",{className:"whitespace-pre-wrap text-sm",children:W.unchanged.join("\n")})})]})]})]})})]})}},4063:(e,t,r)=>{function n(e){return({traditional:"èªæ¸éºå",holographic:"代çéºå",notarized:"å
¬èéºå",custom:"ç¹è£½éºå"})[e]||"èªæ¸éºå"}function s(){let e=window.getSelection();if(!e||0===e.rangeCount)return null;let t=e.toString().trim();return t.length>0?t:null}function a(e,t){let r=e.split("\n").map(e=>e.trim()).filter(e=>e.length>0),n=t.split("\n").map(e=>e.trim()).filter(e=>e.length>0),s=[],a=[],l=[],i=Math.max(r.length,n.length);for(let e=0;e<i;e++){let t=r[e],i=n[e];void 0===t?i&&s.push(i):void 0===i?a.push(t):t===i?l.push(t):(a.push(t),s.push(i))}return{added:s,removed:a,unchanged:l}}function l(e){return e?e.replace(/\*\*/g,"").replace(/(^#{1,6})\s*/gm,"\n").replace(/\*([^*]+)\*/g,"$1").replace(/_([^_]+)_/g,"$1").replace(/^\s*[-*]\s+/gm,"").replace(/\n{3,}/g,"\n\n").trim():""}r.d(t,{V3:()=>l,YP:()=>n,nt:()=>a,qG:()=>s})},37014:(e,t,r)=>
3{r.d(t,{callFn:()=>l,callPublicFn:()=>i});var n=r(71931),s=r(76458),a=r(19548);async function l(e,t){if(!s.functions)throw Error("Firebase Functions æªåå§å");if(!s.auth)throw Error("Firebase Auth æªåå§å");if(!s.auth.currentUser)throw Error("ç¨æ¶æªç»å
¥ï¼è«å
ç»å
¥å¾åä½¿ç¨æ¤åè½");try{if(!await s.auth.currentUser.getIdToken(!0))throw Error("ç¡æ³åå¾èªè token")}catch(t){let e=t instanceof Error?t:Error(String(t));throw a.Cp(e,{level:"error",extra:{message:"å·æ° ID Token 失æ",operation:"callFn.getIdToken"},tags:{source:"firebase.callFn"}}),Error("èªè失æï¼è«éæ°ç»å
¥")}if(!s.app)throw Error("Firebase App æªåå§å");if(s.functions&&"app"in s.functions&&s.auth&&"app"in s.auth){let e=s.functions.app,t=s.auth.app;if(e!==t)throw a.Cp(Error("Firebase App mismatch"),{level:"error",extra:{message:"Firebase App 實ä¾ä¸ä¸è´",functionsAppName:e?.name,authAppName:t?.name,appName:s.app?.name},tags:{source:"firebase.callFn"}}),Error("Firebase App 實ä¾ä¸ä¸è´ï¼è«éæ°åå§å")}let r=(0,n.httpsCallable)(s.functions,e);try{return await r(t)}catch(i){let r=i?.code||"",l=String(i?.message||"");if("unauthenticated"===r||"permission-denied"===r||l.includes("unauth")||l.includes("401")||l.includes("Unauthorized"))try{if(!s.auth.currentUser)throw Error("ç¨æ¶å·²ç»åºï¼è«éæ°ç»å
¥");await s.auth.currentUser.getIdToken(!0),await new Promise(e=>setTimeout(e,100));let r=(0,n.httpsCallable)(s.functions,e);return await r(t)}catch(t){throw a.Cp(t instanceof Error?t:Error(String(t)),{level:"error",extra:{message:`é試失æ: ${e}`,operation:"callFn.retry",code:t?.code},tags:{source:"firebase.callFn"}}),Error(t?.message||"èªè失æï¼è«éæ°ç»å
¥å¾å試")}throw i}}async function i(e,t){if(!s.functions)throw Error("Firebase Functions æªåå§å");return(0,n.httpsCallable)(s.functions,e)(t)}},85183:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(46775).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.