PageSourceSearch

https://xynergy.ai/_next/static/chunks/7831.894e8cf7b2a2e38a.js

js xynergy.ai collected 2026-10-05 16:02:38 UTC 8,404 bytes, 3 lines download raw bytes

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.