@wonseok-han/confluence-sync 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
- function Ze(e,n,i={}){if(i.quiet||e==="/api/sync/job")return null;if(e==="/api/sync/staging")return{label:n?.action==="add"?"\uC5C5\uB85C\uB4DC \uBB38\uC11C\uC5D0 \uD3EC\uD568\uD558\uB294 \uC911":n?.action==="remove"?"\uC5C5\uB85C\uB4DC \uC120\uD0DD\uC744 \uD574\uC81C\uD558\uB294 \uC911":"\uB85C\uCEEC \uBCC0\uACBD\uC744 \uD655\uC778\uD558\uB294 \uC911",background:!!i.background,button:n?.action?n.paths?.length===1?null:n.action==="add"?"sync-stage-add":"sync-stage-remove":"sync-stage-scan",region:"sync-stage-list"};let c={"/api/sync/config":["\uC5F0\uACB0 \uC124\uC815\uC744 \uD655\uC778\uD558\uB294 \uC911","sync-load","sync-env-body"],"/api/sync/connect":["\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uD558\uB294 \uC911","sync-connect","sync-env-body"],"/api/sync/env/import":[".env\uB97C \uC77D\uB294 \uC911","sync-env-choose","sync-env-body"],"/api/sync/env/save":[".env \uC800\uC7A5\uC744 \uD655\uC778\uD558\uB294 \uC911","sync-env-save","sync-env-body"],"/api/sync/fetch":["\uC6D0\uACA9 \uBCC0\uACBD\uC744 \uD655\uC778\uD558\uB294 \uC911","sync-fetch","sync-view"],"/api/sync/restore":["\uC6D0\uACA9 \uBCF5\uAD6C \uB300\uC0C1\uC744 \uD655\uC778\uD558\uB294 \uC911",void 0,"sync-view"],"/api/sync/pull":["Confluence\uC5D0\uC11C \uAC00\uC838\uC624\uB294 \uC911","sync-pull-remote","sync-view"],"/api/sync/preview":["\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uACC4\uC0B0\uD558\uB294 \uC911","sync-preview","sync-view"],"/api/sync/push":["Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uD558\uB294 \uC911","sync-push","sync-view"],"/api/sync/diff":[n?.remote?"\uC6D0\uACA9 \uBCF8\uBB38\uC744 \uBE44\uAD50\uD558\uB294 \uC911":"\uC800\uC7A5\uB41C \uAE30\uC900\uBCF8\uC744 \uBE44\uAD50\uD558\uB294 \uC911","sync-diff-remote","sync-diff-dialog"],"/api/document-preview":["\uBB38\uC11C \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uB9CC\uB4DC\uB294 \uC911","document-preview-refresh","document-preview-panel"],"/api/document-format/preview":["\uBB38\uC11C \uC11C\uC2DD\uC744 \uBE44\uAD50\uD558\uB294 \uC911",n?.basic?"document-format-basic":"document-format-review","document-preview-panel"],"/api/table-format/preview":["\uD45C \uC11C\uC2DD\uC744 \uBE44\uAD50\uD558\uB294 \uC911","document-format-review","document-preview-panel"],"/api/table-format/save":["\uBB38\uC11C \uC11C\uC2DD\uC744 \uC800\uC7A5\uD558\uB294 \uC911","table-save","table-review-dialog"],"/api/convert":[n?.preview?"\uBCC0\uD658 \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uB9CC\uB4DC\uB294 \uC911":"\uBB38\uC11C\uC640 \uCCA8\uBD80\uB97C \uBCC0\uD658\uD558\uB294 \uC911",n?.preview?"preview":"save","convert-view"],"/api/pick-folder":["\uC2DC\uC2A4\uD15C \uCC3D\uC5D0\uC11C \uD3F4\uB354\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694",n?.kind==="reference"?"sync-add-reference":n?.kind==="out"?"choose-out":"choose-base",null],"/api/open":["\uACB0\uACFC \uD3F4\uB354\uB97C \uC5EC\uB294 \uC911","open",null]};if(e.startsWith("/api/search"))return{label:"\uBB38\uC11C\uB97C \uAC80\uC0C9\uD558\uB294 \uC911",region:"files"};let[d,l,t]=c[e]??["\uBB38\uC11C \uD3F4\uB354\uB97C \uBD88\uB7EC\uC624\uB294 \uC911",null,"files"];return{label:d,button:l,region:t}}function Qe({get:e=i=>document.getElementById(i),now:n=()=>Date.now()}={}){let i=new Map,c=new Map,d=0,l,t=e("activity-panel");function o(g,v){let x=g&&e(g);if(!x)return;let w=c.get(x);v>0?(w||(w={count:0,busy:x.getAttribute("aria-busy")},c.set(x,w)),w.count++,x.setAttribute("aria-busy","true"),x.classList.add("is-loading")):w&&--w.count===0&&(w.busy===null?x.removeAttribute("aria-busy"):x.setAttribute("aria-busy",w.busy),x.classList.remove("is-loading"),c.delete(x))}function u(g){let v=Math.max(0,Math.floor((n()-g.startedAt)/1e3));return v<60?`${v}\uCD08 \uACBD\uACFC`:`${Math.floor(v/60)}\uBD84 ${v%60}\uCD08 \uACBD\uACFC`}function s(){let g=[...i.values()].filter(v=>!v.background).at(-1);g&&t&&(e("activity-elapsed").textContent=u(g))}function m(){let g=[...i.values()].filter(x=>!x.background).at(-1);t&&(t.hidden=!g,g&&(e("activity-title").textContent=g.label,e("activity-detail").textContent=g.detail||"\uCC98\uB9AC\uAC00 \uB05D\uB098\uBA74 \uACB0\uACFC\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.",t.classList.toggle("is-uncertain",g.uncertain===!0),e("activity-link").hidden=!g.link,g.link&&e("activity-link").setAttribute("href",g.link)));let v=e("sync-stage-checking");if(v){let x=[...i.values()].some(w=>w.background&&w.visible);v.classList.toggle("is-checking",x),v.setAttribute("aria-hidden",String(!x))}g&&!l&&(l=setInterval(s,1e3)),!g&&l&&(clearInterval(l),l=void 0),s()}function y(g){let v=++d,x=Date.parse(g.startedAt),w={...g,startedAt:Number.isFinite(x)?x:n(),visible:!1};return i.set(v,w),w.background?w.delay=setTimeout(()=>{i.has(v)&&(w.visible=!0,m())},350):(o(w.button,1),o(w.region,1)),m(),{update(b){if(!i.has(v))return;let M=Date.parse(b.startedAt);Object.assign(w,b,{startedAt:Number.isFinite(M)?M:w.startedAt}),m()},end(){i.delete(v)&&(clearTimeout(w.delay),w.background||(o(w.button,-1),o(w.region,-1)),m())}}}return{begin:y}}var Ce=async e=>Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",e))).map(n=>n.toString(16).padStart(2,"0")).join(""),Ot=e=>!e.split("/").some((n,i)=>n==="node_modules"||n===".git"||n.startsWith(".")&&!(i===0&&[".csync",".env",".confluence-sync.json",".confluence-workspace.json",".confluence-syncignore"].includes(n)));function tt(e,n){let i=e.find(d=>n.startsWith(d.virtual+"/"));if(!i)throw Error("\uC120\uD0DD\uD55C \uD3F4\uB354 \uBC16\uC758 \uD30C\uC77C\uC785\uB2C8\uB2E4.");let c=n.slice(i.virtual.length+1).split("/");if(c.some(d=>!d||d==="."||d===".."||d.includes("\\")))throw Error("\uC798\uBABB\uB41C \uD30C\uC77C \uACBD\uB85C\uC785\uB2C8\uB2E4.");return{mount:i,parts:c}}async function We(e,n,i=!1){let{mount:c,parts:d}=tt(e,n),l=c.handle;for(let t of d.slice(0,-1))l=await l.getDirectoryHandle(t,{create:i});return{directory:l,name:d.at(-1),handle:await l.getFileHandle(d.at(-1),{create:i})}}var Pt=e=>e.name==="NotFoundError";async function Ue(e,n){try{return new Uint8Array(await(await(await We(e,n)).handle.getFile()).arrayBuffer())}catch(i){if(Pt(i))return null;throw i}}async function Ye(e,n,i){let{handle:c}=await We(e,n,!0),d=await c.createWritable();try{await d.write(i),await d.close()}catch(l){throw await d.abort().catch(()=>{}),l}}async function et(e,n){let{directory:i,name:c}=await We(e,n);await i.removeEntry(c)}async function Rt(e,n=new Map,i=!1){let c=[],d=0;async function l(t,o,u=[]){for await(let[s,m]of o.entries()){let y=[...u,s].join("/");if(t.readonly&&y===".env"||!Ot(y))continue;if(m.kind==="directory"){await l(t,m,[...u,s]);continue}let g=await m.getFile();if(d+=g.size,g.size>104857600||d>536870912||c.length>=2e4)throw Error("\uC791\uC5C5\uACF5\uAC04 \uD55C\uB3C4\uB97C \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4(\uD30C\uC77C 100MiB, \uC804\uCCB4 512MiB, 20,000\uAC1C).");let v=t.virtual+"/"+y,x=`${g.size}:${g.lastModified}`,w=n.get(v),b=!i&&w?.stamp===x?w.hash:await Ce(await g.arrayBuffer());n.set(v,{stamp:x,hash:b}),c.push({path:v,size:g.size,hash:b,file:g})}}for(let t of e)await l(t,t.handle);return c.sort((t,o)=>t.path<o.path?-1:t.path>o.path?1:0)}async function Nt(e,n,i,c){let d=new Map(n.map(o=>[o.path,o.hash])),l=[],t=[...i.files.map(o=>({...o,remove:!1})),...i.removed.map(o=>({path:o,remove:!0}))];t.sort((o,u)=>(o.path.includes("/.csync/")?3:o.path.endsWith(".md")?2:1)-(u.path.includes("/.csync/")?3:u.path.endsWith(".md")?2:1));for(let o of t){let{mount:u}=tt(e,o.path);if(u.readonly)throw Error("\uCC38\uC870 \uD3F4\uB354\uB294 \uC218\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.");let s=await Ue(e,o.path),m=s?await Ce(s):void 0;if(!o.remove&&m===o.hash||o.remove&&!s){o.skip=!0;continue}if(m!==d.get(o.path))throw Error(`\uC791\uC5C5 \uC911 \uB85C\uCEEC \uD30C\uC77C\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4: ${o.path}`);if(o.before=s,o.beforeHash=m,!o.remove&&(o.bytes=new Uint8Array(await c(o.path)),await Ce(o.bytes)!==o.hash))throw Error("\uACB0\uACFC \uD30C\uC77C\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.")}try{for(let o of t){if(o.skip)continue;let u=await Ue(e,o.path);if((u?await Ce(u):void 0)!==o.beforeHash)throw Error(`\uC800\uC7A5 \uC9C1\uC804 \uB85C\uCEEC \uD30C\uC77C\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4: ${o.path}`);l.push(o),o.remove?u&&await et(e,o.path):await Ye(e,o.path,o.bytes)}}catch(o){let u=[];for(let s of l.reverse())try{let m=await Ue(e,s.path),y=m?await Ce(m):void 0;if(y===s.beforeHash)continue;if(y!==(s.remove?void 0:s.hash)){u.push(s.path);continue}s.before?await Ye(e,s.path,s.before):m&&await et(e,s.path)}catch{u.push(s.path)}throw u.length?Error(`${o.message} \uCD94\uAC00 \uD3B8\uC9D1 \uB610\uB294 \uBCF5\uC6D0 \uC2E4\uD328\uB85C \uD655\uC778\uC774 \uD544\uC694\uD55C \uD30C\uC77C: ${u.join(", ")}`):o}}function Ft(){return new Promise((e,n)=>{let i=indexedDB.open("csync.browser-folders",1);i.onupgradeneeded=()=>i.result.createObjectStore("workspace"),i.onsuccess=()=>e(i.result),i.onerror=()=>n(i.error)})}async function Bt(e,n="active"){let i=await Ft();try{return await new Promise((c,d)=>{let l=i.transaction("workspace",e===void 0?"readonly":"readwrite"),t=l.objectStore("workspace"),o=e===void 0?t.get(n):e===null?t.delete(n):t.put(e,n),u;o.onsuccess=()=>{u=o.result},l.oncomplete=()=>c(u),l.onerror=()=>d(l.error)})}finally{i.close()}}function Je({document:e=globalThis.document,window:n=globalThis.window,location:i=globalThis.location,storage:c=globalThis.sessionStorage,fetch:d=globalThis.fetch,remember:l=Bt,pickDirectory:t=o=>n.showDirectoryPicker(o)}={}){let o=a=>e.getElementById(a),u=o("browser-folder-dialog"),s=o("browser-folder-status"),m=o("browser-apply-dialog"),y,g=[],v=[],x=!1,w=Promise.resolve(),b=new Map,M,A=!1,I=new Promise(a=>{M=a}),O="csync.browser-session.v1",F=a=>{let h=w.catch(()=>{}).then(a);return w=h,h},L=async()=>{c.setItem(O,JSON.stringify(y)),await l({mounts:g,baseline:v},y.id)},W=async(a,h=!1)=>{let E=h?"read":"readwrite";if(await a.queryPermission({mode:E})!=="granted"&&await a.requestPermission({mode:E})!=="granted")throw Error("\uC120\uD0DD\uD55C \uD3F4\uB354\uC758 \uC77D\uAE30\xB7\uC4F0\uAE30 \uAD8C\uD55C\uC744 \uD5C8\uC6A9\uD558\uC138\uC694.")};async function T(a,h,E=h?"POST":"GET"){let f=await d(a,{method:E,credentials:"omit",headers:{...y?{"X-Csync-Session":y.id,"X-Csync-Token":y.token}:{},...h?{"Content-Type":"application/json"}:{}},...h?{body:JSON.stringify(h)}:{}}),S=await f.json();if(!f.ok)throw Object.assign(Error(S.error||"\uC791\uC5C5 \uC694\uCCAD\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."),{code:S.code,status:f.status,conflicts:S.conflicts,inPlace:S.inPlace,output:S.output});return S}let H=()=>({"X-Csync-Session":y.id,"X-Csync-Token":y.token});async function V(){let a=await T("/api/browser/changes");if(!(!a.files.length&&!a.removed.length))try{A=!0,await Nt(g,v,a,async h=>{let E=await d("/api/browser/file?path="+encodeURIComponent(h),{headers:H(),credentials:"omit"});if(!E.ok)throw Error("\uACB0\uACFC \uD30C\uC77C\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.");return E.arrayBuffer()}),await T("/api/browser/ack",{files:a.snapshot}),v=a.snapshot,b.clear(),await L(),A=!1,m.close()}catch(h){throw o("browser-apply-status").textContent=h.message,m.open||m.showModal(),h}}o("browser-apply-retry").onclick=async()=>{if(!x)try{for(let a of g)a.readonly||await W(a.handle);await F(V)}catch(a){o("browser-apply-status").textContent=a.message}},m.addEventListener("cancel",a=>a.preventDefault());async function $(a=!1){if(A)throw Error("\uBCF4\uB958 \uC911\uC778 \uB85C\uCEEC \uD30C\uC77C \uC801\uC6A9\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");await V();let h=await Rt(g,b,a),E=h.map(({path:S,size:P,hash:r})=>({path:S,size:P,hash:r}));if(JSON.stringify(E)===JSON.stringify(v))return;let f=await T("/api/browser/mirror",{files:E});for(let S of f.uploads){let P=h.find(z=>z.path===S.path),r=await d("/api/browser/file?path="+encodeURIComponent(S.path),{method:"PUT",headers:H(),credentials:"omit",body:P.file});if(!r.ok){let z=await r.json();throw Error(z.error||"\uD30C\uC77C \uC804\uC1A1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.")}}await T("/api/browser/commit",{}),v=E,await L()}let j=()=>{o("workspace-interface").inert=!1,o("local-connection-status").textContent=g[0].handle.name+" \xB7 \uBE0C\uB77C\uC6B0\uC800 \uD3F4\uB354",u.close(),M()},oe=async()=>{await $(),j()},te=async()=>{x=(await T("/api/sync/job")).job?.state==="running",x?j():await oe()};async function Z(a){if(x||A)throw Error("\uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");o("browser-folder-open").disabled=!0,s.textContent="\uC120\uD0DD\uD55C \uBB38\uC11C\xB7\uCCA8\uBD80\uB97C \uC784\uC2DC \uC791\uC5C5\uACF5\uAC04\uC5D0 \uC900\uBE44\uD558\uB294 \uC911\u2026";try{return y&&(await V(),await T("/api/browser/session",void 0,"DELETE"),await l(null,y.id)),y=await T("/api/browser/session",{name:a.name}),g=[{virtual:y.base,handle:a}],v=[],b.clear(),await L(),await oe(),{path:y.base}}finally{o("browser-folder-open").disabled=!1}}let de=async(a,h)=>{if(x||A)throw Error("\uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");if(a==="out"&&await g[0].handle.isSameEntry(h))return{path:y.base};for(let f of g)if(!(a==="out"&&f.virtual===y.output)){if(a==="reference"&&f.readonly&&await f.handle.isSameEntry(h))return{path:f.virtual};if(await f.handle.isSameEntry(h)||await f.handle.resolve(h)!==null||await h.resolve(f.handle)!==null)throw Error("\uBB38\uC11C\xB7\uCD9C\uB825\xB7\uCC38\uC870 \uD3F4\uB354\uB294 \uC11C\uB85C \uACB9\uCE58\uC9C0 \uC54A\uB294 \uBCC4\uB3C4 \uD3F4\uB354\uB85C \uC120\uD0DD\uD558\uC138\uC694.")}let E=a==="out"?y.output:(await T("/api/browser/mount",{kind:"reference"})).path;return g=g.filter(f=>f.virtual!==E),g.push({virtual:E,handle:h,readonly:a==="reference"}),await L(),await $(),{path:E}},Q=async a=>{let h=await t({mode:a==="reference"?"read":"readwrite"});return await W(h,a==="reference"),F(()=>a==="base"?Z(h):de(a,h))};async function C(a,h){if(A)throw Error("\uBCF4\uB958 \uC911\uC778 \uB85C\uCEEC \uD30C\uC77C \uC801\uC6A9\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");let E=a.split("?")[0],f=h.body?JSON.parse(h.body):void 0;if(E==="/api/open")return{ok:!0,name:(f.path?.startsWith(y.base)?g[0]:g.find(P=>P.virtual===y.output))?.handle.name??"\uCD9C\uB825 \uD3F4\uB354"};if(E==="/api/convert"&&!f.preview&&f.out!==f.base&&!g.some(P=>P.virtual===y.output))throw Error("\uBCC0\uD658 \uACB0\uACFC\uB97C \uC800\uC7A5\uD560 \uCD9C\uB825 \uD3F4\uB354\uB97C \uBA3C\uC800 \uC120\uD0DD\uD558\uC138\uC694.");E!=="/api/sync/job"&&!x&&await $(E!=="/api/sync/staging");let S;try{S=await T(a,f,h.method??(f?"POST":"GET"))}catch(P){throw x||await V(),P}return S.job&&(x=S.job.state==="running"),x||await V(),S}let k=(a,h={})=>{if(a==="/api/pick-folder"){let{kind:f}=JSON.parse(h.body);return(async()=>{if(x||A)throw Error("\uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");if(f==="base"){let S=await Q("base");return i.reload(),new Response(JSON.stringify(S))}return new Response(JSON.stringify(await Q(f)))})()}return F(()=>C(a,h)).then(f=>new Response(JSON.stringify(f))).catch(f=>new Response(JSON.stringify({error:f.message,code:f.code,conflicts:f.conflicts,inPlace:f.inPlace,output:f.output}),{status:f.status??400}))};o("local-disconnect").hidden=!1,o("local-disconnect").textContent="\uD3F4\uB354 \uC5F0\uACB0 \uD574\uC81C",o("local-disconnect").onclick=()=>F(async()=>{try{if(x||A)throw Error("\uC791\uC5C5\uACFC \uB85C\uCEEC \uD30C\uC77C \uC801\uC6A9\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");y&&(await T("/api/browser/session",void 0,"DELETE"),await l(null,y.id)),c.removeItem(O),i.reload()}catch(a){s.textContent=a.message,u.showModal()}});let R=o("out-mode-hint");return R&&(R.textContent="\uBCC4\uB3C4 \uD3F4\uB354 \uB610\uB294 \uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30"),o("workspace-interface").inert=!0,u.addEventListener("cancel",a=>a.preventDefault()),o("root-path-editor").hidden=!0,o("out-input").readOnly=!0,o("out-input").placeholder="\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uCD9C\uB825 \uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694",o("open").textContent="\uC800\uC7A5 \uC704\uCE58 \uD655\uC778",o("browser-folder-open").onclick=()=>Q("base").catch(a=>{a.name!=="AbortError"&&(s.textContent=a.message)}),o("browser-folder-resume").onclick=async()=>{try{for(let a of g)await W(a.handle,a.readonly);await F(te)}catch(a){s.textContent=a.message}},n.addEventListener("beforeunload",a=>{(x||A)&&(a.preventDefault(),a.returnValue="")}),!n.isSecureContext||!n.showDirectoryPicker?(s.textContent="\uD3F4\uB354 \uC77D\uAE30\xB7\uC4F0\uAE30\uB97C \uC9C0\uC6D0\uD558\uB294 \uB370\uC2A4\uD06C\uD1B1 Chrome \uB610\uB294 Edge\uC5D0\uC11C HTTPS \uC8FC\uC18C\uB85C \uC811\uC18D\uD558\uC138\uC694.",o("browser-folder-open").disabled=!0,u.showModal()):(o("local-connection-status").textContent="\uC800\uC7A5\uB41C \uD3F4\uB354 \uC5F0\uACB0\uC744 \uD655\uC778\uD558\uB294 \uC911\u2026",F(async()=>{let a;try{y=JSON.parse(c.getItem(O)),a=y?await l(void 0,y.id):void 0}catch{s.textContent="\uC800\uC7A5\uB41C \uD3F4\uB354 \uC5F0\uACB0 \uC815\uBCF4\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD3F4\uB354\uB97C \uB2E4\uC2DC \uC120\uD0DD\uD558\uC138\uC694."}if(!y||!a?.mounts?.length){o("local-connection-status").textContent="\uBE0C\uB77C\uC6B0\uC800 \uD3F4\uB354 \uC120\uD0DD \uD544\uC694",u.showModal();return}g=a.mounts,v=a.baseline??[];let h=!0;for(let E of g)await E.handle.queryPermission({mode:E.readonly?"read":"readwrite"})!=="granted"&&(h=!1);if(!h){o("local-connection-status").textContent="\uD3F4\uB354 \uC811\uADFC \uAD8C\uD55C \uD655\uC778 \uD544\uC694",o("browser-folder-resume").hidden=!1,s.textContent="\uC774\uC804\uC5D0 \uC120\uD0DD\uD55C \uD3F4\uB354\uAC00 \uC800\uC7A5\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC120\uD0DD\uD560 \uD544\uC694 \uC5C6\uC774 \uC811\uADFC \uAD8C\uD55C\uC744 \uD5C8\uC6A9\uD558\uC138\uC694.",u.showModal();return}o("local-connection-status").textContent=g[0].handle.name+" \xB7 \uC5F0\uACB0\uC744 \uBCF5\uC6D0\uD558\uB294 \uC911\u2026";try{await te()}catch(E){[401,410].includes(E.status)?(await l(null,y.id),y=void 0,v=[],c.removeItem(O),s.textContent="\uC791\uC5C5\uACF5\uAC04\uC744 \uB2E4\uC2DC \uC5F0\uACB0\uD574\uC57C \uD569\uB2C8\uB2E4. \uD3F4\uB354\uB97C \uB2E4\uC2DC \uC120\uD0DD\uD558\uC138\uC694."):s.textContent="\uC774\uC804 \uD3F4\uB354 \uC5F0\uACB0\uC744 \uBCF5\uC6D0\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: "+E.message,o("local-connection-status").textContent="\uD3F4\uB354 \uC5F0\uACB0 \uD655\uC778 \uD544\uC694",u.showModal()}}).catch(a=>{s.textContent=a.message,o("local-connection-status").textContent="\uD3F4\uB354 \uC5F0\uACB0 \uD655\uC778 \uD544\uC694",u.showModal()})),{ready:I,request:k,browser:!0,remote:!1}}async function nt({bytes:e,pages:n,dryRun:i}){let{getDocument:c,GlobalWorkerOptions:d,VerbosityLevel:l}=await import("./chunks/pdf-DDN7TXTP.js");d.workerSrc="/assets/pdf.worker.min.mjs";let t=c({data:e,cMapUrl:"/assets/pdf/cmaps/",cMapPacked:!0,standardFontDataUrl:"/assets/pdf/standard_fonts/",wasmUrl:"/assets/pdf/wasm/",useSystemFonts:!1,verbosity:l.ERRORS});try{let o=await t.promise;for(let s of n)if(!Number.isInteger(s)||s<1||s>o.numPages)throw Error(`PDF \uCABD \uBC94\uC704 \uCD08\uACFC: ${s} (\uCD1D ${o.numPages}\uCABD)`);if(i)return[];let u=[];for(let s of n){let m=await o.getPage(s),y=m.getViewport({scale:160/72}),g=document.createElement("canvas");g.width=Math.ceil(y.width),g.height=Math.ceil(y.height);try{await m.render({canvas:g,canvasContext:g.getContext("2d"),viewport:y}).promise;let v=await new Promise((x,w)=>g.toBlob(b=>b?x(b):w(Error("PDF \uC774\uBBF8\uC9C0\uB97C \uC800\uC7A5\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.")),"image/png"));u.push(await v.arrayBuffer())}finally{m.cleanup(),g.width=g.height=1}}return u}finally{await t.destroy()}}function ot({worker:e=new Worker("/assets/workspace.worker.js",{type:"module"}),timeoutMs:n=18e4}={}){let i=0,c=!1,d=new Map,l=t=>{c=!0;for(let o of d.values())clearTimeout(o.timer),o.reject(Error(t));d.clear()};return e.addEventListener("error",()=>l("\uBE0C\uB77C\uC6B0\uC800 \uC2E4\uD589\uAE30\uB97C \uC2DC\uC791\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD398\uC774\uC9C0\uB97C \uC0C8\uB85C\uACE0\uCE68\uD558\uC138\uC694.")),e.addEventListener("message",async({data:t})=>{if(t.kind==="pdf"){try{let u=await nt(t.request);e.postMessage({kind:"pdf-result",id:t.id,pages:u},u)}catch(u){e.postMessage({kind:"pdf-result",id:t.id,error:u.message})}return}let o=d.get(t.id);o&&(d.delete(t.id),clearTimeout(o.timer),t.error?o.reject(Error(t.error)):o.resolve(new Response(t.body,{status:t.status,headers:t.headers})))}),async(t,o={})=>{if(c)throw Error("\uBE0C\uB77C\uC6B0\uC800 \uC2E4\uD589\uAE30\uAC00 \uC911\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uD398\uC774\uC9C0\uB97C \uC0C8\uB85C\uACE0\uCE68\uD558\uC138\uC694.");let u=new URL(t,"https://local.invalid");if(u.origin!=="https://local.invalid"||!u.pathname.startsWith("/api/"))throw Error("\uC798\uBABB\uB41C \uBE0C\uB77C\uC6B0\uC800 \uC694\uCCAD\uC785\uB2C8\uB2E4.");let s=o.body;s instanceof Blob&&(s=await s.arrayBuffer());let m=++i;return new Promise((y,g)=>{let v=setTimeout(()=>{d.delete(m),g(Error("\uBE0C\uB77C\uC6B0\uC800 \uC694\uCCAD\uC774 \uC9C0\uC5F0\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uC791\uC5C5 \uB0B4\uC5ED\uC744 \uD655\uC778\uD55C \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694."))},n);d.set(m,{resolve:y,reject:g,timer:v}),e.postMessage({id:m,path:t,method:o.method??"GET",headers:Object.fromEntries(new Headers(o.headers)),body:s},s instanceof ArrayBuffer?[s]:[])})}}function Dt(e){let n=new URL(e);if(n.protocol!=="http:"||!["127.0.0.1","localhost","[::1]"].includes(n.hostname)||n.username||n.password||n.pathname!=="/"||n.search||n.hash)throw new Error("\uB85C\uCEEC \uC2E4\uD589\uAE30 \uC8FC\uC18C\uB294 http://127.0.0.1:\uD3EC\uD2B8 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.");return n.origin}function at({document:e=globalThis.document,location:n=globalThis.location,history:i=globalThis.history,storage:c=globalThis.sessionStorage,fetch:d=globalThis.fetch}={}){let l=new URLSearchParams(n.hash?.slice(1)).has("csyncEndpoint")||c?.getItem("csync.connector.v1");if(e.querySelector('meta[name="csync-runtime"]')?.content==="standalone"&&!l)return{...Je({fetch:ot()}),standalone:!0};if(e.querySelector('meta[name="csync-runtime"]')?.content==="browser")return Je();let t=L=>e.getElementById(L),o=e.querySelector('meta[name="csync-token"]').content,u=o?{endpoint:"",token:o}:null,s,m=u?Promise.resolve():new Promise(L=>{s=L}),y="csync.connector.v1",g=(L,W={})=>{if(!u)throw new Error("\uBA3C\uC800 \uB85C\uCEEC \uC2E4\uD589\uAE30\uB97C \uC5F0\uACB0\uD558\uC138\uC694.");if(!L.startsWith("/api/")||L.startsWith("//"))throw new Error("\uB85C\uCEEC API \uACBD\uB85C\uB97C \uD655\uC778\uD558\uC138\uC694.");return d(u.endpoint+L,{...W,headers:{...W.headers,"X-Csync-Token":u.token},credentials:"omit",redirect:"error",...u.endpoint?{targetAddressSpace:"loopback"}:{}})},v=()=>{try{c.removeItem(y)}catch{}u=null,n.reload()};if(t("local-disconnect").onclick=v,u)return{ready:m,request:g,remote:!1};t("local-disconnect").hidden=!1;let x=t("local-connect-dialog"),w=t("local-connect-form"),b=t("local-connect-note");t("local-connect-command").textContent=`csync web --ui ${JSON.stringify(n.origin+n.pathname)} --base "/\uBB38\uC11C\uD3F4\uB354"`;let M=!1;async function A(L,W){if(!M){M=!0,t("local-connect-submit").disabled=!0,b.textContent="\uB85C\uCEEC \uC2E4\uD589\uAE30\uC5D0 \uC5F0\uACB0\uD558\uB294 \uC911\u2026";try{if(L=Dt(L),!/^[a-f0-9]{64}$/.test(W))throw new Error("csync\uAC00 \uCD9C\uB825\uD55C \uC5F0\uACB0 \uB9C1\uD06C\uB97C \uC0AC\uC6A9\uD558\uAC70\uB098 \uC5F0\uACB0 \uD0A4\uB97C \uC785\uB825\uD558\uC138\uC694.");let T=await d(L+"/api/connection",{headers:{"X-Csync-Token":W},credentials:"omit",redirect:"error",targetAddressSpace:"loopback",signal:AbortSignal.timeout(15e3)}),H=await T.json();if(!T.ok)throw new Error(H.error||"\uC5F0\uACB0 \uAD8C\uD55C\uC744 \uD655\uC778\uD558\uC138\uC694.");if(H.mode!=="connector")throw new Error("csync web --ui\uB85C \uC2E4\uD589\uD55C \uB85C\uCEEC \uC2E4\uD589\uAE30\uC5D0 \uC5F0\uACB0\uD558\uC138\uC694.");let V=e.querySelector('meta[name="csync-version"]').content;if(H.version!==V)throw new Error(`\uC6F9(v${V})\uACFC \uB85C\uCEEC \uC2E4\uD589\uAE30(v${H.version}) \uBC84\uC804\uC774 \uB2E4\uB985\uB2C8\uB2E4. \uAC19\uC740 \uBC84\uC804\uC73C\uB85C \uC2E4\uD589\uD558\uC138\uC694.`);u={endpoint:L,token:W};try{c.setItem(y,JSON.stringify(u))}catch{}t("local-connection-status").textContent="\uB0B4 \uCEF4\uD4E8\uD130\uC5D0 \uC5F0\uACB0\uB428",x.close(),t("workspace-interface").inert=!1,s()}catch(T){u=null;try{c.removeItem(y)}catch{}b.textContent=T.name==="TypeError"||T.name==="TimeoutError"?"\uC5F0\uACB0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC csync \uC2E4\uD589 \uC5EC\uBD80\uC640 \uBE0C\uB77C\uC6B0\uC800\uC758 \uB85C\uCEEC \uB124\uD2B8\uC6CC\uD06C \uC811\uADFC \uAD8C\uD55C\uC744 \uD655\uC778\uD558\uC138\uC694.":T.message,x.showModal()}finally{M=!1,t("local-connect-submit").disabled=!1}}}x.addEventListener("cancel",L=>L.preventDefault()),w.onsubmit=L=>(L.preventDefault(),A(t("local-connect-endpoint").value.trim(),t("local-connect-token").value.trim())),t("workspace-interface").inert=!0;let I=new URLSearchParams(n.hash.slice(1)),O=I.get("csyncEndpoint"),F=I.get("csyncToken");if(O!==null||F!==null)i.replaceState(null,"",n.pathname+n.search),t("local-connect-endpoint").value=O??"",t("local-connect-token").value=F??"",x.showModal();else{let L;try{L=JSON.parse(c.getItem(y))}catch{}L?.endpoint&&L?.token?A(L.endpoint,L.token):x.showModal()}return{ready:m,request:g,remote:!0}}function rt(e=globalThis.document){let n=l=>e.getElementById(l),i=n("overwrite-dialog"),c,d=l=>{let t=c;c=void 0,i.close(),t?.(l)};return n("overwrite-cancel").onclick=()=>d(!1),n("overwrite-confirm").onclick=()=>d(!0),i.addEventListener("cancel",l=>{l.preventDefault(),d(!1)}),i.addEventListener("close",()=>{let l=c;c=void 0,l?.(!1)}),({conflicts:l,inPlace:t,output:o})=>{if(c)throw Error("\uB36E\uC5B4\uC4F0\uAE30 \uD655\uC778\uC774 \uC774\uBBF8 \uC9C4\uD589 \uC911\uC785\uB2C8\uB2E4.");return n("overwrite-title").textContent=`${t?"\uC6D0\uBCF8":"\uAE30\uC874"} \uD30C\uC77C ${l.length}\uAC1C \uB36E\uC5B4\uC4F0\uAE30`,n("overwrite-path").textContent=o,n("overwrite-warning").textContent=`${t?"\uC120\uD0DD\uD55C \uC6D0\uBCF8":"\uCD9C\uB825 \uD3F4\uB354\uC758 \uAE30\uC874"} \uB0B4\uC6A9\uC774 \uBCC0\uD658 \uACB0\uACFC\uB85C \uAD50\uCCB4\uB429\uB2C8\uB2E4.${t?" \uD655\uC778 \uC774\uD6C4 \uC6D0\uBCF8\uC774 \uBC14\uB00C\uBA74 \uC800\uC7A5\uC744 \uC911\uB2E8\uD569\uB2C8\uB2E4.":""} \uCDE8\uC18C\uD558\uBA74 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.`,n("overwrite-files").replaceChildren(...l.map(({path:u})=>{let s=e.createElement("li");return s.textContent=u,s})),new Promise(u=>{c=u,i.showModal(),n("overwrite-cancel").focus()})}}function it(){let e=document.getElementById("snackbars"),n=new Map;return function(c,d="info"){let l=d+":"+c;if(!c||n.has(l))return;let t={error:["\uC791\uC5C5\uC744 \uC644\uB8CC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4","!","\uC624\uB958"],success:["\uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4","\u2713","\uC131\uACF5"],warning:["\uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4","!","\uC8FC\uC758"],info:["\uC548\uB0B4","i","\uC548\uB0B4"]}[d],o=document.createElement("div");o.className="snackbar snackbar-"+d,o.setAttribute("role",d==="error"||d==="warning"?"alert":"status");let u=document.createElement("span");u.className="snackbar-icon",u.textContent=t[1],u.setAttribute("aria-hidden","true");let s=document.createElement("div");s.className="snackbar-content";let m=document.createElement("strong");m.textContent=t[0];let y=document.createElement("p");y.textContent=c,s.append(m,y);let g=document.createElement("button");g.type="button",g.className="snackbar-close",g.textContent="\xD7",g.setAttribute("aria-label",t[2]+" \uC54C\uB9BC \uB2EB\uAE30"),g.onclick=()=>{o.remove(),n.delete(l)},o.append(u,s,g),n.set(l,o),e.append(o)}}function st(e){let n=document.getElementById("help-dialog");document.getElementById("open-help").addEventListener("click",()=>{n.showModal(),document.getElementById("help-"+e()).scrollIntoView({block:"start"})}),document.getElementById("open-token-guide").addEventListener("click",()=>{n.showModal(),document.getElementById("help-token").scrollIntoView({block:"start"})}),n.querySelectorAll(".help-nav a").forEach(i=>{i.addEventListener("click",c=>{c.preventDefault(),document.querySelector(i.getAttribute("href")).scrollIntoView({block:"start"})})})}var He;function Pe(){return He??=import("./chunks/monaco-36ZGUH4Y.js").catch(e=>{throw He=void 0,Error("\uBCF8\uBB38 \uBE44\uAD50 \uB3C4\uAD6C\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694. "+e.message)}),He}function lt(e,n){let i=URL.createObjectURL(new Blob([n],{type:"text/plain;charset=utf-8"})),c=document.createElement("a");try{c.href=i,c.download=e,document.body.append(c),c.click()}finally{c.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}}var dt={preview:"\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30",fetch:"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778",pull:"\uAC00\uC838\uC624\uAE30",push:"\uC5C5\uB85C\uB4DC",restore:"\uBCF5\uAD6C\xB7\uC6D0\uBCF5"},qt={running:"\uC9C4\uD589 \uC911",succeeded:"\uC644\uB8CC",failed:"\uC2E4\uD328"},ct=e=>e?new Date(e).toLocaleString("ko-KR",{timeZone:"Asia/Seoul"}):"-";function pt(e){return["confluence-sync \uC2E4\uD589 \uB85C\uADF8",`\uC791\uC5C5: ${dt[e.kind]??e.kind}`,`\uC0C1\uD0DC: ${qt[e.state]??e.state}`,`\uC791\uC5C5 ID: ${e.id}`,`\uC2DC\uC791 (Asia/Seoul): ${ct(e.startedAt)}`,`\uC885\uB8CC (Asia/Seoul): ${ct(e.finishedAt)}`,"",e.log??""].join(`
1
+ function tt(e,n,r={}){if(r.quiet||e==="/api/sync/job")return null;if(e==="/api/sync/staging")return{label:n?.action==="add"?"\uC5C5\uB85C\uB4DC \uBB38\uC11C\uC5D0 \uD3EC\uD568\uD558\uB294 \uC911":n?.action==="remove"?"\uC5C5\uB85C\uB4DC \uC120\uD0DD\uC744 \uD574\uC81C\uD558\uB294 \uC911":"\uB85C\uCEEC \uBCC0\uACBD\uC744 \uD655\uC778\uD558\uB294 \uC911",background:!!r.background,button:n?.action?n.paths?.length===1?null:n.action==="add"?"sync-stage-add":"sync-stage-remove":"sync-stage-scan",region:"sync-stage-list"};let c={"/api/sync/config":["\uC5F0\uACB0 \uC124\uC815\uC744 \uD655\uC778\uD558\uB294 \uC911","sync-load","sync-env-body"],"/api/sync/connect":["\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uD558\uB294 \uC911","sync-connect","sync-env-body"],"/api/sync/env/import":[".env\uB97C \uC77D\uB294 \uC911","sync-env-choose","sync-env-body"],"/api/sync/env/save":[".env \uC800\uC7A5\uC744 \uD655\uC778\uD558\uB294 \uC911","sync-env-save","sync-env-body"],"/api/sync/fetch":["\uC6D0\uACA9 \uBCC0\uACBD\uC744 \uD655\uC778\uD558\uB294 \uC911","sync-fetch","sync-view"],"/api/sync/restore":["\uC6D0\uACA9 \uBCF5\uAD6C \uB300\uC0C1\uC744 \uD655\uC778\uD558\uB294 \uC911",void 0,"sync-view"],"/api/sync/pull":["Confluence\uC5D0\uC11C \uAC00\uC838\uC624\uB294 \uC911","sync-pull-remote","sync-view"],"/api/sync/preview":["\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uACC4\uC0B0\uD558\uB294 \uC911","sync-preview","sync-view"],"/api/sync/push":["Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uD558\uB294 \uC911","sync-push","sync-view"],"/api/sync/diff":[n?.remote?"\uC6D0\uACA9 \uBCF8\uBB38\uC744 \uBE44\uAD50\uD558\uB294 \uC911":"\uC800\uC7A5\uB41C \uAE30\uC900\uBCF8\uC744 \uBE44\uAD50\uD558\uB294 \uC911","sync-diff-remote","sync-diff-dialog"],"/api/document-preview":["\uBB38\uC11C \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uB9CC\uB4DC\uB294 \uC911","document-preview-refresh","document-preview-panel"],"/api/document-format/preview":["\uBB38\uC11C \uC11C\uC2DD\uC744 \uBE44\uAD50\uD558\uB294 \uC911",n?.basic?"document-format-basic":"document-format-review","document-preview-panel"],"/api/table-format/preview":["\uD45C \uC11C\uC2DD\uC744 \uBE44\uAD50\uD558\uB294 \uC911","document-format-review","document-preview-panel"],"/api/table-format/save":["\uBB38\uC11C \uC11C\uC2DD\uC744 \uC800\uC7A5\uD558\uB294 \uC911","table-save","table-review-dialog"],"/api/convert":[n?.preview?"\uBCC0\uD658 \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uB9CC\uB4DC\uB294 \uC911":"\uBB38\uC11C\uC640 \uCCA8\uBD80\uB97C \uBCC0\uD658\uD558\uB294 \uC911",n?.preview?"preview":"save","convert-view"],"/api/pick-folder":["\uC2DC\uC2A4\uD15C \uCC3D\uC5D0\uC11C \uD3F4\uB354\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694",n?.kind==="reference"?"sync-add-reference":n?.kind==="out"?"choose-out":"choose-base",null],"/api/open":["\uACB0\uACFC \uD3F4\uB354\uB97C \uC5EC\uB294 \uC911","open",null]};if(e.startsWith("/api/search"))return{label:"\uBB38\uC11C\uB97C \uAC80\uC0C9\uD558\uB294 \uC911",region:"files"};let[u,l,t]=c[e]??["\uBB38\uC11C \uD3F4\uB354\uB97C \uBD88\uB7EC\uC624\uB294 \uC911",null,"files"];return{label:u,button:l,region:t}}function nt({get:e=r=>document.getElementById(r),now:n=()=>Date.now()}={}){let r=new Map,c=new Map,u=0,l,t=e("activity-panel");function a(p,h){let w=p&&e(p);if(!w)return;let b=c.get(w);h>0?(b||(b={count:0,busy:w.getAttribute("aria-busy")},c.set(w,b)),b.count++,w.setAttribute("aria-busy","true"),w.classList.add("is-loading")):b&&--b.count===0&&(b.busy===null?w.removeAttribute("aria-busy"):w.setAttribute("aria-busy",b.busy),w.classList.remove("is-loading"),c.delete(w))}function i(p){let h=Math.max(0,Math.floor((n()-p.startedAt)/1e3));return h<60?`${h}\uCD08 \uACBD\uACFC`:`${Math.floor(h/60)}\uBD84 ${h%60}\uCD08 \uACBD\uACFC`}function s(){let p=[...r.values()].filter(h=>!h.background).at(-1);p&&t&&(e("activity-elapsed").textContent=i(p))}function g(){let p=[...r.values()].filter(w=>!w.background).at(-1);t&&(t.hidden=!p,p&&(e("activity-title").textContent=p.label,e("activity-detail").textContent=p.detail||"\uCC98\uB9AC\uAC00 \uB05D\uB098\uBA74 \uACB0\uACFC\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.",t.classList.toggle("is-uncertain",p.uncertain===!0),e("activity-link").hidden=!p.link,p.link&&e("activity-link").setAttribute("href",p.link)));let h=e("sync-stage-checking");if(h){let w=[...r.values()].some(b=>b.background&&b.visible);h.classList.toggle("is-checking",w),h.setAttribute("aria-hidden",String(!w))}p&&!l&&(l=setInterval(s,1e3)),!p&&l&&(clearInterval(l),l=void 0),s()}function E(p){let h=++u,w=Date.parse(p.startedAt),b={...p,startedAt:Number.isFinite(w)?w:n(),visible:!1};return r.set(h,b),b.background?b.delay=setTimeout(()=>{r.has(h)&&(b.visible=!0,g())},350):(a(b.button,1),a(b.region,1)),g(),{update(y){if(!r.has(h))return;let I=Date.parse(y.startedAt);Object.assign(b,y,{startedAt:Number.isFinite(I)?I:b.startedAt}),g()},end(){r.delete(h)&&(clearTimeout(b.delay),b.background||(a(b.button,-1),a(b.region,-1)),g())}}}return{begin:E}}var ze=async e=>Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",e))).map(n=>n.toString(16).padStart(2,"0")).join(""),Bt=e=>!e.split("/").some((n,r)=>n==="node_modules"||n===".git"||n.startsWith(".")&&!(r===0&&[".csync",".env",".confluence-sync.json",".confluence-workspace.json",".confluence-syncignore"].includes(n)));function He(e,n){let r=e.find(u=>n.startsWith(u.virtual+"/"));if(!r)throw Error("\uC120\uD0DD\uD55C \uD3F4\uB354 \uBC16\uC758 \uD30C\uC77C\uC785\uB2C8\uB2E4.");let c=n.slice(r.virtual.length+1).split("/");if(c.some(u=>!u||u==="."||u===".."||u.includes("\\")))throw Error("\uC798\uBABB\uB41C \uD30C\uC77C \uACBD\uB85C\uC785\uB2C8\uB2E4.");return{mount:r,parts:c}}async function je(e,n,r=!1){let{mount:c,parts:u}=He(e,n),l=c.handle;for(let t of u.slice(0,-1))l=await l.getDirectoryHandle(t,{create:r});return{directory:l,name:u.at(-1),handle:await l.getFileHandle(u.at(-1),{create:r})}}var Ft=e=>e.name==="NotFoundError";async function Je(e,n){try{return new Uint8Array(await(await(await je(e,n)).handle.getFile()).arrayBuffer())}catch(r){if(Ft(r))return null;throw r}}async function ot(e,n,r){let{handle:c}=await je(e,n,!0),u=await c.createWritable();try{await u.write(r),await u.close()}catch(l){throw await u.abort().catch(()=>{}),l}}async function at(e,n){let{directory:r,name:c}=await je(e,n);await r.removeEntry(c)}async function Dt(e,n=new Map,r=!1){let c=[],u=0;async function l(t,a,i=[]){for await(let[s,g]of a.entries()){let E=[...i,s].join("/");if(t.readonly&&E===".env"||!Bt(E))continue;if(g.kind==="directory"){await l(t,g,[...i,s]);continue}let p=await g.getFile();if(u+=p.size,p.size>104857600||u>536870912||c.length>=2e4)throw Error("\uC791\uC5C5\uACF5\uAC04 \uD55C\uB3C4\uB97C \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4(\uD30C\uC77C 100MiB, \uC804\uCCB4 512MiB, 20,000\uAC1C).");let h=t.virtual+"/"+E,w=`${p.size}:${p.lastModified}`,b=n.get(h),y=!r&&b?.stamp===w?b.hash:await ze(await p.arrayBuffer());n.set(h,{stamp:w,hash:y}),c.push({path:h,size:p.size,hash:y,file:p})}}for(let t of e)await l(t,t.handle);return c.sort((t,a)=>t.path<a.path?-1:t.path>a.path?1:0)}async function qt(e,n,r,c){let u=new Map(n.map(a=>[a.path,a.hash])),l=[],t=[...r.files.map(a=>({...a,remove:!1})),...r.removed.map(a=>({path:a,remove:!0}))];t.sort((a,i)=>(a.path.includes("/.csync/")?3:a.path.endsWith(".md")?2:1)-(i.path.includes("/.csync/")?3:i.path.endsWith(".md")?2:1));for(let a of t){let{mount:i}=He(e,a.path);if(i.readonly)throw Error("\uCC38\uC870 \uD3F4\uB354\uB294 \uC218\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.");let s=await Je(e,a.path),g=s?await ze(s):void 0;if(!a.remove&&g===a.hash||a.remove&&!s){a.skip=!0;continue}if(g!==u.get(a.path))throw Error(`\uC791\uC5C5 \uC911 \uB85C\uCEEC \uD30C\uC77C\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4: ${a.path}`);if(a.before=s,a.beforeHash=g,!a.remove&&(a.bytes=new Uint8Array(await c(a.path)),await ze(a.bytes)!==a.hash))throw Error("\uACB0\uACFC \uD30C\uC77C\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.")}try{for(let a of t){if(a.skip)continue;let i=await Je(e,a.path);if((i?await ze(i):void 0)!==a.beforeHash)throw Error(`\uC800\uC7A5 \uC9C1\uC804 \uB85C\uCEEC \uD30C\uC77C\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4: ${a.path}`);l.push(a),a.remove?i&&await at(e,a.path):await ot(e,a.path,a.bytes)}}catch(a){let i=[];for(let s of l.reverse())try{let g=await Je(e,s.path),E=g?await ze(g):void 0;if(E===s.beforeHash)continue;if(E!==(s.remove?void 0:s.hash)){i.push(s.path);continue}s.before?await ot(e,s.path,s.before):g&&await at(e,s.path)}catch{i.push(s.path)}throw i.length?Error(`${a.message} \uCD94\uAC00 \uD3B8\uC9D1 \uB610\uB294 \uBCF5\uC6D0 \uC2E4\uD328\uB85C \uD655\uC778\uC774 \uD544\uC694\uD55C \uD30C\uC77C: ${i.join(", ")}`):a}for(let a of r.removed){let{mount:i,parts:s}=He(e,a);for(s.pop();s.length;)try{let g=i.handle;for(let h of s.slice(0,-1))g=await g.getDirectoryHandle(h);let E=await g.getDirectoryHandle(s.at(-1)),p=!0;for await(let h of E.entries()){p=!1;break}if(!p)break;await g.removeEntry(s.at(-1)),s.pop()}catch{break}}}function Ut(){return new Promise((e,n)=>{let r=indexedDB.open("csync.browser-folders",1);r.onupgradeneeded=()=>r.result.createObjectStore("workspace"),r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)})}async function Wt(e,n="active"){let r=await Ut();try{return await new Promise((c,u)=>{let l=r.transaction("workspace",e===void 0?"readonly":"readwrite"),t=l.objectStore("workspace"),a=e===void 0?t.get(n):e===null?t.delete(n):t.put(e,n),i;a.onsuccess=()=>{i=a.result},l.oncomplete=()=>c(i),l.onerror=()=>u(l.error)})}finally{r.close()}}function Ve(e=globalThis.localStorage){try{return JSON.parse(e?.getItem("csync.workspace.v1"))?.mode==="sync"?"sync":"convert"}catch{return"convert"}}function Ke({document:e=globalThis.document,window:n=globalThis.window,location:r=globalThis.location,storage:c=globalThis.sessionStorage,fetch:u=globalThis.fetch,remember:l=Wt,pickDirectory:t=i=>n.showDirectoryPicker(i),workspaceMode:a="convert"}={}){let i=m=>e.getElementById(m),s=i("browser-folder-dialog"),g=i("browser-folder-status"),E=i("browser-apply-dialog"),p,h=[],w=[],b=!1,y=Promise.resolve(),I=new Map,L,A=!1,N=new Promise(m=>{L=m}),R="csync.browser-session.v2."+(a==="sync"?"sync":"convert"),O=!1,q=m=>{let d=y.catch(()=>{}).then(m);return y=d,d},B=async()=>{c.setItem(R,JSON.stringify(p)),await l({mounts:h,baseline:w},p.id)},X=async(m,d=!1)=>{let v=d?"read":"readwrite";if(await m.queryPermission({mode:v})!=="granted"&&await m.requestPermission({mode:v})!=="granted")throw Error("\uC120\uD0DD\uD55C \uD3F4\uB354\uC758 \uC77D\uAE30\xB7\uC4F0\uAE30 \uAD8C\uD55C\uC744 \uD5C8\uC6A9\uD558\uC138\uC694.")};async function W(m,d,v=d?"POST":"GET"){let S=await u(m,{method:v,credentials:"omit",headers:{...p?{"X-Csync-Session":p.id,"X-Csync-Token":p.token}:{},...d?{"Content-Type":"application/json"}:{}},...d?{body:JSON.stringify(d)}:{}}),o=await S.json();if(!S.ok)throw Object.assign(Error(o.error||"\uC791\uC5C5 \uC694\uCCAD\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."),{code:o.code,status:S.status,conflicts:o.conflicts,inPlace:o.inPlace,output:o.output});return o}let $=()=>({"X-Csync-Session":p.id,"X-Csync-Token":p.token});async function H(){let m=await W("/api/browser/changes");if(!(!m.files.length&&!m.removed.length))try{A=!0,await qt(h,w,m,async d=>{let v=await u("/api/browser/file?path="+encodeURIComponent(d),{headers:$(),credentials:"omit"});if(!v.ok)throw Error("\uACB0\uACFC \uD30C\uC77C\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.");return v.arrayBuffer()}),await W("/api/browser/ack",{files:m.snapshot}),w=m.snapshot,I.clear(),await B(),A=!1,E.close()}catch(d){throw i("browser-apply-status").textContent=d.message,E.open||E.showModal(),d}}i("browser-apply-retry").onclick=async()=>{if(!b)try{for(let m of h)m.readonly||await X(m.handle);await q(H)}catch(m){i("browser-apply-status").textContent=m.message}},E.addEventListener("cancel",m=>m.preventDefault());async function ae(m=!1){if(A)throw Error("\uBCF4\uB958 \uC911\uC778 \uB85C\uCEEC \uD30C\uC77C \uC801\uC6A9\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");await H();let d=await Dt(h,I,m),v=d.map(({path:o,size:M,hash:J})=>({path:o,size:M,hash:J}));if(JSON.stringify(v)===JSON.stringify(w))return;let S=await W("/api/browser/mirror",{files:v});for(let o of S.uploads){let M=d.find(j=>j.path===o.path),J=await u("/api/browser/file?path="+encodeURIComponent(o.path),{method:"PUT",headers:$(),credentials:"omit",body:M.file});if(!J.ok){let j=await J.json();throw Error(j.error||"\uD30C\uC77C \uC804\uC1A1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.")}}await W("/api/browser/commit",{}),w=v,await B()}let te=()=>{i("workspace-interface").inert=!1,i("local-connection-status").textContent=h[0].handle.name+" \xB7 \uBE0C\uB77C\uC6B0\uC800 \uD3F4\uB354",s.close(),L()},G=async()=>{await ae(),te()},pe=async()=>{b=(await W("/api/sync/job")).job?.state==="running",b?te():await G()};async function oe(m){if(b||A)throw Error("\uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");i("browser-folder-open").disabled=!0,g.textContent="\uC120\uD0DD\uD55C \uBB38\uC11C\xB7\uCCA8\uBD80\uB97C \uC784\uC2DC \uC791\uC5C5\uACF5\uAC04\uC5D0 \uC900\uBE44\uD558\uB294 \uC911\u2026";try{return p&&(await H(),await W("/api/browser/session",void 0,"DELETE"),await l(null,p.id)),p=await W("/api/browser/session",{name:m.name}),O=!0,h=[{virtual:p.base,handle:m}],w=[],I.clear(),await B(),await G(),{path:p.base}}finally{i("browser-folder-open").disabled=!1}}let z=async(m,d)=>{if(b||A)throw Error("\uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");if(m==="out"&&await h[0].handle.isSameEntry(d))return{path:p.base};for(let S of h)if(!(m==="out"&&S.virtual===p.output)){if(m==="reference"&&S.readonly&&await S.handle.isSameEntry(d))return{path:S.virtual};if(await S.handle.isSameEntry(d)||await S.handle.resolve(d)!==null||await d.resolve(S.handle)!==null)throw Error("\uBB38\uC11C\xB7\uCD9C\uB825\xB7\uCC38\uC870 \uD3F4\uB354\uB294 \uC11C\uB85C \uACB9\uCE58\uC9C0 \uC54A\uB294 \uBCC4\uB3C4 \uD3F4\uB354\uB85C \uC120\uD0DD\uD558\uC138\uC694.")}let v=m==="out"?p.output:(await W("/api/browser/mount",{kind:"reference"})).path;return h=h.filter(S=>S.virtual!==v),h.push({virtual:v,handle:d,readonly:m==="reference"}),await B(),await ae(),{path:v}},k=async m=>{let d=m==="base"?h[0]:m==="out"?h.find(S=>S.virtual===i("out-input").dataset?.path)||h.find(S=>S.virtual===p?.output)||h[0]:h.filter(S=>S.readonly).at(-1)||h[0],v=await t({id:"csync-"+(a==="sync"?"sync":"convert")+"-"+m,mode:m==="reference"?"read":"readwrite",...d?{startIn:d.handle}:{}});return await X(v,m==="reference"),q(()=>m==="base"?oe(v):z(m,v))};async function P(m,d){if(A)throw Error("\uBCF4\uB958 \uC911\uC778 \uB85C\uCEEC \uD30C\uC77C \uC801\uC6A9\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");let v=m.split("?")[0],S=d.body?JSON.parse(d.body):void 0;if(v==="/api/open")return{ok:!0,name:(S.path?.startsWith(p.base)?h[0]:h.find(M=>M.virtual===p.output))?.handle.name??"\uCD9C\uB825 \uD3F4\uB354"};if(v==="/api/convert"&&!S.preview&&S.out!==S.base&&!h.some(M=>M.virtual===p.output))throw Error("\uBCC0\uD658 \uACB0\uACFC\uB97C \uC800\uC7A5\uD560 \uCD9C\uB825 \uD3F4\uB354\uB97C \uBA3C\uC800 \uC120\uD0DD\uD558\uC138\uC694.");v!=="/api/sync/job"&&!b&&await ae(v!=="/api/sync/staging");let o;try{o=await W(m,S,d.method??(S?"POST":"GET"))}catch(M){throw b||await H(),M}return o.job&&(b=o.job.state==="running"),b||await H(),o}let x=(m,d={})=>{if(m==="/api/pick-folder"){let{kind:S}=JSON.parse(d.body);return(async()=>{if(b||A)throw Error("\uC9C4\uD589 \uC911\uC778 \uC791\uC5C5\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");return S==="base"?new Response(JSON.stringify(await k("base"))):new Response(JSON.stringify(await k(S)))})()}return q(()=>P(m,d)).then(S=>new Response(JSON.stringify(S))).catch(S=>new Response(JSON.stringify({error:S.message,code:S.code,conflicts:S.conflicts,inPlace:S.inPlace,output:S.output}),{status:S.status??400}))};i("local-disconnect").hidden=!1,i("local-disconnect").textContent="\uD3F4\uB354 \uC5F0\uACB0 \uD574\uC81C",i("local-disconnect").onclick=()=>q(async()=>{try{if(b||A)throw Error("\uC791\uC5C5\uACFC \uB85C\uCEEC \uD30C\uC77C \uC801\uC6A9\uC744 \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.");p&&(await W("/api/browser/session",void 0,"DELETE"),await l(null,p.id)),c.removeItem(R),r.reload()}catch(m){g.textContent=m.message,s.showModal()}});let C=i("out-mode-hint");return C&&(C.textContent="\uBCC4\uB3C4 \uD3F4\uB354 \uB610\uB294 \uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30"),i("workspace-interface").inert=!0,s.addEventListener("cancel",m=>m.preventDefault()),i("root-path-editor").hidden=!0,i("out-input").readOnly=!0,i("out-input").placeholder="\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uCD9C\uB825 \uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694",i("open").textContent="\uC800\uC7A5 \uC704\uCE58 \uD655\uC778",i("browser-folder-open").onclick=()=>k("base").catch(m=>{m.name!=="AbortError"&&(g.textContent=m.message)}),i("browser-folder-resume").onclick=async()=>{try{for(let m of h)await X(m.handle,m.readonly);await q(pe)}catch(m){g.textContent=m.message}},n.addEventListener("beforeunload",m=>{(b||A)&&(m.preventDefault(),m.returnValue="")}),!n.isSecureContext||!n.showDirectoryPicker?(g.textContent="\uD3F4\uB354 \uC77D\uAE30\xB7\uC4F0\uAE30\uB97C \uC9C0\uC6D0\uD558\uB294 \uB370\uC2A4\uD06C\uD1B1 Chrome \uB610\uB294 Edge\uC5D0\uC11C HTTPS \uC8FC\uC18C\uB85C \uC811\uC18D\uD558\uC138\uC694.",i("browser-folder-open").disabled=!0,s.showModal()):(i("local-connection-status").textContent="\uC800\uC7A5\uB41C \uD3F4\uB354 \uC5F0\uACB0\uC744 \uD655\uC778\uD558\uB294 \uC911\u2026",q(async()=>{let m;try{let v=c.getItem(R);v||(v=c.getItem("csync.browser-session.v1"),v&&(c.setItem(R,v),c.removeItem("csync.browser-session.v1"))),p=JSON.parse(v??"null"),m=p?await l(void 0,p.id):void 0}catch{g.textContent="\uC800\uC7A5\uB41C \uD3F4\uB354 \uC5F0\uACB0 \uC815\uBCF4\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD3F4\uB354\uB97C \uB2E4\uC2DC \uC120\uD0DD\uD558\uC138\uC694."}if(!p||!m?.mounts?.length){i("local-connection-status").textContent="\uBE0C\uB77C\uC6B0\uC800 \uD3F4\uB354 \uC120\uD0DD \uD544\uC694",s.showModal();return}h=m.mounts,w=m.baseline??[];let d=!0;for(let v of h)await v.handle.queryPermission({mode:v.readonly?"read":"readwrite"})!=="granted"&&(d=!1);if(!d){i("local-connection-status").textContent="\uD3F4\uB354 \uC811\uADFC \uAD8C\uD55C \uD655\uC778 \uD544\uC694",i("browser-folder-resume").hidden=!1,g.textContent="\uC774\uC804\uC5D0 \uC120\uD0DD\uD55C \uD3F4\uB354\uAC00 \uC800\uC7A5\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC120\uD0DD\uD560 \uD544\uC694 \uC5C6\uC774 \uC811\uADFC \uAD8C\uD55C\uC744 \uD5C8\uC6A9\uD558\uC138\uC694.",s.showModal();return}i("local-connection-status").textContent=h[0].handle.name+" \xB7 \uC5F0\uACB0\uC744 \uBCF5\uC6D0\uD558\uB294 \uC911\u2026";try{await pe()}catch(v){[401,410].includes(v.status)?(await l(null,p.id),p=void 0,w=[],c.removeItem(R),g.textContent="\uC791\uC5C5\uACF5\uAC04\uC744 \uB2E4\uC2DC \uC5F0\uACB0\uD574\uC57C \uD569\uB2C8\uB2E4. \uD3F4\uB354\uB97C \uB2E4\uC2DC \uC120\uD0DD\uD558\uC138\uC694."):g.textContent="\uC774\uC804 \uD3F4\uB354 \uC5F0\uACB0\uC744 \uBCF5\uC6D0\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: "+v.message,i("local-connection-status").textContent="\uD3F4\uB354 \uC5F0\uACB0 \uD655\uC778 \uD544\uC694",s.showModal()}}).catch(m=>{g.textContent=m.message,i("local-connection-status").textContent="\uD3F4\uB354 \uC5F0\uACB0 \uD655\uC778 \uD544\uC694",s.showModal()})),{ready:N,request:x,browser:!0,remote:!1,newBaseSelected:()=>O,folderName:m=>h.find(d=>d.virtual===m)?.handle.name??""}}async function rt({bytes:e,pages:n,dryRun:r}){let{getDocument:c,GlobalWorkerOptions:u,VerbosityLevel:l}=await import("./chunks/pdf-DDN7TXTP.js");u.workerSrc="/assets/pdf.worker.min.mjs";let t=c({data:e,cMapUrl:"/assets/pdf/cmaps/",cMapPacked:!0,standardFontDataUrl:"/assets/pdf/standard_fonts/",wasmUrl:"/assets/pdf/wasm/",useSystemFonts:!1,verbosity:l.ERRORS});try{let a=await t.promise;for(let s of n)if(!Number.isInteger(s)||s<1||s>a.numPages)throw Error(`PDF \uCABD \uBC94\uC704 \uCD08\uACFC: ${s} (\uCD1D ${a.numPages}\uCABD)`);if(r)return[];let i=[];for(let s of n){let g=await a.getPage(s),E=g.getViewport({scale:160/72}),p=document.createElement("canvas");p.width=Math.ceil(E.width),p.height=Math.ceil(E.height);try{await g.render({canvas:p,canvasContext:p.getContext("2d"),viewport:E}).promise;let h=await new Promise((w,b)=>p.toBlob(y=>y?w(y):b(Error("PDF \uC774\uBBF8\uC9C0\uB97C \uC800\uC7A5\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.")),"image/png"));i.push(await h.arrayBuffer())}finally{g.cleanup(),p.width=p.height=1}}return i}finally{await t.destroy()}}function it({worker:e=new Worker("/assets/workspace.worker.js",{type:"module"}),timeoutMs:n=18e4}={}){let r=0,c=!1,u=new Map,l=t=>{c=!0;for(let a of u.values())clearTimeout(a.timer),a.reject(Error(t));u.clear()};return e.addEventListener("error",()=>l("\uBE0C\uB77C\uC6B0\uC800 \uC2E4\uD589\uAE30\uB97C \uC2DC\uC791\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD398\uC774\uC9C0\uB97C \uC0C8\uB85C\uACE0\uCE68\uD558\uC138\uC694.")),e.addEventListener("message",async({data:t})=>{if(t.kind==="pdf"){try{let i=await rt(t.request);e.postMessage({kind:"pdf-result",id:t.id,pages:i},i)}catch(i){e.postMessage({kind:"pdf-result",id:t.id,error:i.message})}return}let a=u.get(t.id);a&&(u.delete(t.id),clearTimeout(a.timer),t.error?a.reject(Error(t.error)):a.resolve(new Response(t.body,{status:t.status,headers:t.headers})))}),async(t,a={})=>{if(c)throw Error("\uBE0C\uB77C\uC6B0\uC800 \uC2E4\uD589\uAE30\uAC00 \uC911\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uD398\uC774\uC9C0\uB97C \uC0C8\uB85C\uACE0\uCE68\uD558\uC138\uC694.");let i=new URL(t,"https://local.invalid");if(i.origin!=="https://local.invalid"||!i.pathname.startsWith("/api/"))throw Error("\uC798\uBABB\uB41C \uBE0C\uB77C\uC6B0\uC800 \uC694\uCCAD\uC785\uB2C8\uB2E4.");let s=a.body;s instanceof Blob&&(s=await s.arrayBuffer());let g=++r;return new Promise((E,p)=>{let h=setTimeout(()=>{u.delete(g),p(Error("\uBE0C\uB77C\uC6B0\uC800 \uC694\uCCAD\uC774 \uC9C0\uC5F0\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uC791\uC5C5 \uB0B4\uC5ED\uC744 \uD655\uC778\uD55C \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694."))},n);u.set(g,{resolve:E,reject:p,timer:h}),e.postMessage({id:g,path:t,method:a.method??"GET",headers:Object.fromEntries(new Headers(a.headers)),body:s},s instanceof ArrayBuffer?[s]:[])})}}function Jt(e){let n=new URL(e);if(n.protocol!=="http:"||!["127.0.0.1","localhost","[::1]"].includes(n.hostname)||n.username||n.password||n.pathname!=="/"||n.search||n.hash)throw new Error("\uB85C\uCEEC \uC2E4\uD589\uAE30 \uC8FC\uC18C\uB294 http://127.0.0.1:\uD3EC\uD2B8 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.");return n.origin}function st({document:e=globalThis.document,location:n=globalThis.location,history:r=globalThis.history,storage:c=globalThis.sessionStorage,fetch:u=globalThis.fetch}={}){let l=new URLSearchParams(n.hash?.slice(1)).has("csyncEndpoint")||c?.getItem("csync.connector.v1");if(e.querySelector('meta[name="csync-runtime"]')?.content==="standalone"&&!l)return{...Ke({fetch:it(),workspaceMode:Ve()}),standalone:!0};if(e.querySelector('meta[name="csync-runtime"]')?.content==="browser")return Ke({workspaceMode:Ve()});let t=O=>e.getElementById(O),a=e.querySelector('meta[name="csync-token"]').content,i=a?{endpoint:"",token:a}:null,s,g=i?Promise.resolve():new Promise(O=>{s=O}),E="csync.connector.v1",p=(O,q={})=>{if(!i)throw new Error("\uBA3C\uC800 \uB85C\uCEEC \uC2E4\uD589\uAE30\uB97C \uC5F0\uACB0\uD558\uC138\uC694.");if(!O.startsWith("/api/")||O.startsWith("//"))throw new Error("\uB85C\uCEEC API \uACBD\uB85C\uB97C \uD655\uC778\uD558\uC138\uC694.");return u(i.endpoint+O,{...q,headers:{...q.headers,"X-Csync-Token":i.token},credentials:"omit",redirect:"error",...i.endpoint?{targetAddressSpace:"loopback"}:{}})},h=()=>{try{c.removeItem(E)}catch{}i=null,n.reload()};if(t("local-disconnect").onclick=h,i)return{ready:g,request:p,remote:!1};t("local-disconnect").hidden=!1;let w=t("local-connect-dialog"),b=t("local-connect-form"),y=t("local-connect-note");t("local-connect-command").textContent=`csync web --ui ${JSON.stringify(n.origin+n.pathname)} --base "/\uBB38\uC11C\uD3F4\uB354"`;let I=!1;async function L(O,q){if(!I){I=!0,t("local-connect-submit").disabled=!0,y.textContent="\uB85C\uCEEC \uC2E4\uD589\uAE30\uC5D0 \uC5F0\uACB0\uD558\uB294 \uC911\u2026";try{if(O=Jt(O),!/^[a-f0-9]{64}$/.test(q))throw new Error("csync\uAC00 \uCD9C\uB825\uD55C \uC5F0\uACB0 \uB9C1\uD06C\uB97C \uC0AC\uC6A9\uD558\uAC70\uB098 \uC5F0\uACB0 \uD0A4\uB97C \uC785\uB825\uD558\uC138\uC694.");let B=await u(O+"/api/connection",{headers:{"X-Csync-Token":q},credentials:"omit",redirect:"error",targetAddressSpace:"loopback",signal:AbortSignal.timeout(15e3)}),X=await B.json();if(!B.ok)throw new Error(X.error||"\uC5F0\uACB0 \uAD8C\uD55C\uC744 \uD655\uC778\uD558\uC138\uC694.");if(X.mode!=="connector")throw new Error("csync web --ui\uB85C \uC2E4\uD589\uD55C \uB85C\uCEEC \uC2E4\uD589\uAE30\uC5D0 \uC5F0\uACB0\uD558\uC138\uC694.");let W=e.querySelector('meta[name="csync-version"]').content;if(X.version!==W)throw new Error(`\uC6F9(v${W})\uACFC \uB85C\uCEEC \uC2E4\uD589\uAE30(v${X.version}) \uBC84\uC804\uC774 \uB2E4\uB985\uB2C8\uB2E4. \uAC19\uC740 \uBC84\uC804\uC73C\uB85C \uC2E4\uD589\uD558\uC138\uC694.`);i={endpoint:O,token:q};try{c.setItem(E,JSON.stringify(i))}catch{}t("local-connection-status").textContent="\uB0B4 \uCEF4\uD4E8\uD130\uC5D0 \uC5F0\uACB0\uB428",w.close(),t("workspace-interface").inert=!1,s()}catch(B){i=null;try{c.removeItem(E)}catch{}y.textContent=B.name==="TypeError"||B.name==="TimeoutError"?"\uC5F0\uACB0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC csync \uC2E4\uD589 \uC5EC\uBD80\uC640 \uBE0C\uB77C\uC6B0\uC800\uC758 \uB85C\uCEEC \uB124\uD2B8\uC6CC\uD06C \uC811\uADFC \uAD8C\uD55C\uC744 \uD655\uC778\uD558\uC138\uC694.":B.message,w.showModal()}finally{I=!1,t("local-connect-submit").disabled=!1}}}w.addEventListener("cancel",O=>O.preventDefault()),b.onsubmit=O=>(O.preventDefault(),L(t("local-connect-endpoint").value.trim(),t("local-connect-token").value.trim())),t("workspace-interface").inert=!0;let A=new URLSearchParams(n.hash.slice(1)),N=A.get("csyncEndpoint"),R=A.get("csyncToken");if(N!==null||R!==null)r.replaceState(null,"",n.pathname+n.search),t("local-connect-endpoint").value=N??"",t("local-connect-token").value=R??"",w.showModal();else{let O;try{O=JSON.parse(c.getItem(E))}catch{}O?.endpoint&&O?.token?L(O.endpoint,O.token):w.showModal()}return{ready:g,request:p,remote:!0}}function ct(e=globalThis.document){let n=l=>e.getElementById(l),r=n("overwrite-dialog"),c,u=l=>{let t=c;c=void 0,r.close(),t?.(l)};return n("overwrite-cancel").onclick=()=>u(!1),n("overwrite-confirm").onclick=()=>u(!0),r.addEventListener("cancel",l=>{l.preventDefault(),u(!1)}),r.addEventListener("close",()=>{let l=c;c=void 0,l?.(!1)}),({conflicts:l,inPlace:t,output:a})=>{if(c)throw Error("\uB36E\uC5B4\uC4F0\uAE30 \uD655\uC778\uC774 \uC774\uBBF8 \uC9C4\uD589 \uC911\uC785\uB2C8\uB2E4.");return n("overwrite-title").textContent=`${t?"\uC6D0\uBCF8":"\uAE30\uC874"} \uD30C\uC77C ${l.length}\uAC1C \uB36E\uC5B4\uC4F0\uAE30`,n("overwrite-path").textContent=a,n("overwrite-warning").textContent=`${t?"\uC120\uD0DD\uD55C \uC6D0\uBCF8":"\uCD9C\uB825 \uD3F4\uB354\uC758 \uAE30\uC874"} \uB0B4\uC6A9\uC774 \uBCC0\uD658 \uACB0\uACFC\uB85C \uAD50\uCCB4\uB429\uB2C8\uB2E4.${t?" \uD655\uC778 \uC774\uD6C4 \uC6D0\uBCF8\uC774 \uBC14\uB00C\uBA74 \uC800\uC7A5\uC744 \uC911\uB2E8\uD569\uB2C8\uB2E4.":""} \uCDE8\uC18C\uD558\uBA74 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.`,n("overwrite-files").replaceChildren(...l.map(({path:i})=>{let s=e.createElement("li");return s.textContent=i,s})),new Promise(i=>{c=i,r.showModal(),n("overwrite-cancel").focus()})}}function lt(){let e=document.getElementById("snackbars"),n=new Map;return function(c,u="info"){let l=u+":"+c;if(!c||n.has(l))return;let t={error:["\uC791\uC5C5\uC744 \uC644\uB8CC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4","!","\uC624\uB958"],success:["\uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4","\u2713","\uC131\uACF5"],warning:["\uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4","!","\uC8FC\uC758"],info:["\uC548\uB0B4","i","\uC548\uB0B4"]}[u],a=document.createElement("div");a.className="snackbar snackbar-"+u,a.setAttribute("role",u==="error"||u==="warning"?"alert":"status");let i=document.createElement("span");i.className="snackbar-icon",i.textContent=t[1],i.setAttribute("aria-hidden","true");let s=document.createElement("div");s.className="snackbar-content";let g=document.createElement("strong");g.textContent=t[0];let E=document.createElement("p");E.textContent=c,s.append(g,E);let p=document.createElement("button");p.type="button",p.className="snackbar-close",p.textContent="\xD7",p.setAttribute("aria-label",t[2]+" \uC54C\uB9BC \uB2EB\uAE30"),p.onclick=()=>{a.remove(),n.delete(l)},a.append(i,s,p),n.set(l,a),e.append(a)}}function dt(e){let n=document.getElementById("help-dialog");document.getElementById("open-help").addEventListener("click",()=>{n.showModal(),document.getElementById("help-"+e()).scrollIntoView({block:"start"})}),document.getElementById("open-token-guide").addEventListener("click",()=>{n.showModal(),document.getElementById("help-token").scrollIntoView({block:"start"})}),n.querySelectorAll(".help-nav a").forEach(r=>{r.addEventListener("click",c=>{c.preventDefault(),document.querySelector(r.getAttribute("href")).scrollIntoView({block:"start"})})})}var Xe;function Re(){return Xe??=import("./chunks/monaco-36ZGUH4Y.js").catch(e=>{throw Xe=void 0,Error("\uBCF8\uBB38 \uBE44\uAD50 \uB3C4\uAD6C\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694. "+e.message)}),Xe}function ft(e,n){let r=URL.createObjectURL(new Blob([n],{type:"text/plain;charset=utf-8"})),c=document.createElement("a");try{c.href=r,c.download=e,document.body.append(c),c.click()}finally{c.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}}var ut={preview:"\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30",fetch:"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778",pull:"\uAC00\uC838\uC624\uAE30",push:"\uC5C5\uB85C\uB4DC",restore:"\uBCF5\uAD6C\xB7\uC6D0\uBCF5"},Ht={running:"\uC9C4\uD589 \uC911",succeeded:"\uC644\uB8CC",failed:"\uC2E4\uD328"},pt=e=>e?new Date(e).toLocaleString("ko-KR",{timeZone:"Asia/Seoul"}):"-";function gt(e){return["confluence-sync \uC2E4\uD589 \uB85C\uADF8",`\uC791\uC5C5: ${ut[e.kind]??e.kind}`,`\uC0C1\uD0DC: ${Ht[e.state]??e.state}`,`\uC791\uC5C5 ID: ${e.id}`,`\uC2DC\uC791 (Asia/Seoul): ${pt(e.startedAt)}`,`\uC885\uB8CC (Asia/Seoul): ${pt(e.finishedAt)}`,"",e.log??""].join(`
2
2
  `)+`
3
- `}function ft(e){let n=Object.hasOwn(dt,e.kind)?e.kind:"job",i=String(e.id??"").replace(/[^a-zA-Z0-9-]/g,"").slice(0,36)||"current";return`csync-${n}-${i}.log`}function ut({api:e,selection:n,setBusy:i,isBusy:c,status:d,start:l}){let t=g=>document.getElementById(g),o=t("sync-restore-dialog"),u,s=()=>JSON.stringify(n());function m(){u=void 0,o.close()}async function y(g,v){if(c())return;let x=s(),w=n();i(!0);try{let b=await e("/api/sync/restore",{...w,path:g,overwrite:v});if(x!==s())return;u={request:w,confirmationId:b.confirmationId,identity:x},t("sync-restore-title").textContent=v?"\uB85C\uCEEC \uC218\uC815\uC744 \uBC84\uB9AC\uACE0 \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uB418\uB3CC\uB9B4\uAE4C\uC694?":"\uB204\uB77D\uB41C \uBB38\uC11C\uB97C \uC6D0\uACA9\uC5D0\uC11C \uB2E4\uC2DC \uBC1B\uC744\uAE4C\uC694?",t("sync-restore-path").textContent=b.path,t("sync-restore-warning").textContent=v?"\uC774 \uBB38\uC11C\uC640 \uC6D0\uACA9\uC5D0\uC11C \uCC38\uC870\uD558\uB294 \uCCA8\uBD80\uC758 \uB85C\uCEEC \uC218\uC815\uC774 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4. \uC6D0\uACA9 \uCD5C\uC2E0 \uB0B4\uC6A9\uC73C\uB85C \uAD50\uCCB4\uD558\uBA70 \uB2E4\uB978 \uBB38\uC11C\uB294 \uC720\uC9C0\uD569\uB2C8\uB2E4.":"\uC9C0\uC815\uD55C \uBB38\uC11C\uC640 \uCC38\uC870 \uCCA8\uBD80\uB9CC \uB2E4\uC2DC \uBC1B\uC2B5\uB2C8\uB2E4. \uAE30\uC874 \uD30C\uC77C\uACFC \uB0B4\uC6A9\uC774 \uB2E4\uB978 \uAE30\uC874 \uCCA8\uBD80\uB294 \uB36E\uC5B4\uC4F0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",t("sync-restore-warning").textContent+=` \uAC00\uC838\uC624\uAE30 \uD615\uC2DD: ${w.format==="obsidian"?"Obsidian":"Markdown"}.`,t("sync-restore-confirm").textContent=v?"\uB85C\uCEEC \uC218\uC815 \uBC84\uB9AC\uACE0 \uC6D0\uBCF5":"\uC6D0\uACA9\uC5D0\uC11C \uBCF5\uAD6C",o.showModal(),t("sync-restore-cancel").focus()}catch(b){d(b.message,!0)}finally{i(!1)}}return t("sync-restore-cancel").onclick=m,o.addEventListener("cancel",m),t("sync-restore-confirm").onclick=async()=>{if(!u||c())return;if(u.identity!==s()){m(),d("\uB300\uC0C1\uC774\uB098 \uC5F0\uACB0 \uC124\uC815\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4. \uBCF5\uAD6C \uB300\uC0C1\uC744 \uB2E4\uC2DC \uC120\uD0DD\uD558\uC138\uC694.",!0);return}let g=u;m(),await l("restore",{...g.request,confirmationId:g.confirmationId})},{open:y}}function gt({api:e,selection:n,monaco:i,loadMonaco:c=async()=>i,notify:d}){let l=v=>document.getElementById(v),t="",o=0,u,s,m;function y(){o++,l("sync-diff-dialog").close()}l("sync-diff-close").onclick=y,l("sync-diff-dialog").addEventListener("cancel",()=>{o++});async function g(v=!1){let x=++o,w={...n(),path:t,remote:v};l("sync-diff-note").textContent=v?"\uC120\uD0DD\uD55C \uD398\uC774\uC9C0 \uBCF8\uBB38\uB9CC \uC870\uD68C\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":"\uC800\uC7A5\uB41C \uB85C\uCEEC \uBE44\uAD50 \uAE30\uC900\uC744 \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026",v&&(l("sync-diff-remote").textContent="\uC6D0\uACA9 \uBE44\uAD50 \uB2E4\uC2DC \uC2DC\uB3C4"),l("sync-diff-remote").disabled=!0,l("sync-diff-editor").hidden=!0,l("sync-diff-labels").hidden=!0;try{let b=await e("/api/sync/diff",w);if(x!==o||!l("sync-diff-dialog").open||!v&&b.before===null&&b.canRemote&&(l("sync-diff-note").textContent="\uC800\uC7A5\uB41C \uAE30\uC900\uBCF8\uC774 \uC5C6\uC5B4 \uC120\uD0DD\uD55C \uC6D0\uACA9 \uD398\uC774\uC9C0 \uBCF8\uBB38\uC744 \uC870\uD68C\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026",l("sync-diff-remote").hidden=!1,l("sync-diff-remote").textContent="\uC6D0\uACA9 \uBE44\uAD50 \uB2E4\uC2DC \uC2DC\uB3C4",b=await e("/api/sync/diff",{...w,remote:!0}),x!==o||!l("sync-diff-dialog").open)||(l("sync-diff-note").textContent=b.note,l("sync-diff-before-label").textContent=b.source==="remote"?"\uD604\uC7AC \uC6D0\uACA9 \uBCF8\uBB38 (\uADFC\uC0AC \uBCC0\uD658)":b.source==="new"?"\uC0C8 \uBB38\uC11C (\uC6D0\uACA9 \uC5C6\uC74C)":"\uB9C8\uC9C0\uB9C9 \uB3D9\uAE30\uD654 \uAE30\uC900",l("sync-diff-remote").hidden=!b.canRemote,l("sync-diff-remote").textContent=b.source==="remote"?"\uC6D0\uACA9 \uC0C8\uB85C\uACE0\uCE68":"\uC6D0\uACA9\uACFC \uBE44\uAD50 \xB7 \uBCF8\uBB38 1\uD68C \uC870\uD68C",b.before===null))return;if(l("sync-diff-editor").hidden=!1,l("sync-diff-labels").hidden=!1,!u){let M=await c();if(x!==o||!l("sync-diff-dialog").open)return;s=M.editor.createModel("","markdown"),m=M.editor.createModel("","markdown"),u=M.editor.createDiffEditor(l("sync-diff-editor"),{automaticLayout:!0,readOnly:!0,originalEditable:!1,ignoreTrimWhitespace:!1,renderSideBySide:!0,useInlineViewWhenSpaceIsLimited:!0,renderSideBySideInlineBreakpoint:700,minimap:{enabled:!1},wordWrap:"on",scrollBeyondLastLine:!1,fontSize:12}),u.setModel({original:s,modified:m}),u.getOriginalEditor().updateOptions({ariaLabel:"\uAE30\uC900 Markdown"}),u.getModifiedEditor().updateOptions({ariaLabel:"\uD604\uC7AC \uB85C\uCEEC Markdown"})}s.setValue(b.before),m.setValue(b.after),u.layout()}catch(b){x===o&&(l("sync-diff-note").textContent=b.message,d(b.message,"error"))}finally{x===o&&(l("sync-diff-remote").disabled=!1)}}return l("sync-diff-remote").onclick=()=>g(!0),{open:async(v,x=!0)=>{t=v,l("sync-diff-path").textContent=t,l("sync-diff-remote").hidden=!x,l("sync-diff-dialog").showModal(),await g(x)}}}function mt({api:e,selection:n,changed:i,busy:c,status:d,update:l,compare:t,restore:o=()=>{},canRestore:u=()=>!1,scopeKey:s=()=>""}){let m=a=>document.getElementById(a),y="csync.staging.views.v1",g=new Set(["same","new","changed","moved","unavailable"]),v=[],x="",w="",b=null,M=!1,A="",I="",O,F=!0,L=null,W=()=>{let{verify:a,...h}=n();return JSON.stringify([h,s()])},T=()=>JSON.stringify([n().base,n().referenceRoots]),H=()=>v.filter(a=>!a.unmapped&&a.remoteState!=="new"&&a.status!=="unavailable"&&(a.staged?a.stale:a.status!=="same")).map(a=>a.path),V=()=>v.filter(a=>a.staged).map(a=>a.path),$=()=>!!x&&x===W();function j(){try{let a=JSON.parse(localStorage.getItem(y));return Array.isArray(a)?a:[]}catch{return[]}}function oe(){try{let a=j().filter(h=>h?.key!==w);a.push({key:w,scannedAt:b,localCheckFailed:!!I,rows:v.map(({path:h,status:E,staged:f,stale:S,pageId:P,renamed:r,unmapped:z,recoverable:X,localUnverified:K,remoteState:Y,remoteVersion:ne,baselineVersion:xe})=>({path:h,status:E,staged:f,stale:S,pageId:P,renamed:r,unmapped:z,recoverable:X,localUnverified:K,remoteState:Y,remoteVersion:ne,baselineVersion:xe}))}),localStorage.setItem(y,JSON.stringify(a.slice(-5)))}catch{}}function te(){let a=M&&!$();if(m("sync-stage-note").classList.toggle("stale",a||!!I),I){m("sync-stage-note").textContent=(a?"\uC774\uC804 \uC870\uD68C \uACB0\uACFC\uC785\uB2C8\uB2E4. ":"")+"\uB85C\uCEEC \uBCC0\uACBD \uD655\uC778 \uC2E4\uD328: "+I+" \uC6D0\uACA9 \uC870\uD68C \uACB0\uACFC\uB294 \uC544\uB798\uC5D0 \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uC5C5\uB85C\uB4DC\uD558\uB824\uBA74 \uB85C\uCEEC \uC624\uB958\uB97C \uD574\uACB0\uD55C \uB4A4 \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.";return}if(a){let h=new Date(b).toLocaleString("ko-KR",{timeZone:"Asia/Seoul"});m("sync-stage-note").textContent=`\uC774\uC804 \uC870\uD68C \uACB0\uACFC\uC785\uB2C8\uB2E4 (${h}). \uD30C\uC77C\uC774\uB098 \uC5C5\uB85C\uB4DC \uC120\uD0DD\uC774 \uBC14\uB00C\uC5C8\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC \uBCC0\uACBD\uC744 \uC790\uB3D9\uC73C\uB85C \uB2E4\uC2DC \uD655\uC778\uD55C \uB4A4 \uC5C5\uB85C\uB4DC\uD560 \uBB38\uC11C\uB97C \uCCB4\uD06C\uD558\uACE0 \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C4\uD589\uD558\uC138\uC694.`}else m("sync-stage-note").textContent=M?v.some(h=>h.status!=="same"||h.staged||h.remoteState&&h.remoteState!=="unchanged")?v.some(h=>h.unmapped)?"\uBC1B\uAE30 \uBBF8\uC644\uB8CC \uBB38\uC11C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. Fetch \uD6C4 \uB2E4\uC2DC \uAC00\uC838\uC624\uBA74 \uC6D0\uACA9\uACFC \uC77C\uCE58\uD558\uB294 \uBB38\uC11C\uB9CC \uC5F0\uACB0\uD558\uBA70 \uB85C\uCEEC \uC218\uC815\uC740 \uBCF4\uC874\uD569\uB2C8\uB2E4.":v.some(h=>h.staged&&h.stale)?"\uC218\uC815\uB418\uAC70\uB098 \uBC94\uC704\uB97C \uBC97\uC5B4\uB09C \uB300\uC0C1\uC774 \uC788\uC2B5\uB2C8\uB2E4. \uCD5C\uC2E0 \uB0B4\uC6A9 \uBC18\uC601\uC744 \uB204\uB974\uAC70\uB098 \uCCB4\uD06C\uB97C \uD574\uC81C\uD574 \uC5C5\uB85C\uB4DC\uC5D0\uC11C \uC81C\uC678\uD558\uC138\uC694.":v.some(h=>h.remoteState==="new"||h.status==="same"&&h.remoteState==="changed")?"\uC6D0\uACA9 \uC2E0\uADDC\xB7\uBCC0\uACBD \uBB38\uC11C\uB294 \uC704\uC758 \uAC00\uC838\uC624\uAE30\uB85C \uBC1B\uC73C\uC138\uC694. \uC5C5\uB85C\uB4DC \uCCB4\uD06C\uB294 \uB85C\uCEEC \uBB38\uC11C\uB97C \uBCF4\uB0BC \uB54C\uB9CC \uC0AC\uC6A9\uD569\uB2C8\uB2E4.":"\uCCB4\uD06C\uD558\uBA74 \uC5C5\uB85C\uB4DC\uC5D0 \uBC14\uB85C \uD3EC\uD568\uB429\uB2C8\uB2E4. \uCCB4\uD06C\uB97C \uD574\uC81C\uD558\uBA74 \uC81C\uC678\uB418\uBA70 \uC6D0\uBCF8 \uD30C\uC77C\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4. \uC120\uD0DD \uD6C4 \uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C4\uD589\uD558\uC138\uC694.":"\uB85C\uCEEC\uC5D0 \uBCC0\uACBD\uB41C \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC6D0\uACA9 \uC2E0\uADDC\xB7\uBCC0\uACBD\uC740 Fetch\uB85C \uD655\uC778\uD558\uC138\uC694.":"\uB85C\uCEEC \uBCC0\uACBD\uC744 \uC790\uB3D9\uC73C\uB85C \uD655\uC778\uD569\uB2C8\uB2E4. \uC6D0\uACA9 \uC0C1\uD0DC\uB294 Fetch\uB97C \uB20C\uB7EC \uD655\uC778\uD558\uC138\uC694."}function Z(){m("sync-stage-list").replaceChildren();let a=f=>f.localUnverified||f.unmapped&&f.remoteState!=="new"?"attention":f.remoteState==="new"?f.recoverable||f.status==="unavailable"?"receive":"conflict":f.status==="same"&&f.remoteState==="changed"?"receive":f.remoteState==="changed"&&["changed","moved","new"].includes(f.status)?"conflict":"send",h={receive:0,conflict:1,attention:2,send:3},E;for(let f of v.filter(S=>S.status!=="same"||S.staged||S.remoteState&&S.remoteState!=="unchanged").sort((S,P)=>h[a(S)]-h[a(P)])){let S=a(f);if(E!==S){let J=document.createElement("h3");J.className="stage-group-heading",J.textContent={receive:"\u2193 \uBC1B\uC744 \uBB38\uC11C \xB7 \uC6D0\uACA9 \uC2E0\uADDC\xB7\uBCC0\uACBD",conflict:"! \uC591\uCABD \uBCC0\uACBD \xB7 \uBE44\uAD50 \uD544\uC694",attention:"! \uC5F0\uACB0 \uD655\uC778 \uD544\uC694",send:"\u2191 \uBCF4\uB0BC \uBCC0\uACBD \xB7 \uB85C\uCEEC \uC791\uC5C5"}[S],m("sync-stage-list").append(J),E=S}let P=document.createElement("div"),r=document.createElement("label"),z=document.createElement("input"),X=document.createElement("span"),K=document.createElement("small");z.type="checkbox",z.value=f.path,z.checked=f.staged,z.setAttribute("aria-label",f.path+" \uC5C5\uB85C\uB4DC\uC5D0 \uD3EC\uD568"),X.textContent=f.path;let Y=f.renamed?"\uB85C\uCEEC \uACBD\uB85C \uBCC0\uACBD":{new:"\uB85C\uCEEC \uC2E0\uADDC",changed:"\uB85C\uCEEC \uC218\uC815",moved:"\uB85C\uCEEC \uC774\uB3D9",same:"\uBCC0\uACBD \uC5C6\uC74C",unavailable:"\uD30C\uC77C \uD655\uC778"}[f.status],ne=document.createElement("span"),xe=document.createElement("span"),Te=f.remoteState==="new"&&!f.unmapped&&f.status!=="unavailable"||f.remoteState==="changed"&&["changed","moved","new"].includes(f.status),Ke=f.localUnverified||f.unmapped||f.stale||Te||["unknown","unavailable"].includes(f.remoteState),Xe=f.remoteState==="new"&&!Te?"incoming":Ke?"attention":f.staged?"included":f.remoteState==="changed"?"moved":f.status,_e={incoming:'<path d="M12 3v12m-5-5 5 5 5-5M4 17v4h16v-4"/>',included:'<circle cx="12" cy="12" r="9"/><path d="m8 12 3 3 5-6"/>',new:'<path d="M12 5v14M5 12h14"/>',changed:'<circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/>',moved:'<path d="M4 8h15m-4-4 4 4-4 4M20 16H5m4-4-4 4 4 4"/>',same:'<path d="m5 12 4 4L19 6"/>',attention:'<path d="m12 3 10 18H2L12 3ZM12 9v5m0 3v.1"/>'};if(ne.className="stage-state-icon",ne.setAttribute("aria-hidden","true"),ne.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">'+(_e[Xe]||_e.attention)+"</svg>",xe.textContent=f.localUnverified?{changed:"\uC6D0\uACA9 \uBCC0\uACBD",new:"\uC6D0\uACA9 \uC2E0\uADDC",unknown:"\uC6D0\uACA9 \uD655\uC778 \uD544\uC694",unavailable:"\uC6D0\uACA9 \uC870\uD68C \uBD88\uAC00"}[f.remoteState]+" \xB7 \uB85C\uCEEC \uBBF8\uD655\uC778":f.unmapped?"\uBC1B\uAE30 \uBBF8\uC644\uB8CC \xB7 \uC6D0\uACA9 \uB300\uC870 \uD544\uC694":f.remoteState==="new"?Te?"\uC6D0\uACA9 \uC2E0\uADDC \xB7 \uB85C\uCEEC \uACBD\uB85C \uD655\uC778":"\uC6D0\uACA9 \uC2E0\uADDC":Te?f.stale?"\uC591\uCABD \uC218\uC815 \xB7 \uCD5C\uC2E0 \uB0B4\uC6A9 \uD655\uC778 \uD544\uC694":"\uC591\uCABD \uC218\uC815 \xB7 \uCDA9\uB3CC \uC8FC\uC758":f.stale?"\uCD5C\uC2E0 \uB0B4\uC6A9 \uD655\uC778 \uD544\uC694":f.remoteState==="changed"?f.remoteReasons?.some(J=>J.includes("\uBD80\uBAA8 \uC704\uCE58 \uBCC0\uACBD"))?"\uC6D0\uACA9 \uC704\uCE58 \uBCC0\uACBD":"\uC6D0\uACA9 \uC218\uC815":f.remoteState==="unavailable"?"\uC6D0\uACA9 \uC870\uD68C \uBD88\uAC00":f.remoteState==="unknown"?"\uC6D0\uACA9 \uD655\uC778 \uD544\uC694":Y+(f.staged?" \xB7 \uC5C5\uB85C\uB4DC \uD3EC\uD568":""),z.remoteOnly=f.unmapped&&!f.staged||f.remoteState==="new"&&!f.staged||f.status==="same"&&f.remoteState==="changed"&&!f.staged,z.localUnverified=!!f.localUnverified,z.remoteOnly&&(z.title=f.remoteState==="new"?"\uC544\uC9C1 \uBC1B\uC9C0 \uC54A\uC740 \uC6D0\uACA9 \uBB38\uC11C\uC785\uB2C8\uB2E4. Pull\uB85C \uAC00\uC838\uC624\uC138\uC694.":"\uC6D0\uACA9\uC5D0\uC11C\uB9CC \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff\uB97C \uD655\uC778\uD558\uACE0 Pull\uB85C \uAC00\uC838\uC624\uC138\uC694."),K.append(ne,xe),P.className="sync-stage-row"+(Ke?" needs-attention":f.staged?" is-included":a(f)==="receive"?" is-incoming":""),r.className="sync-stage-choice",K.className="stage-status stage-status-"+Xe,z.onchange=()=>k(z.checked?"add":"remove",[f.path]),r.append(z,X),P.append(r,K),!f.unmapped&&f.staged&&f.stale&&f.status!=="unavailable"){let J=document.createElement("button");J.type="button",J.textContent="\u21BB \uCD5C\uC2E0 \uB0B4\uC6A9 \uBC18\uC601",J.setAttribute("aria-label",f.path+" \uCD5C\uC2E0 \uB0B4\uC6A9 \uBC18\uC601"),J.onclick=()=>k("add",[f.path]),P.append(J)}if(!f.unmapped&&f.status!=="unavailable"&&f.remoteState!=="new"){let J=document.createElement("button");J.type="button",J.textContent="\u2194 diff \uBCF4\uAE30",J.setAttribute("aria-label",f.path+" \uBCC0\uACBD \uBE44\uAD50"),J.onclick=()=>t(f.path),P.append(J)}if(!f.localUnverified&&f.remoteState!=="new"&&f.pageId&&f.status!=="new"&&f.status!=="moved"){let J=document.createElement("button");J.type="button",J.className="stage-restore",J.isRestore=!0;let Oe=document.createElement("span"),Ge=document.createElement("span");Oe.className="stage-action-icon",Oe.setAttribute("aria-hidden","true"),Oe.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="'+(f.status==="unavailable"?"M12 3v12m-5-5 5 5 5-5M4 17v4h16v-4":"M3 11a9 9 0 1 1 2.64 6.36M3 3v8h8")+'"/></svg>',Ge.textContent=f.status==="unavailable"?"\uC6D0\uACA9\uC5D0\uC11C \uBCF5\uAD6C":"\uC6D0\uACA9\uC73C\uB85C \uC6D0\uBCF5",J.append(Oe,Ge),J.setAttribute("aria-label",f.path+" \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C"),J.onclick=()=>{$()&&u()&&o(f.path,f.status!=="unavailable")},P.append(J)}m("sync-stage-list").append(P)}te()}function de(){let a=T();if(w===a)return;w=a,x="",v=[],b=null,M=!1,A="",I="";let h=j().find(E=>E?.key===a);h&&Number.isFinite(Date.parse(h.scannedAt))&&Array.isArray(h.rows)&&h.rows.every(E=>E&&typeof E.path=="string"&&g.has(E.status)&&typeof E.staged=="boolean"&&typeof E.stale=="boolean")&&(I=h.localCheckFailed?"\uC774\uC804 \uB85C\uCEEC \uBCC0\uACBD \uD655\uC778\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.":"",v=h.rows,b=h.scannedAt,M=!0),Z()}function Q(a){de(),x&&x!==W()&&(x="",te()),m("sync-stage-scan").disabled=a||!n().base,m("sync-stage-add").disabled=a||!$()||!H().length,m("sync-stage-remove").disabled=a||!$()||!V().length,m("sync-stage-count").textContent=`${M&&!$()?"\uC774\uC804 \uC870\uD68C \xB7 ":""}${v.filter(h=>h.staged).length}\uAC1C \uC5C5\uB85C\uB4DC \uC608\uC815`;for(let h of m("sync-stage-list").querySelectorAll("input"))h.disabled=a||!$()||h.remoteOnly||h.localUnverified;for(let h of m("sync-stage-list").querySelectorAll("button"))h.disabled=a||h.isRestore&&(!$()||!u())}async function C(a,h,E=!1){if(a&&(!$()||!h?.length))return;let f=W(),S=n(),P=!1;E||c(!0),E||(m("sync-stage-note").textContent=a==="remove"?"\uC5C5\uB85C\uB4DC \uB300\uC0C1\uC5D0\uC11C \uC81C\uC678\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":a==="add"?"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uD655\uC778\uD574 \uC5C5\uB85C\uB4DC\uC5D0 \uD3EC\uD568\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":"\uB85C\uCEEC \uBB38\uC11C\uC758 \uBCC0\uACBD\uC744 \uAC80\uC0AC\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026");try{let r,z="";try{r=await e("/api/sync/staging",{...S,...a?{action:a,paths:h}:{}},void 0,{background:E})}catch(K){if(a||f!==W())throw K;z=K.message,r=await e("/api/sync/staging",{...S,remoteOnly:!0},void 0,{background:E})}if(f!==W())return;if(!Array.isArray(r.rows))throw new Error("\uBCC0\uACBD \uBAA9\uB85D \uC751\uB2F5\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uBD88\uB7EC\uC624\uC138\uC694.");let X=m("sync-stage-remote-note");if(X&&(X.textContent=r.remoteCheckedAt?`\uC6D0\uACA9 \uD655\uC778: ${new Date(r.remoteCheckedAt).toLocaleString("ko-KR",{timeZone:"Asia/Seoul"})}${r.remoteExpired?" \xB7 \uC774\uC804 \uC870\uD68C \uACB0\uACFC\uC785\uB2C8\uB2E4. Fetch\uB85C \uAC31\uC2E0\uD558\uC138\uC694.":""}`:"\uC6D0\uACA9 \uC0C1\uD0DC \uBBF8\uD655\uC778 \xB7 Fetch\uB97C \uB204\uB974\uBA74 \uBC84\uC804\uACFC \uC704\uCE58\uB97C \uBB36\uC5B4\uC11C \uC870\uD68C\uD569\uB2C8\uB2E4."),E&&$()&&r.revision&&r.revision===A&&I===z)return;I=z,A=r.revision||"",P=!0,i(),v=r.rows,x=f,M=!0,(!a||!b)&&(b=new Date().toISOString()),oe(),Z(),m("sync-stage-scan").hidden=!0,a&&d(a==="add"?"\uC5C5\uB85C\uB4DC\uC5D0 \uD3EC\uD568\uD588\uC2B5\uB2C8\uB2E4. \uBBF8\uB9AC\uBCF4\uAE30 \uD6C4 \uC5C5\uB85C\uB4DC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.":"\uC5C5\uB85C\uB4DC\uC5D0\uC11C \uC81C\uC678\uD588\uC2B5\uB2C8\uB2E4. \uC6D0\uBCF8 \uD30C\uC77C\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4.",!1,"success")}catch(r){if(f!==W())return;P=!0,i(),x="",Z(),E?(m("sync-stage-note").textContent="\uB85C\uCEEC \uC790\uB3D9 \uD655\uC778 \uC2E4\uD328: "+r.message+" \uC774\uC804 \uBAA9\uB85D\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4.",m("sync-stage-scan").hidden=!1):d(r.message,!0)}finally{E?P&&l():(c(!1),l())}}async function k(a,h,E=!1){if(E&&L)return;let f=W(),S=(L??Promise.resolve()).catch(()=>{}).then(()=>f===W()?C(a,h,E):void 0);L=S;try{await S}finally{L===S&&(L=null)}}m("sync-stage-scan").onclick=()=>k(),m("sync-stage-add").onclick=()=>k("add",H()),m("sync-stage-remove").onclick=()=>k("remove",V());function R(a){F=!1;let h=async()=>{try{!F&&await a()&&await k(void 0,void 0,!0)}finally{F||(O=setTimeout(h,5e3))}};return clearTimeout(O),O=setTimeout(h,100),()=>{F=!0,clearTimeout(O)}}return{idle:()=>L??Promise.resolve(),remoteOnlyCount:()=>$()?v.filter(a=>a.status==="same"&&a.remoteState==="changed"||(a.recoverable||a.status==="unavailable")&&a.remoteState==="new").length:0,startWatching:R,update:Q,ready:()=>$()&&!I&&v.some(a=>a.staged)&&!v.some(a=>a.staged&&(a.stale||a.unmapped)),reload:(a=!1)=>k(void 0,void 0,a)}}function ht({api:e,context:n,setBusy:i,changed:c,renderConfig:d,status:l}){let t=A=>document.getElementById(A),o=n().base,u="",s="",m=!1,y=null;t("sync-env-toggle").onclick=()=>{let A=t("sync-env-toggle").getAttribute("aria-expanded")!=="true";t("sync-env-toggle").setAttribute("aria-expanded",String(A)),t("sync-env-body").hidden=!A,t("sync-env-chevron").textContent=A?"\u25BE":"\u25B8",t("sync-env-toggle-label").textContent=A?"\uC811\uAE30":"\uD3BC\uCE58\uAE30"};let g=()=>t("sync-env-import-mode").checked,v=()=>`${g()?"import":"base"}:${u}`,x=()=>({base:n().base,envId:g()?u||"not-imported":""});function w(){y=null,t("sync-env-confirm").open&&t("sync-env-confirm").close()}function b(A){m=A,o!==n().base&&(o=n().base,u="",s="",t("sync-env-file").value="",t("sync-env-base-mode").checked=!0,t("sync-env-import-mode").checked=!1,w());for(let I of["sync-env-base-mode","sync-env-import-mode"])t(I).disabled=m;t("sync-env-import-controls").hidden=!g(),t("sync-env-file-name").textContent=s||"\uC120\uD0DD\uD55C \uD30C\uC77C \uC5C6\uC74C",t("sync-env-choose").disabled=m||!o,t("sync-env-save").disabled=m||!u||!g(),t("sync-env-source-note").textContent=g()?"\uAC00\uC838\uC628 \uC124\uC815\uC740 \uD604\uC7AC \uC6F9 \uC791\uC5C5\uC5D0\uB9CC \uC801\uC6A9\uB429\uB2C8\uB2E4. \uC0C8\uB85C\uACE0\uCE68\uD558\uBA74 \uB2E4\uC2DC \uAC00\uC838\uC640\uC57C \uD569\uB2C8\uB2E4.":"\uB85C\uCEEC \uBB38\uC11C\uC5D0\uC11C \uC120\uD0DD\uD55C \uAE30\uC900 \uD3F4\uB354\uC758 .env\uB9CC \uC77D\uC2B5\uB2C8\uB2E4. \uD30C\uC77C\uC774 \uC5C6\uC73C\uBA74 .env\uB97C \uAC00\uC838\uC624\uC138\uC694."}for(let A of["sync-env-base-mode","sync-env-import-mode"])t(A).onchange=()=>{w(),c(),b(m)};t("sync-env-choose").onclick=()=>{m||t("sync-env-file").click()},t("sync-env-file").onchange=async()=>{let A=t("sync-env-file").files?.[0];if(!A||m)return;if(A.size>12e3){l(".env \uD30C\uC77C\uC740 12KB \uC774\uD558 \uD14D\uC2A4\uD2B8\uC5EC\uC57C \uD569\uB2C8\uB2E4.",!0),t("sync-env-file").value="";return}let I=n().base;i(!0),w();try{let O=await A.text(),F=await e("/api/sync/env/import",{base:I,text:O,name:A.name});if(I!==n().base)return;u=F.envId,s=A.name,c(),d(F.config),l(".env\uB97C \uAC00\uC838\uC654\uC2B5\uB2C8\uB2E4. \uAE30\uC900 \uD3F4\uB354\uC758 \uD30C\uC77C\uC740 \uBCC0\uACBD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",!1,"success")}catch(O){l(O.message,!0)}finally{t("sync-env-file").value="",i(!1)}};async function M(A){i(!0);try{let I=await e("/api/sync/env/save",A);t("sync-env-base-mode").checked=!0,t("sync-env-import-mode").checked=!1,c(),d(I.config),l("\uAE30\uC900 \uD3F4\uB354\uC5D0 .env\uB97C \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4. CLI\uC5D0\uC11C\uB3C4 \uAC19\uC740 \uC124\uC815\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",!1,"success")}catch(I){l(I.message,!0)}finally{w(),i(!1)}}return t("sync-env-save").onclick=async()=>{if(m||!u||!g())return;let A=x();i(!0);try{let I=await e("/api/sync/env/save",A),O={...A,expectedHash:I.expectedHash};I.needsConfirmation?(y=O,t("sync-env-confirm-path").textContent=I.path,t("sync-env-confirm").showModal()):await M(O)}catch(I){l(I.message,!0)}finally{i(!1)}},t("sync-env-confirm-save").onclick=()=>{if(y&&!m)return M(y)},t("sync-env-confirm-cancel").onclick=w,t("sync-env-confirm").addEventListener("cancel",w),{update:b,identity:v,request:x}}var Ut=[["error",/^(?:✗|(?:\w*Error|오류|실패)\s*[::]|일부 작업이 실패)/],["warning",/^(?:⚠|\[경고\])/],["success",/^(?:\[(?:신규|폴더\+)\]|+\s*생성|완료(?:\s|$))/],["change",/^(?:\[변경\]|↻\s*갱신)/],["reference",/^(?:참조 링크:|\[연결\]|🔗|♻)/],["muted",/^(?:\[(?:동일|상위|폴더)\]|=\s*변경없음|·\s*상위|--dry-run:)/],["info",/^(?:base:|대상:|📁)/]];function xt(e,n){if(e.textContent===n)return;let i=document.createDocumentFragment();for(let c of n.match(/[^\n]*\n|[^\n]+$/g)??[]){let d=document.createElement("span"),l=Ut.find(([,t])=>t.test(c.trimStart()))?.[0]??"default";d.className="sync-log-line sync-log-"+l,d.textContent=c,i.append(d)}e.replaceChildren(i)}function bt({api:e,monaco:n,loadMonaco:i,context:c,setBusy:d,showSync:l,refresh:t=async()=>{},notify:o=()=>{},activity:u}){let s=r=>document.getElementById(r),m=!1,y=null,g=null,v="",x="",w,b=!1,M=!1,A="",I="\uC2A4\uD398\uC774\uC2A4 \uC804\uCCB4",O,F,L={restore:"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C\uD558\uB294 \uC911",preview:"\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uACC4\uC0B0\uD558\uB294 \uC911",fetch:"\uC6D0\uACA9 \uBCC0\uACBD\uC744 \uD655\uC778\uD558\uB294 \uC911",pull:"Confluence\uC5D0\uC11C \uAC00\uC838\uC624\uB294 \uC911",push:"Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uD558\uB294 \uC911"},W={restore:"sync-restore-confirm",preview:"sync-preview",fetch:"sync-fetch",pull:"sync-pull-remote",push:"sync-push"};function T(r,z){O?.end(),O=u?.begin({label:L[r],detail:"\uC791\uC5C5\uC744 \uC900\uBE44\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",button:z||W[r],region:"sync-results",link:"#sync-results"})}function H(){O?.end(),O=void 0}let V=new Set,$=(r,z=!1,X=z?"error":"info")=>{s("sync-status").textContent=r,s("sync-status").classList.toggle("error",z),X&&o(r,X)};function j(){return{base:c().base||"",target:"",envId:P.request().envId,verify:s("sync-verify").checked,referenceRoots:s("sync-references").value.split(/\r?\n/).map(z=>z.trim()).filter(Boolean)}}let oe=()=>s("sync-pull-format").value==="obsidian"?"obsidian":"markdown",te=()=>JSON.stringify(j()),Z=()=>JSON.stringify([c().base,P.identity()]),de=()=>!!c().base;function Q(){y=null,g=null,v=""}function C(r,z=!1){m=r,!z&&v&&v!==te()&&(Q(),$("\uB300\uC0C1\uC774\uB098 \uC635\uC158\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.")),!z&&x&&x!==Z()&&(x="",b=!1,M=!1,A="",s("sync-config").replaceChildren(),s("sync-config-status").textContent="\uC124\uC815 \uD655\uC778 \uB610\uB294 .env \uAC00\uC838\uC624\uAE30\uB85C \uC5F0\uACB0 \uC815\uBCF4\uB97C \uBD88\uB7EC\uC624\uC138\uC694."),s("sync-log-download").disabled=!F?.log?.trim(),s("sync-job-state").hidden=!F,P.update(m),s("sync-connect").disabled=m||!c().base||!M||b,s("sync-connect").textContent=b?"\uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0\uB428":"\uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0",S.update(m);for(let Y of["sync-pull-format","sync-load","sync-verify","sync-references","sync-add-reference"])s(Y).disabled=m;s("sync-pull-format-help").textContent=oe()==="obsidian"?"\uC704\uD0A4\uB9C1\uD06C([[\uBB38\uC11C|\uC774\uB984]])\xB7\uCF5C\uC544\uC6C3\xB7\uAC01\uC8FC \uBB38\uBC95\uC73C\uB85C \uBCF5\uC6D0\uD569\uB2C8\uB2E4. \uD30C\uC77C\uBA85\uC774 \uACB9\uCE58\uAC70\uB098 HTML \uD45C \uC548\uC758 \uB9C1\uD06C\uB294 \uD638\uD658\uB418\uB294 \uC0C1\uB300 \uACBD\uB85C \uB9C1\uD06C\uB97C \uC720\uC9C0\uD569\uB2C8\uB2E4. \uC0C8\uB85C \uBC1B\uB294 \uBB38\uC11C\uC640 \uBCF5\uAD6C\xB7\uC6D0\uBCF5\uC5D0 \uC801\uC6A9\uD569\uB2C8\uB2E4.":"Markdown \uB9C1\uD06C([\uC774\uB984](\uBB38\uC11C.md))\xB7\uC81C\uBAA9\uC774 \uC788\uB294 \uC778\uC6A9\uBB38\xB7\uC704\uCCA8\uC790 \uAC01\uC8FC \uBAA9\uB85D\uC73C\uB85C \uBC1B\uC2B5\uB2C8\uB2E4. \uC0C8\uB85C \uBC1B\uB294 \uBB38\uC11C\uC640 \uBCF5\uAD6C\xB7\uC6D0\uBCF5\uC5D0 \uC801\uC6A9\uD558\uBA70 \uAE30\uC874 \uD30C\uC77C\uC744 \uC77C\uAD04 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.";let X=s("sync-pull-remote");if(X){let Y=S.remoteOnlyCount();X.disabled=m||!b||!M||!Y,X.textContent=`\u2193 \uC6D0\uACA9 \uBB38\uC11C ${Y}\uAC1C \uAC00\uC838\uC624\uAE30 (Pull)`}s("sync-fetch").disabled=m||!c().base||!b||!M,s("sync-log-empty").textContent="\uBBF8\uB9AC\uBCF4\uAE30 \uB610\uB294 Fetch\xB7Pull\xB7\uBCF5\uAD6C\uB97C \uC2E4\uD589\uD558\uBA74 \uBB38\uC11C\uBCC4 \uCC98\uB9AC \uB0B4\uC5ED\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",s("sync-load").disabled=m||!c().base,s("sync-preview").disabled=m||!de()||!b||!S.ready(),s("sync-push").disabled=m||!b||!M||!y||!g||v!==te(),s("sync-push").title=y?"\uBBF8\uB9AC\uBCF4\uAE30\uD55C \uBC94\uC704\uB97C \uC5C5\uB85C\uB4DC\uD569\uB2C8\uB2E4.":"\uD604\uC7AC \uC120\uD0DD\uACFC \uC124\uC815\uC73C\uB85C \uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.";let K=j();s("sync-target").textContent=de()?`\uAE30\uC900 \uD3F4\uB354 ${K.base} \u2194 ${I} \xB7 Push\uB294 \uCCB4\uD06C\uD55C \uBB38\uC11C\uB9CC`:"\uB85C\uCEEC \uBB38\uC11C\uC5D0\uC11C \uAE30\uC900 \uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694."}function k(r){x=Z(),b=!!r.connected,M=!r.missing.length,I=r.rootPath&&r.rootPath!=="/"?`\uAE30\uC874 \uC6D0\uACA9 \uB8E8\uD2B8 ${r.rootPath}`:"\uC2A4\uD398\uC774\uC2A4 \uC804\uCCB4",A=b?`${r.baseUrl}/${r.spaceKey}/${r.rootPath||"/"}`:"",s("sync-config").replaceChildren();for(let[z,X]of[["\uC124\uC815 \uCD9C\uCC98",r.source],["\uC11C\uBC84",r.baseUrl||"\uBBF8\uC124\uC815"],["\uACC4\uC815",r.email||"\uBBF8\uC124\uC815"],["\uC2A4\uD398\uC774\uC2A4",r.spaceKey||"\uBBF8\uC124\uC815"],["\uC791\uC5C5\uACF5\uAC04",b?`\uAE30\uC900 \uD3F4\uB354 \u2194 ${I}`:"\uBBF8\uC5F0\uACB0"],["API \uD1A0\uD070",r.hasToken?"\uC124\uC815\uB428":"\uBBF8\uC124\uC815"]]){let K=document.createElement("dt"),Y=document.createElement("dd");K.textContent=z,Y.textContent=X,s("sync-config").append(K,Y)}s("sync-config-status").textContent=r.missing.length?`\uC124\uC815 \uD544\uC694: ${r.missing.join(", ")}. \uBBF8\uB9AC\uBCF4\uAE30\uB294 \uC778\uC99D \uC5C6\uC774 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`:b?"\uC811\uC18D \uC124\uC815\uACFC \uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0\uC744 \uBD88\uB7EC\uC654\uC2B5\uB2C8\uB2E4.":"\uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0\uC744 \uB20C\uB7EC \uAE30\uC900 \uD3F4\uB354\uC640 \uC5F0\uACB0\uD558\uC138\uC694."}function R(r){if(F=r,s("sync-log-download").disabled=!r.log?.trim(),r.state==="running"&&!O&&T(r.kind),O){let Y=(r.log||"").split(/\r?\n/).filter(ne=>ne.trim()&&!/^\s*(?:✓|완료|진행 ·)/.test(ne)).at(-1);O.update({label:r.state==="running"?r.phase==="fetch"?"\uC644\uB8CC \uD6C4 \uC6D0\uACA9 \uC0C1\uD0DC\uB97C \uB2E4\uC2DC \uD655\uC778\uD558\uB294 \uC911":L[r.kind]:"\uC2E4\uD589 \uACB0\uACFC\uB97C \uBC18\uC601\uD558\uB294 \uC911",detail:r.state==="running"?Y||"\uCC98\uB9AC \uC911\uC785\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC5D0\uC11C \uC138\uBD80 \uB0B4\uC6A9\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.":"\uBCC0\uACBD \uBAA9\uB85D\uACFC \uB85C\uCEEC \uD3F4\uB354\uB97C \uAC31\uC2E0\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",startedAt:r.startedAt,uncertain:!1})}s("sync-job-summary").hidden=!1,s("sync-job-summary").textContent=`${r.kind==="restore"?"\uBB38\uC11C \uBCF5\uAD6C":r.kind==="preview"?"\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30":r.kind==="fetch"?"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778":r.kind==="pull"?"\uAC00\uC838\uC624\uAE30":"\uC5C5\uB85C\uB4DC"} \xB7 ${["pull","fetch","restore"].includes(r.kind)?`${r.config.spaceKey||"\uC2A4\uD398\uC774\uC2A4 \uBBF8\uC124\uC815"} \u2192 ${r.selection.base}`:`${r.selection.target||r.selection.base} \u2192 ${r.config.spaceKey||"\uC2A4\uD398\uC774\uC2A4 \uBBF8\uC124\uC815"}`} (${r.config.baseUrl||"\uC11C\uBC84 \uBBF8\uC124\uC815"})`,["pull","restore"].includes(r.kind)&&(s("sync-job-summary").textContent+=` \xB7 \uAC00\uC838\uC624\uAE30 \uD615\uC2DD: ${r.selection.format==="obsidian"?"Obsidian":"Markdown"}`),s("sync-log-empty").hidden=!0,s("sync-log").hidden=!1;let z=s("sync-log"),X=z.scrollHeight-z.scrollTop-z.clientHeight<40;xt(z,r.log||"\uC791\uC5C5\uC744 \uC900\uBE44\uD558\uB294 \uC911\uC785\uB2C8\uB2E4\u2026"),X&&(z.scrollTop=z.scrollHeight),s("sync-job-state").hidden=!1,s("sync-job-state").setAttribute("data-state",r.state==="succeeded"&&(r.warningCount||r.refreshFailed)?"warning":r.state),s("sync-job-state").textContent=r.state==="succeeded"&&(r.warningCount||r.refreshFailed)?"\uC644\uB8CC (\uACBD\uACE0)":{running:"\uC9C4\uD589 \uC911",succeeded:"\uC644\uB8CC",failed:"\uC2E4\uD328"}[r.state];let K=!V.has(r.id);r.state!=="running"&&V.add(r.id),r.state==="running"&&r.phase==="fetch"?$("Push\xB7Pull\uC744 \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uCD5C\uC2E0 \uC6D0\uACA9 \uC0C1\uD0DC\uB97C \uB2E4\uC2DC \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026",!1,null):r.state==="running"?$(r.kind==="restore"?"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":r.kind==="preview"?"\uB85C\uCEEC \uBB38\uC11C\uC640 \uB9E4\uD551\uC744 \uBE44\uAD50\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":r.kind==="fetch"?"\uC6D0\uACA9 \uD398\uC774\uC9C0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":r.kind==="pull"?"Confluence\uC5D0\uC11C \uBB38\uC11C\uB97C \uAC00\uC838\uC624\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":"Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uC9C4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694.",!1,null):r.state==="failed"?$(r.kind==="restore"?"\uBB38\uC11C \uBCF5\uAD6C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694.":r.kind==="fetch"?"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694. \uC774\uC804 \uCE90\uC2DC\uB294 \uC720\uC9C0\uB429\uB2C8\uB2E4.":r.kind==="pull"?"\uAC00\uC838\uC624\uAE30\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC \uBCC0\uACBD\uC774\uB098 \uC624\uB958 \uB0B4\uC5ED\uC744 \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.":"\uC5C5\uB85C\uB4DC\uAC00 \uC2E4\uD328\uD588\uAC70\uB098 \uC77C\uBD80 \uBB38\uC11C\uAC00 \uCC98\uB9AC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB0B4\uC5ED\uC744 \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.",!0,K?"error":null):r.kind==="preview"?(r.id===g&&v===te()&&!r.config.missing.length&&r.config.connected&&(y=r.planId),$(r.config.missing.length?"\uBBF8\uB9AC\uBCF4\uAE30 \uC644\uB8CC. \uC811\uC18D \uC124\uC815\uC744 \uCC44\uC6B4 \uB4A4 \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.":y?"\uBBF8\uB9AC\uBCF4\uAE30 \uC644\uB8CC. \uB300\uC0C1\uACFC \uC5C5\uB85C\uB4DC \uC704\uCE58\uB97C \uD655\uC778\uD558\uACE0 Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uB97C \uB204\uB974\uC138\uC694.":"\uBBF8\uB9AC\uBCF4\uAE30 \uB0B4\uC5ED\uC744 \uBD88\uB7EC\uC654\uC2B5\uB2C8\uB2E4. \uD604\uC7AC \uC120\uD0DD\uC73C\uB85C \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.",!1,K?r.config.missing.length?"warning":"success":null)):r.kind==="fetch"?$("Fetch\uB97C \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uACBD \uBB38\uC11C \uBAA9\uB85D\uC5D0 \uC6D0\uACA9 \uC0C1\uD0DC\uB97C \uBC18\uC601\uD569\uB2C8\uB2E4. \uC0C1\uC138 \uC870\uD68C \uB0B4\uC5ED\uC740 \uB300\uC0C1 \uBC0F \uC2E4\uD589 \uB0B4\uC5ED\uC5D0\uC11C \uD655\uC778\uD560 \uC218 \uC788\uC73C\uBA70 \uBB38\uC11C\uC640 \uB3D9\uAE30\uD654 \uAE30\uC900\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4.",!1,K?"success":null):r.refreshFailed?$(`${r.kind==="push"?"\uC5C5\uB85C\uB4DC":"\uAC00\uC838\uC624\uAE30"}\uB294 \uC644\uB8CC\uD588\uC9C0\uB9CC \uD6C4\uC18D Fetch\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. ${r.warningCount?`\uCCA8\uBD80 ${r.warningCount}\uAC1C\uB294 \uC6D0\uACA9 \uCC38\uC870\uB97C \uC720\uC9C0\uD588\uC2B5\uB2C8\uB2E4. `:""}\uBCC0\uACBD \uBAA9\uB85D\uC774 \uCD5C\uC2E0\uC774 \uC544\uB2D0 \uC218 \uC788\uC73C\uB2C8 Fetch\uB97C \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694.`,!1,K?"warning":null):r.warningCount?$(`\uAC00\uC838\uC624\uAE30\uB97C \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uCCA8\uBD80 ${r.warningCount}\uAC1C\uB97C \uC800\uC7A5\uD558\uC9C0 \uBABB\uD574 \uC6D0\uACA9 \uCC38\uC870\uB97C \uC720\uC9C0\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694.`,!1,K?"warning":null):$(r.kind==="restore"?"\uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C\uD588\uC2B5\uB2C8\uB2E4. \uBCF5\uAD6C \uBB38\uC11C\uB294 \uC5C5\uB85C\uB4DC \uC120\uD0DD\uC5D0\uC11C \uC81C\uC678\uD588\uC2B5\uB2C8\uB2E4.":r.kind==="pull"?"\uAC00\uC838\uC624\uAE30\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uAE30\uC900 \uD3F4\uB354\uC5D0\uC11C \uBB38\uC11C\uB97C \uD655\uC778\uD558\uC138\uC694.":"\uC5C5\uB85C\uB4DC\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uB978 \uB300\uC0C1\uC744 \uC120\uD0DD\uD574 \uACC4\uC18D \uC791\uC5C5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",!1,K?"success":null)}async function a(){clearTimeout(w);try{let{job:r}=await e("/api/sync/job");if(!r){H(),d(!1);return}R(r),s("sync-reconnect").hidden=!0,r.state==="running"?w=setTimeout(a,800):(["push","pull","fetch","restore"].includes(r.kind)&&r.state==="succeeded"&&await S.reload(!0),["pull","restore"].includes(r.kind)&&r.state==="succeeded"&&await t(),H(),d(!1))}catch(r){$(`\uC9C4\uD589 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC791\uC5C5\uC740 \uC11C\uBC84\uC5D0\uC11C \uACC4\uC18D\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4. ${r.message}`,!0),O?.update({label:"\uC9C4\uD589 \uC0C1\uD0DC \uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4",detail:"\uC11C\uBC84 \uC791\uC5C5\uC774 \uACC4\uC18D\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC9C4\uD589 \uC0C1\uD0DC \uB2E4\uC2DC \uD655\uC778\uC73C\uB85C \uC5F0\uACB0\uD558\uC138\uC694.",uncertain:!0}),s("sync-reconnect").hidden=!1}}async function h(r,z){let X=r==="pull-remote";if(X&&(r="pull"),m||!b)return;let K=j(),Y=y;if(!(r==="push"&&(!Y||!g||v!==te()||!M))){Q(),r==="preview"&&(v=te()),T(r,X?"sync-pull-remote":void 0),d(!0),$(r==="restore"?"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uBCF5\uAD6C\uD569\uB2C8\uB2E4\u2026":r==="preview"?"\uB3D9\uAE30\uD654 \uB300\uC0C1\uC744 \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":r==="fetch"?"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778\uC744 \uC2DC\uC791\uD569\uB2C8\uB2E4\u2026":r==="pull"?"Confluence\uC5D0\uC11C \uAC00\uC838\uC624\uAE30\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4\u2026":"\uC5C5\uB85C\uB4DC\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4\u2026",!1,null);try{let{job:ne}=await e("/api/sync/"+r,r==="restore"?z:r==="preview"?K:r==="pull"?{...P.request(),remoteOnly:!0,format:oe()}:r==="fetch"?P.request():{planId:Y});r==="preview"&&(g=ne.id),k(ne.config),R(ne),r==="fetch"&&s("sync-stage-heading").scrollIntoView({block:"start"}),await a()}catch(ne){$(ne.message,!0);try{let{job:xe}=await e("/api/sync/job");if(xe?.state==="running"){await a();return}H(),d(!1)}catch{O?.update({label:"\uC9C4\uD589 \uC0C1\uD0DC \uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4",detail:"\uC694\uCCAD \uACB0\uACFC\uB97C \uD655\uC778\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC791\uC5C5\uC774 \uACC4\uC18D\uB420 \uC218 \uC788\uC73C\uB2C8 \uC9C4\uD589 \uC0C1\uD0DC\uB97C \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.",uncertain:!0}),s("sync-reconnect").hidden=!1}}}}s("sync-add-reference").onclick=async()=>{if(!m){d(!0);try{let r=await e("/api/pick-folder",{kind:"reference",start:c().base});if(r.path){let z=j().referenceRoots;s("sync-references").value=[...new Set([...z,r.path])].join(`
4
- `),s("sync-references").dispatchEvent(new Event("input",{bubbles:!0}))}}catch(r){$(r.message,!0)}finally{d(!1)}}};let E=gt({api:e,selection:j,monaco:n,loadMonaco:i,notify:o}),f=ut({api:e,selection:()=>({...j(),format:oe()}),setBusy:d,isBusy:()=>m,status:$,start:h}),S=mt({restore:f.open,canRestore:()=>b&&M,scopeKey:()=>A,compare:E.open,api:e,selection:j,changed:Q,busy:d,status:$,update:()=>C(m)}),P=ht({api:e,context:c,setBusy:d,changed:()=>{Q(),C(m)},renderConfig:r=>{Q(),k(r)},status:$});s("sync-connect").onclick=async()=>{if(m||b||!M)return;let r=Z();Q(),d(!0);try{let z=await e("/api/sync/connect",P.request());if(r!==Z())return;k(z),$("\uAE30\uC900 \uD3F4\uB354\uB97C \uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uD588\uC2B5\uB2C8\uB2E4. Fetch\uB85C \uBC1B\uC744 \uBB38\uC11C\uB97C \uD655\uC778\uD55C \uB4A4 \uAC00\uC838\uC624\uC138\uC694.",!1,"success")}catch(z){$(z.message,!0)}finally{d(!1)}},s("sync-pull-format").onchange=()=>C(m),s("sync-fetch").onclick=()=>h("fetch"),s("sync-pull-remote")&&(s("sync-pull-remote").onclick=()=>h("pull-remote")),s("sync-preview").onclick=()=>h("preview"),s("sync-push").onclick=()=>h("push"),s("sync-reconnect").onclick=a,s("sync-log-download").onclick=()=>{if(F?.log?.trim())try{lt(ft(F),pt(F)),o("\uB85C\uADF8 \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC2DC\uC791\uD588\uC2B5\uB2C8\uB2E4.","success")}catch(r){$("\uB85C\uADF8 \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC2DC\uC791\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. "+r.message,!0)}},s("sync-load").onclick=async()=>{if(m)return;Q(),d(!0);let r=Z();try{let z=await e("/api/sync/config",P.request());r===Z()&&(k(z),$(s("sync-config-status").textContent,!1,z.missing.length||!z.connected?"warning":"success"))}catch(z){$(z.message,!0)}finally{d(!1)}};for(let r of["sync-verify","sync-references"])s(r).addEventListener("input",()=>C(m));return{waitForLocalCheck:()=>S.idle(),watch:()=>S.startWatching(async()=>{if(m||document.hidden||s("sync-view").hidden||!c().base)return!1;if(!b||x!==Z())try{let r=Z(),z=await e("/api/sync/config",P.request(),void 0,{quiet:!0});if(r!==Z()||m)return!1;k(z),C(m)}catch{return!1}return b}),update:C,resume:async()=>{try{let{job:r}=await e("/api/sync/job");if(!r)return;R(r),r.state==="running"&&(await l(),d(!0),await a())}catch(r){$("\uC791\uC5C5 \uC0C1\uD0DC\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. "+r.message,!0)}}}}function yt({api:e,selection:n,formatting:i,notify:c=()=>{}}){let d=document.getElementById("document-preview-frame"),l=document.getElementById("document-preview-status"),t=document.getElementById("document-preview-refresh"),o=document.getElementById("document-preview-toggle"),u,s,m=0,y=!1,g=!1;function v(){m++,s?.abort(),i?.clear(),d.hidden=!0,d.removeAttribute("srcdoc"),u=void 0,g=!1}async function x(w=!1){let{base:b,file:M,folder:A}=n(),I=b&&M&&!A?JSON.stringify([b,M]):"";if(!y){u!==void 0&&(I!==u||g)&&v(),t.disabled=!0;return}if(t.disabled=!I,!w&&I===u)return;v(),u=I;let O=m;if(t.disabled=!I,l.textContent=I?"\uBB38\uC11C\uB97C \uBD88\uB7EC\uC624\uB294 \uC911\u2026":"Markdown \uD30C\uC77C\uC744 \uC120\uD0DD\uD558\uBA74 \uBCF8\uBB38\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.",!!I){s=new AbortController,g=!0;try{let F=await e("/api/document-preview",{base:b,file:M},s.signal);if(O!==m)return;d.srcdoc=F.html,d.hidden=!1,i?.load(F,{base:b,file:M}),l.textContent=M.split(/[\\/]/).pop()+" \xB7 \uB0B4\uC6A9\uC744 \uC120\uD0DD\uD574 \uBCF5\uC0AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."}catch(F){if(O!==m||F.name==="AbortError")return;l.textContent="\uBB38\uC11C\uB97C \uD45C\uC2DC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: "+F.message,c(l.textContent,"error")}finally{O===m&&(g=!1)}}}return o.onclick=()=>(y=!y,o.setAttribute("aria-expanded",String(y)),document.getElementById("document-preview-body").hidden=!y,document.getElementById("document-preview-actions").hidden=!y,document.getElementById("document-preview-chevron").textContent=y?"\u25BE":"\u25B8",document.getElementById("document-preview-toggle-label").textContent=y?"\uC811\uAE30":"\uD3BC\uCE58\uAE30",x()),t.onclick=()=>x(!0),{update:x}}function wt(e,n){let i=e-n.length*40,c=n.reduce((u,s)=>u+s,0),d=n.map(u=>u/c*i),l=d.map(u=>40+Math.floor(u)),t=d.map((u,s)=>({i:s,remainder:u-Math.floor(u)})).sort((u,s)=>s.remainder-u.remainder),o=e-l.reduce((u,s)=>u+s,0);for(let u=0;u<o;u++)l[t[u].i]++;return l}function vt({api:e,monaco:n,loadMonaco:i=async()=>n,refresh:c,setBusy:d,notify:l=()=>{}}){let t=C=>document.getElementById(C),o=t("document-preview-frame"),u=t("table-edit-toggle"),s=t("table-format-controls"),m=t("table-review-dialog"),y=t("table-format-status"),g,v,x=!1,w=-1,b=[],M=new Map,A,I,O,F,L=0,W=0,T=C=>o.contentWindow?.postMessage({...C,channel:g?.channel},"*"),H=C=>{y.textContent=C},V=()=>{W++,A=null,t("table-save").disabled=!0};function $(){o.onload=null,L++,g=null,v=null,x=!1,w=-1,b=[],M.clear(),V(),t("document-format-toggle").disabled=!0,t("document-format-controls").hidden=!0,t("document-format-toggle").setAttribute("aria-expanded","false"),t("document-format-tables").value="keep",u.disabled=!0,u.lastChild.textContent="\uD45C \uC9C1\uC811 \uD3B8\uC9D1",u.setAttribute("aria-pressed","false"),s.hidden=!0,m.open&&m.close(),j()}function j(){let C=w>=0;for(let k of["table-total-width","table-equal","table-revert"])t(k).disabled=!C;if(t("document-format-basic").disabled=!g,t("document-format-review").disabled=!g||!M.size,t("format-summary").textContent=M.size?`\uD45C ${M.size}\uAC1C \uC870\uC808\uB428 \xB7 \uBCC0\uACBD \uBE44\uAD50 \uD6C4 \uC800\uC7A5\uD569\uB2C8\uB2E4.`:"\uBCC0\uACBD \uBE44\uAD50 \uD6C4 \uC6D0\uBCF8 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4.",t("table-revert-all").disabled=!M.size,t("document-format-tables").disabled=!g?.tables.some(k=>k.editable),t("table-fit").disabled=!C||!g?.tables.find(k=>k.index===w)?.contentWeights,C){let k=b.reduce((R,a)=>R+a,0);t("table-total-width").min=String(Math.max(320,b.length*40)),t("table-total-width").max=String(Math.max(1200,k)),t("table-total-width").value=k,t("table-total-label").textContent=k+"px"}else t("table-total-label").textContent=""}function oe(C){b=C.slice(),M.set(w,b.slice()),V(),T({type:"csync-table-widths",index:w,widths:b}),j(),H("\uD45C "+(w+1)+" \xB7 \uC544\uC9C1 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.")}u.onclick=()=>{if(x=!x,s.hidden=!x,u.lastChild.textContent=x?"\uD45C \uC9C1\uC811 \uD3B8\uC9D1 \uC911":"\uD45C \uC9C1\uC811 \uD3B8\uC9D1",u.setAttribute("aria-pressed",String(x)),T({type:"csync-table-edit",enabled:x}),x){for(let[C,k]of M)T({type:"csync-table-widths",index:C,widths:k});w>=0&&T({type:"csync-table-widths",index:w,widths:b})}x&&w<0&&H("\uBBF8\uB9AC\uBCF4\uAE30\uC5D0\uC11C \uD3B8\uC9D1\uD560 \uD45C\uB97C \uD074\uB9AD\uD558\uC138\uC694.")},window.addEventListener("message",C=>{let k=C.data;if(!g||!x||C.source!==o.contentWindow||k?.channel!==g.channel)return;let R=g.tables.find(a=>a.index===k.index&&a.editable);R&&(k.type==="csync-table-select"&&(w=R.index,b=(M.get(w)??R.widths).slice(),V(),T({type:"csync-table-widths",index:w,widths:b}),j(),H("\uD45C "+(w+1)+" \uC120\uD0DD \xB7 \uB0B4\uC6A9\uC5D0 \uB9DE\uCDA4\uC73C\uB85C \uC790\uB3D9 \uBC30\uBD84\uD558\uAC70\uB098 \uC5F4 \uACBD\uACC4\uB97C \uB4DC\uB798\uADF8\uD558\uC138\uC694.")),k.type==="csync-table-change"&&k.index===w&&Array.isArray(k.widths)&&k.widths.length===R.widths.length&&k.widths.every(a=>Number.isInteger(a)&&a>=40)&&k.widths.reduce((a,h)=>a+h,0)<=3e3&&(b=k.widths.slice(),M.set(w,b.slice()),V(),j(),H("\uD45C "+(w+1)+" \xB7 \uC544\uC9C1 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.")))});let te=(C,k)=>Array.from({length:k},(R,a)=>Math.floor(C/k)+(a<C%k?1:0));t("table-equal").onclick=()=>oe(te(b.reduce((C,k)=>C+k,0),b.length)),t("table-fit").onclick=()=>{let C=g.tables.find(k=>k.index===w);oe(wt(b.reduce((k,R)=>k+R,0),C.contentWeights)),H("\uD45C "+(w+1)+" \xB7 \uAE00\uC790 \uAE38\uC774\uC5D0 \uB9DE\uCDB0 \uBC30\uBD84\uD588\uC2B5\uB2C8\uB2E4. \uC544\uC9C1 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.")};function Z(C){let k=g.tables.filter(R=>R.editable);if(k.length){T({type:"csync-table-edit",enabled:!0});for(let R of k){let a=M.get(R.index)??R.widths,h=a.reduce((f,S)=>f+S,0),E=C==="fit"?wt(h,R.contentWeights):te(h,a.length);M.set(R.index,E),T({type:"csync-table-widths",index:R.index,widths:E})}w<0&&(w=k[0].index),b=M.get(w).slice(),T({type:"csync-table-widths",index:w,widths:b}),V(),j(),T({type:"csync-table-edit",enabled:x}),H(`\uD45C ${k.length}\uAC1C\uC5D0 ${C==="fit"?"\uB0B4\uC6A9\uC5D0 \uB9DE\uCDA4":"\uADE0\uB4F1 \uBC30\uBD84"}\uC744 \uC801\uC6A9\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uACBD \uBE44\uAD50 \uD6C4 \uC800\uC7A5\uD558\uC138\uC694.`)}}t("document-format-tables").onchange=()=>{t("document-format-tables").value==="keep"?t("table-revert-all").onclick():Z(t("document-format-tables").value)},t("table-revert-all").onclick=()=>{T({type:"csync-table-edit",enabled:!0});for(let C of g.tables.filter(k=>k.editable))T({type:"csync-table-widths",index:C.index,widths:C.widths});M.clear(),t("document-format-tables").value="keep",w>=0&&(b=g.tables.find(C=>C.index===w).widths.slice(),T({type:"csync-table-widths",index:w,widths:b})),T({type:"csync-table-edit",enabled:x}),V(),j(),H("\uBAA8\uB4E0 \uD45C\uC758 \uB108\uBE44 \uBCC0\uACBD\uC744 \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4.")},t("document-format-toggle").onclick=()=>{let C=!t("document-format-controls").hidden;t("document-format-controls").hidden=C,t("document-format-toggle").setAttribute("aria-expanded",String(!C)),C&&x&&u.onclick()};function de(C,k,R){A=C.planId,t("table-save-status").textContent="",t("table-review-title").textContent="\uBB38\uC11C \uC11C\uC2DD \uBCC0\uACBD \uD655\uC778",t("format-review-note").textContent=k?"\uAE30\uBCF8 \uC11C\uC2DD \uC815\uB9AC\uC640 \uD45C \uC870\uC808 \uACB0\uACFC\uB97C \uD655\uC778\uD558\uC138\uC694. \uC800\uC7A5\uC744 \uB20C\uB7EC\uC57C \uD30C\uC77C\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4.":"\uD45C \uC870\uC808 \uACB0\uACFC\uB97C \uD655\uC778\uD558\uC138\uC694. \uBCF8\uBB38 \uAE30\uBCF8 \uC11C\uC2DD\uC740 \uBCC0\uACBD\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC800\uC7A5\uC744 \uB20C\uB7EC\uC57C \uD30C\uC77C\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4.",m.open||m.showModal(),I||(O=R.editor.createModel("","markdown"),F=R.editor.createModel("","markdown"),I=R.editor.createDiffEditor(t("table-review-diff"),{automaticLayout:!0,readOnly:!0,originalEditable:!1,minimap:{enabled:!1},wordWrap:"on",scrollBeyondLastLine:!1}),I.setModel({original:O,modified:F})),O.setValue(C.before),F.setValue(C.after),I.layout(),t("table-save").disabled=C.before===C.after,C.before===C.after&&(t("table-save-status").textContent="\uC815\uB9AC\uD560 \uC11C\uC2DD \uBCC0\uACBD\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.")}async function Q(C){if(!g)return;let k=L,R=W;t("document-format-basic").disabled=t("document-format-review").disabled=!0;try{let a=await e("/api/document-format/preview",{...v,hash:g.hash,basic:C,tables:"keep",changes:Array.from(M,([E,f])=>({index:E,widths:f.slice()}))}),h=await i();if(k!==L||R!==W)return;de(a,C,h)}catch(a){l(a.message,"error")}finally{j()}}return t("document-format-basic").onclick=()=>Q(!0),t("document-format-review").onclick=()=>Q(!1),t("table-total-width").oninput=C=>{let k=Number(C.target.value),R=k-b.length*40,a=b.map(S=>S-40),h=a.reduce((S,P)=>S+P,0),E=h?a.map(S=>40+Math.floor(S/h*R)):te(k,b.length),f=k-E.reduce((S,P)=>S+P,0);for(let S=0;f>0;S++,f--)E[S%E.length]++;oe(E)},t("table-revert").onclick=()=>{M.delete(w),b=g.tables.find(C=>C.index===w).widths.slice(),T({type:"csync-table-widths",index:w,widths:b}),V(),j(),H("\uC120\uD0DD\uD55C \uD45C\uC758 \uBCC0\uACBD\uC744 \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4.")},t("table-save").onclick=async()=>{if(!A)return;let C=A;t("table-save").disabled=!0,t("table-review-close").disabled=!0,d(!0);try{await e("/api/table-format/save",{planId:C}),m.close(),l("\uBB38\uC11C \uC11C\uC2DD\uC744 \uC6D0\uBCF8 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.","success"),await c()}catch(k){t("table-save-status").textContent=k.message,l(k.message,"error")}finally{t("table-review-close").disabled=!1,d(!1)}},t("table-review-close").onclick=()=>m.close(),{clear:$,load(C,k){$(),g=C,v=k,o.onload=()=>{g===C&&(t("document-format-toggle").disabled=!1,u.disabled=!C.tables?.some(R=>R.editable),j(),T({type:"csync-table-edit",enabled:x}))}}}}var p=e=>document.getElementById(e),Ie=it(),kt=Qe(),ge=at(),Wt=rt(),N,ye,Re=[],B=null,D=null,Se=null,q=!1,le=0,pe=null,ze=null,Ne=!1,be="",Ct,je,Ee=0,ae,Le,Me=[],ue="file",me=!1,se=new Set,we=new Map,Ae=new Set,U="convert",Jt=vt({api:re,loadMonaco:Pe,notify:Ie,refresh:()=>Et.update(!0),setBusy:e=>{q=e,ee(),G()}}),Et=yt({notify:Ie,api:re,formatting:Jt,selection:()=>({base:B||N,file:D,folder:U==="convert"?ue==="folder":me})});st(()=>U);var ve=!0,ke={convert:{},sync:{}},St=()=>({base:B,folder:N,file:D,selectedDirectory:me,baseInput:p("base-input").value,expanded:[...se]}),zt="csync.workspace.v1";function $e(){if(!ve){ke[U]=St();try{localStorage.setItem(zt,JSON.stringify({workspaces:ke,mode:U,referenceRoots:p("sync-references").value,out:p("out-input").value,convertScope:ue,direction:p("direction").value,fix:p("fix").checked,verify:p("sync-verify").checked,pullFormat:p("sync-pull-format").value,sideBySide:p("side-by-side").checked}))}catch{}}}function Ht(){try{let e=JSON.parse(localStorage.getItem(zt));return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}catch{return{}}}function Mt(e){U=e,p(e+"-view").prepend(p("document-preview-panel"));for(let n of["convert","sync"])p("tab-"+n).setAttribute("aria-selected",String(n===U)),p("tab-"+n).tabIndex=n===U?0:-1,p(n+"-view").hidden=n!==U;p("choose-base").lastChild.textContent="\uAE30\uC900 \uD3F4\uB354 \uBCC0\uACBD\u2026",p("base-input").setAttribute("aria-label",U==="sync"?"Confluence \uC791\uC5C5 \uAE30\uC900 \uD3F4\uB354 \uACBD\uB85C":"\uBCC0\uD658 \uAE30\uC900 \uD3F4\uB354 \uACBD\uB85C"),p("workspace-note").textContent=ge.standalone?"\uD30C\uC77C\uACFC \uBCC0\uD658\uC740 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uCC98\uB9AC\uD558\uBA70, Confluence \uC694\uCCAD\uB9CC \uC911\uACC4 API\uB85C \uC804\uB2EC\uD569\uB2C8\uB2E4.":ge.browser?"\uD30C\uC77C\uC740 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC77D\uACE0 \uC800\uC7A5\uD558\uBA70, \uBCC0\uD658\xB7Confluence \uC791\uC5C5\uC740 \uC11C\uBC84\uC758 \uC784\uC2DC \uACF5\uAC04\uC5D0\uC11C \uCC98\uB9AC\uD569\uB2C8\uB2E4.":U==="sync"?"\uC6D0\uACA9 \uBCC0\uACBD\uC740 \uC704\uC5D0\uC11C \uAC00\uC838\uC624\uACE0, \uC5C5\uB85C\uB4DC\uD560 \uBB38\uC11C\uB294 \uCCB4\uD06C \uD6C4 \uBBF8\uB9AC\uBCF4\uAE30\uD558\uC138\uC694.":"\uBCC0\uD658\uC740 \uC774 \uCEF4\uD4E8\uD130\uC5D0\uC11C \uCC98\uB9AC\uB429\uB2C8\uB2E4.",U==="convert"&&ae?.layout()}async function Ve(e){if(e===U||q)return;$e(),ve=!0,q=!0,Mt(e);let n;try{n=await Tt(ke[e])}finally{ve=!1,q=!1,ee(),G()}n&&_(n,!0)}for(let e of["convert","sync"])p("tab-"+e).onclick=()=>Ve(e),p("tab-"+e).onkeydown=n=>{if(["ArrowLeft","ArrowRight","Home","End"].includes(n.key)){n.preventDefault();let i=n.key==="Home"?"convert":n.key==="End"||e==="convert"?"sync":"convert";p("tab-"+i).disabled||(Ve(i),p("tab-"+i).focus())}};var Fe,Be;async function jt(){if(!ae)try{let e=await Pe();Fe=e.editor.createModel("","markdown"),Be=e.editor.createModel("","markdown"),ae=e.editor.createDiffEditor(p("diff"),{automaticLayout:!0,readOnly:!0,originalEditable:!1,renderSideBySide:p("side-by-side").checked,useInlineViewWhenSpaceIsLimited:!0,renderSideBySideInlineBreakpoint:700,ignoreTrimWhitespace:!1,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:"on",renderOverviewRuler:!0,accessibilityVerbose:!0,padding:{top:12,bottom:12},lineHeight:22,fontSize:12}),ae.setModel({original:Fe,modified:Be}),ae.getOriginalEditor().updateOptions({ariaLabel:"\uC6D0\uBCF8 Markdown"}),ae.getModifiedEditor().updateOptions({ariaLabel:"\uBCC0\uD658 \uACB0\uACFC Markdown"}),ae.onDidUpdateDiff(()=>{let i=!!ae.getLineChanges()?.length;p("previous-change").disabled=p("next-change").disabled=!i})}catch(e){throw p("editor-error").hidden=!1,p("editor-error").textContent="\uBCF8\uBB38 \uBE44\uAD50 \uD654\uBA74\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC0C8\uB85C\uACE0\uCE68\uD574 \uC8FC\uC138\uC694. "+e.message,e}}p("previous-change").onclick=()=>ae?.goToDiff("previous");p("next-change").onclick=()=>ae?.goToDiff("next");p("side-by-side").onchange=()=>ae?.updateOptions({renderSideBySide:p("side-by-side").checked});async function re(e,n,i,c){let d=Ze(e,n,c),l=d&&kt.begin(d);try{e!=="/api/sync/staging"&&!(ge.browser&&e==="/api/pick-folder")&&await Le?.waitForLocalCheck();let t=await ge.request(e,{signal:i,method:n?"POST":"GET",headers:{...n?{"Content-Type":"application/json"}:{}},...n?{body:JSON.stringify(n)}:{}}),o=await t.json();if(!t.ok)throw Object.assign(new Error(o.error||"\uC694\uCCAD\uC744 \uCC98\uB9AC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."),{code:o.code,conflicts:o.conflicts,inPlace:o.inPlace,output:o.output});return o}finally{l?.end()}}function _(e,n=!1,i=n?"error":"info"){let c=p(U==="sync"?"sync-status":"status");c.textContent=e,c.classList.toggle("error",n),i&&Ie(e,i)}function ce(){if(U==="sync"){_("");return}Me=[],p("preview-documents").hidden=!0,Se=null,p("result").hidden=!0,p("details").hidden=!0,Fe?.setValue(""),Be?.setValue(""),p("comparison-empty").hidden=!1,p("previous-change").disabled=p("next-change").disabled=!0,p("preview-label").textContent="\uBBF8\uB9AC\uBCF4\uAE30 \uB300\uAE30",_("")}var fe=(e,n)=>n===e||n.startsWith(e.endsWith("/")?e:e+"/")||n.startsWith(e.endsWith("\\")?e:e+"\\");function ee(){p("local-disconnect").disabled=q,Et.update();for(let l of["preview","save","next-document"])p(l).disabled=q||!D;for(let l of["preview-document","tab-convert","tab-sync","choose-base","apply-base","base-input","base-home","up","choose-out","out-input","direction","fix","search"])p(l).disabled=q;q||(p("up").disabled=N===ye||B&&!fe(B,ye));let e=B||N,n=!!e&&p("out-input").value===e;p("convert-save-mode").textContent=n?"\uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30":"\uBCC4\uB3C4 \uD3F4\uB354 \uC800\uC7A5",p("out-mode-hint").textContent=n?"\uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30 \xB7 \uD655\uC778 \uD6C4 \uC800\uC7A5":ge.browser?"\uBCC4\uB3C4 \uD3F4\uB354 \uB610\uB294 \uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30":"\uC120\uD0DD \uC0AC\uD56D",p("root-name").textContent=e?e.split(/[\\/]/).filter(Boolean).pop()||e:"\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694",p("root-path").textContent=e||"\uC544\uC9C1 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",p("root-purpose").textContent=U==="sync"?"Push \xB7 Pull \uAE30\uC900":"\uBCC0\uD658 \uAE30\uC900",p("root-hint").textContent=U==="sync"?"\uC2A4\uD398\uC774\uC2A4 \uBB38\uC11C\uB97C \uBCF4\uAD00\uD558\uB294 \uC791\uC5C5\uACF5\uAC04\uC785\uB2C8\uB2E4. \uC5C5\uB85C\uB4DC \uB300\uC0C1\uC740 \uC624\uB978\uCABD \uBCC0\uACBD\uC0AC\uD56D\uC5D0\uC11C \uCCB4\uD06C\uD558\uC138\uC694.":"\uBB38\uC11C\uC640 \uCC38\uC870 \uB9C1\uD06C\uB97C \uCC3E\uB294 \uAE30\uC900\uC785\uB2C8\uB2E4. \uC544\uB798\uC5D0\uC11C \uBCC0\uD658\uD560 \uD30C\uC77C\xB7\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694.",p("base-home").disabled=q||!e||e===N;let i=e&&N&&fe(e,N)?N.slice(e.length).replace(/\\/g,"/"):N||"";p("path").textContent=N?N===e?"\uAE30\uC900 \uD3F4\uB354 /":`\uAE30\uC900 \uD3F4\uB354 ${i}`:"\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694",p("path").title=N||"",p("explorer-note").textContent=U==="sync"?"\uD30C\uC77C\uC744 \uC120\uD0DD\uD574 \uB0B4\uC6A9\uC744 \uBBF8\uB9AC\uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4":"\uD30C\uC77C\xB7\uD3F4\uB354\uB97C \uC120\uD0DD\uD574 \uBCC0\uD658\uD558\uC138\uC694",p("fix").disabled=q||p("direction").value==="repair",p("selected").textContent=D?D.split(/[\\/]/).pop():"\uBCC0\uD658\uD560 \uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uC138\uC694";let c=ue==="folder",d=c&&!!B&&D===B;p("convert-select-all").disabled=q||!B||d,p("convert-select-all").textContent=d?"\uAE30\uC900 \uD3F4\uB354 \uC804\uCCB4 \uC120\uD0DD\uB428":"\uAE30\uC900 \uD3F4\uB354 \uC804\uCCB4 \uC120\uD0DD",p("convert-target-note").textContent=d?"\uAE30\uC900 \uD3F4\uB354\uC640 \uBAA8\uB4E0 \uD558\uC704 \uD3F4\uB354\uC758 Markdown \uBB38\uC11C\uB97C \uBCC0\uD658\uD569\uB2C8\uB2E4.":"\uD30C\uC77C\xB7\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uAC70\uB098 \uAE30\uC900 \uD3F4\uB354 \uC804\uCCB4\uB97C \uC120\uD0DD\uD558\uC138\uC694.",p("selected").textContent=D?(c&&U==="convert"?d?"\uC804\uCCB4 \xB7 ":"\uD3F4\uB354 \xB7 ":"")+D.split(/[\\/]/).pop():c?"\uBCC0\uD658\uD560 \uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694":"\uBCC0\uD658\uD560 \uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uC138\uC694",p("base").textContent=D||"\uC67C\uCABD\uC5D0\uC11C \uB300\uC0C1\uC744 \uC120\uD0DD\uD558\uC138\uC694.",p("convert-output-hint").textContent=n?"\uC120\uD0DD\uD55C \uBB38\uC11C\xB7\uCCA8\uBD80\uB9CC \uC6D0\uB798 \uC704\uCE58\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. \uBCC0\uACBD \uD30C\uC77C \uD655\uC778 \uD6C4 \uB36E\uC5B4\uC501\uB2C8\uB2E4.":c?"\uC120\uD0DD \uD3F4\uB354 \uC548\uC758 \uBAA8\uB4E0 Markdown\uC744 \uBCC0\uD658\uD569\uB2C8\uB2E4. \uCD9C\uB825 \uD3F4\uB354 \uC544\uB798\uC5D0 \uC120\uD0DD \uD3F4\uB354 \uB0B4\uBD80 \uAD6C\uC870\uB9CC \uC720\uC9C0\uD569\uB2C8\uB2E4.":"\uC120\uD0DD\uD55C Markdown\uC744 \uCD9C\uB825 \uD3F4\uB354 \uBC14\uB85C \uC544\uB798\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. \uB9C1\uD06C\uB294 \uD574\uB2F9 \uD30C\uC77C\uC774 \uC788\uB294 \uD3F4\uB354\uB97C \uAE30\uC900\uC73C\uB85C \uD574\uC11D\uD569\uB2C8\uB2E4.",p("base").title=B||"",p("selected").title=D||"",Le?.update(q,ve),$e()}function G(){let e=p("files").scrollTop;p("files").replaceChildren();let n=pe??Re;if(p("count").textContent=Ne?"\uAC80\uC0C9 \uC911\u2026":n.length+(pe?"\uAC1C \uACB0\uACFC":"\uAC1C \uD56D\uBAA9"),be||pe&&!n.length){let c=document.createElement("div");c.className="empty",c.textContent=be||(pe?"\uC77C\uCE58\uD558\uB294 .md \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.":"\uD45C\uC2DC\uD560 \uD3F4\uB354\uB098 .md \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."),p("files").append(c)}let i=(c,d=0)=>{let l=document.createElement("div");l.className="tree-row",l.style.paddingLeft=d*16+"px";let t=document.createElement(c.directory?"button":"span");t.className="tree-toggle",c.directory&&(t.textContent=se.has(c.path)?"\u25BE":"\u25B8",t.disabled=q,t.dataset.path=c.path,t.setAttribute("aria-expanded",String(se.has(c.path))),t.setAttribute("aria-label",c.name+(se.has(c.path)?" \uC811\uAE30":" \uD3BC\uCE58\uAE30")),t.onclick=()=>Vt(c.path)),l.append(t);let o=document.createElement("button");o.className="file"+(c.path===D?" selected":""),o.disabled=q;let u=document.createElement("span");u.className=c.directory?"icon folder-icon":"icon",c.directory?u.innerHTML='<svg viewBox="0 0 24 24" fill="none"><path d="M3 6a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z" fill="#f7d783" stroke="#bf9132" stroke-width="1.5"/><path d="M3 9h18" stroke="#bf9132" stroke-width="1.5"/></svg>':u.textContent="MD",u.setAttribute("aria-hidden","true");let s=document.createElement("span");s.textContent=c.name;let m=document.createElement("span");if(m.className="file-label",m.append(s),c.relativePath){let y=document.createElement("small");y.className="file-location",y.textContent=c.relativePath,m.append(y),o.title=c.path}if(o.append(u,m),o.title=c.path,o.setAttribute("aria-pressed",String(c.path===D)),o.onclick=()=>{me=c.directory,U==="convert"&&(ue=c.directory?"folder":"file"),D=c.path,(!B||!fe(B,D))&&(B=ze||N),ce(),ee(),G()},l.append(o),p("files").append(l),c.directory&&se.has(c.path)){let y=we.get(c.path);if(y?.length)y.forEach(g=>i(g,d+1));else{let g=document.createElement("div");g.className="tree-note",g.style.paddingLeft=(d+1)*16+24+"px",g.textContent=Ae.has(c.path)?"\uBD88\uB7EC\uC624\uB294 \uC911\u2026":y?"\uD45C\uC2DC\uD560 \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.":"\uD3BC\uCE58\uAE30\uB97C \uB2E4\uC2DC \uB20C\uB7EC \uC8FC\uC138\uC694.",p("files").append(g)}}};pe?n.forEach(c=>i(c)):N&&i({name:N.split(/[\\/]/).pop()||N,path:N,directory:!0}),p("files").scrollTop=e}async function Vt(e){if(q)return;let n=le;if(se.has(e))se.delete(e);else if(se.add(e),!we.has(e)&&!Ae.has(e)){Ae.add(e),G();try{let i=await re("/api/browse?path="+encodeURIComponent(e));if(n!==le)return;we.set(e,i.entries)}catch(i){n===le&&(se.delete(e),_("\uD3F4\uB354\uB97C \uD3BC\uCE60 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: "+i.message,!0))}finally{n===le&&Ae.delete(e)}}n===le&&(G(),$e(),[...p("files").querySelectorAll(".tree-toggle")].find(i=>i.dataset.path===e)?.focus())}async function ie(e,n=!1){De(),p("search").value="";let i=++le;try{let c=await re("/api/browse"+(e?"?path="+encodeURIComponent(e):""));return i!==le?void 0:(N=c.path,ye=c.parent,Re=c.entries,we=new Map([[N,Re]]),se=new Set([N]),Ae=new Set,(n||!B)&&(B=N,D=null,me=!1,ve||ce()),n&&(p("root-path-editor").open=!1),p("base-input").value=B||N,p("path").textContent=N,p("path").title=N,p("base-input").title=B||N,p("search").value="",G(),ee(),!0)}catch(c){i===le&&_("\uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: "+c.message,!0)}}async function At(e){q=!0,ee(),G(),_("\uC2DC\uC2A4\uD15C \uD3F4\uB354 \uB2E4\uC774\uC5BC\uB85C\uADF8\uC5D0\uC11C \uD3F4\uB354\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",!1,null);try{let n=await re("/api/pick-folder",{kind:e,start:e==="base"?B||N:p("out-input").value||ye});n.path?e==="base"?await ie(n.path,!0):(p("out-input").value=n.path,ce()):_("\uD3F4\uB354 \uC120\uD0DD\uC744 \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4.")}catch(n){_(n.message,!0)}finally{q=!1,ee(),G()}}p("choose-base").onclick=()=>At("base");p("choose-out").onclick=()=>At("out");p("apply-base").onclick=()=>ie(p("base-input").value,!0);p("base-input").onkeydown=e=>{e.key==="Enter"&&ie(p("base-input").value,!0)};p("up").onclick=()=>ie(ye);p("base-home").onclick=()=>{!q&&B&&ie(B)};p("convert-select-all").onclick=()=>{q||!B||U!=="convert"||(ue="folder",me=!0,D=B,ce(),ee(),G())};function De(){clearTimeout(Ct),je?.abort(),Ee++,pe=null,ze=null,Ne=!1,be=""}p("search").oninput=()=>{De();let e=p("search").value.trim();if(!e||!N){G();return}let n=Ee;ze=B||N,pe=[],Ne=!0,be="\uAE30\uC900 \uD3F4\uB354\uC758 \uBAA8\uB4E0 \uD558\uC704 \uD3F4\uB354\uB97C \uAC80\uC0C9\uD569\uB2C8\uB2E4\u2026",G(),Ct=setTimeout(async()=>{je=new AbortController;try{let i=await re("/api/search?"+new URLSearchParams({path:ze,q:e}),void 0,je.signal);if(n!==Ee)return;ze=i.root,pe=i.entries,be=i.skipped?"\uC77D\uC744 \uC218 \uC5C6\uB294 \uD558\uC704 \uD3F4\uB354 "+i.skipped+"\uAC1C\uB97C \uAC74\uB108\uB6F0\uC5C8\uC2B5\uB2C8\uB2E4.":""}catch(i){if(n!==Ee)return;be="\uAC80\uC0C9\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: "+i.message}finally{n===Ee&&(Ne=!1,G())}},250)};p("direction").onchange=()=>{ce(),ee(),p("direction-hint").textContent={markdown:"\uC704\uD0A4\uB9C1\uD06C\uB97C \uC0C1\uB300 \uB9C1\uD06C\uB85C, PDF \uD398\uC774\uC9C0 \uCC38\uC870\uB97C \uC774\uBBF8\uC9C0\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.",obsidian:"\uC0C1\uB300 \uBB38\uC11C \uB9C1\uD06C\uB97C \uC704\uD0A4\uB9C1\uD06C\uB85C \uBC14\uAFB8\uACE0 \uAC01\uC8FC\xB7PDF \uCC38\uC870\uB97C \uBCF5\uC6D0\uD569\uB2C8\uB2E4.",repair:"\uB9C1\uD06C \uD615\uC2DD\uC740 \uC720\uC9C0\uD558\uACE0 \uCF54\uB4DC\uBE14\uB85D \uC5B8\uC5B4\xB7CSS \uC794\uD574\xB7\uC774\uC2A4\uCF00\uC774\uD504 \uB4F1\uC744 \uBCF4\uC815\uD569\uB2C8\uB2E4."}[p("direction").value]};var he=p("repair-help-button"),qe=p("repair-tooltip"),It=()=>{qe.hidden=!1};he.onfocus=he.onclick=It;he.parentElement.onmouseenter=It;he.parentElement.onmouseleave=()=>{document.activeElement!==he&&(qe.hidden=!0)};he.onblur=()=>{qe.hidden=!0};he.onkeydown=e=>{e.key==="Escape"&&(qe.hidden=!0,e.stopPropagation())};function Lt(e){let n=Me[e];n&&(Fe.setValue(n.before),Be.setValue(n.after),p("comparison-empty").hidden=!0,p("preview-label").textContent=n.before===n.after?"\uBCF8\uBB38 \uBCC0\uACBD \uC5C6\uC74C":"\uBCC0\uACBD\uB41C \uBD80\uBD84 \uD45C\uC2DC")}p("preview-document").onchange=()=>Lt(Number(p("preview-document").value));p("fix").onchange=ce;p("out-input").oninput=()=>{ce(),ee()};async function $t(e){if(!(q||!D)){q=!0;try{ce(),ee(),G(),_(e?"\uBBF8\uB9AC\uBCF4\uAE30\uB97C \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4\u2026":"\uBB38\uC11C\uC640 \uCCA8\uBD80\uD30C\uC77C\uC744 \uBCC0\uD658\uD558\uB294 \uC911\uC785\uB2C8\uB2E4\u2026",!1,null),await jt();let n={base:B,file:D,scope:ue,out:p("out-input").value,to:p("direction").value,fix:p("fix").checked,preview:e},i,c={};for(;!i;)try{i=await re("/api/convert",{...n,approvedOverwrites:c})}catch(d){if(e||d.code!=="OVERWRITE_REQUIRED")throw d;if(!await Wt({conflicts:d.conflicts,inPlace:d.inPlace,output:d.output||n.out})){_("\uB36E\uC5B4\uC4F0\uAE30\uB97C \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4. \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.");return}for(let l of d.conflicts)c[l.path]=l.hash;_("\uAE30\uC874 \uD30C\uC77C\uC744 \uB36E\uC5B4\uC4F0\uB294 \uC911\uC785\uB2C8\uB2E4\u2026",!1,null)}if(Me=i.previews,p("preview-document").replaceChildren(...Me.map((d,l)=>{let t=document.createElement("option");return t.value=l,t.textContent=d.path,t})),p("preview-documents").hidden=i.documentCount<=1,p("preview-count").textContent=`\uC804\uCCB4 ${i.documentCount}\uAC1C \uBCC0\uD658 \xB7 ${Me.length}\uAC1C \uBCF8\uBB38 \uBE44\uAD50`,Lt(0),p("log").textContent=i.log,p("details").hidden=!1,Se=i.output,Se&&(p("output").textContent=Se,p("result").hidden=!1),e)_("\uBBF8\uB9AC\uBCF4\uAE30 \uC644\uB8CC. \uCD9C\uB825 \uC704\uCE58\uB97C \uD655\uC778\uD558\uACE0 \uC800\uC7A5\uD558\uC138\uC694.",!1,"success");else if(i.saved&&i.saved.created===0&&i.saved.overwritten===0)_(`\uAE30\uC874 \uCD9C\uB825\uACFC \uB0B4\uC6A9\uC774 \uAC19\uC544 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD30C\uC77C ${i.saved.reused}\uAC1C\uB97C \uADF8\uB300\uB85C \uC7AC\uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4.`,!1,"success");else{let d=i.saved;_(d?`\uC800\uC7A5 \uC644\uB8CC \xB7 \uC0C8 \uD30C\uC77C ${d.created}\uAC1C \xB7 \uB36E\uC5B4\uC4F4 \uD30C\uC77C ${d.overwritten}\uAC1C \xB7 \uB3D9\uC77C \uB0B4\uC6A9 \uC7AC\uC0AC\uC6A9 ${d.reused}\uAC1C (\uBB38\uC11C\xB7\uCCA8\uBD80 \uD3EC\uD568)`:`\uBB38\uC11C ${i.documentCount}\uAC1C \uC800\uC7A5 \uC644\uB8CC.`,!1,"success")}}catch(n){_(n.message,!0)}finally{q=!1,ee(),G()}}}p("next-document").onclick=()=>{q||(D=null,ce(),De(),p("search").value="",ee(),G(),p("search").focus(),p("search").scrollIntoView({block:"center",behavior:"auto"}),_("\uB2E4\uC74C \uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uC138\uC694. \uAE30\uC900 \uD3F4\uB354\uC640 \uBCC0\uD658 \uC124\uC815\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4."))};p("preview").onclick=()=>$t(!0);p("save").onclick=()=>$t(!1);p("open").onclick=async()=>{try{let e=await re("/api/open",{path:Se});ge.browser&&_(`\uC120\uD0DD\uD55C \uCD9C\uB825 \uD3F4\uB354 (${e.name})\uC5D0 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.`)}catch(e){_("\uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC704 \uC800\uC7A5 \uACBD\uB85C\uB97C \uC774\uC6A9\uD574 \uC8FC\uC138\uC694. "+e.message,!0)}};Le=bt({activity:kt,api:re,loadMonaco:Pe,notify:Ie,context:()=>{let e=U==="sync"?St():ke.sync;return{base:e.base||e.folder,folder:e.folder,file:e.file,directory:e.selectedDirectory}},setBusy:e=>{q=e,ee(),G()},showSync:()=>Ve("sync"),refresh:async()=>{U==="sync"&&await ie(B||N)}});document.querySelector(".app-main").addEventListener("input",$e);document.querySelector(".app-main").addEventListener("change",$e);async function Tt(e){let n=o=>typeof e[o]=="string"?e[o]:"";le++,De(),B=null,D=null,me=!1,N=void 0,ye=void 0,Re=[],p("base-input").value="",ee(),G();let i="",c=n("base"),d=n("folder");c?await ie(c,!0)?d&&fe(B,d)&&d!==B&&(await ie(d)||(i="\uC774\uC804 \uD0D0\uC0C9 \uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uAE30\uC900 \uD3F4\uB354\uB97C \uC5F4\uC5C8\uC2B5\uB2C8\uB2E4.")):(i="\uC800\uC7A5\uB41C \uAE30\uC900 \uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uC2DC\uC791 \uD3F4\uB354\uB97C \uC5F4\uC5C8\uC2B5\uB2C8\uB2E4. \uACBD\uB85C\uB97C \uB2E4\uC2DC \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",await ie()):await ie(d||void 0)||(i="\uC774\uC804 \uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uC2DC\uC791 \uD3F4\uB354\uB97C \uC5F4\uC5C8\uC2B5\uB2C8\uB2E4.",await ie());let l=n("file");if(l&&B&&fe(B,l))try{if(U==="convert"&&ue==="folder"||U==="sync"&&e.selectedDirectory===!0)D=(await re("/api/browse?path="+encodeURIComponent(l))).path,me=!0;else{let o=l.slice(0,Math.max(l.lastIndexOf("/"),l.lastIndexOf("\\")));(await re("/api/browse?path="+encodeURIComponent(o))).entries.some(s=>!s.directory&&s.path===l)?D=l:i="\uC774\uC804\uC5D0 \uC120\uD0DD\uD55C \uBB38\uC11C\uAC00 \uC5C6\uC5B4 \uC120\uD0DD\uC744 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4."}}catch{i="\uC774\uC804\uC5D0 \uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uC120\uD0DD\uC744 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4."}let t=new Set(Array.isArray(e.expanded)?e.expanded.filter(o=>typeof o=="string"&&N&&fe(N,o)):[]);if(!Array.isArray(e.expanded)&&D&&N&&fe(N,D)){let o=D.slice(0,Math.max(D.lastIndexOf("/"),D.lastIndexOf("\\")));for(;o&&fe(N,o)&&(t.add(o),o!==N);)o=o.slice(0,Math.max(o.lastIndexOf("/"),o.lastIndexOf("\\")))}for(let o of t)try{we.has(o)||we.set(o,(await re("/api/browse?path="+encodeURIComponent(o))).entries),se.add(o)}catch{}return!i&&n("baseInput")&&(p("base-input").value=n("baseInput")),i&&U==="convert"&&ce(),i}async function Kt(){let e=Ht(),n=d=>typeof e[d]=="string"?e[d]:"";q=!0,ee(),p("sync-references").value=n("referenceRoots"),p("out-input").value=n("out"),["file","folder"].includes(e.convertScope)&&(ue=e.convertScope),["markdown","obsidian","repair"].includes(e.direction)&&(p("direction").value=e.direction),typeof e.fix=="boolean"&&(p("fix").checked=e.fix),["markdown","obsidian"].includes(e.pullFormat)&&(p("sync-pull-format").value=e.pullFormat),typeof e.verify=="boolean"&&(p("sync-verify").checked=e.verify),typeof e.sideBySide=="boolean"&&(p("side-by-side").checked=e.sideBySide,ae?.updateOptions({renderSideBySide:e.sideBySide}));let i=d=>d&&typeof d=="object"&&!Array.isArray(d);ke=i(e.workspaces)?{convert:i(e.workspaces.convert)?e.workspaces.convert:{},sync:i(e.workspaces.sync)?e.workspaces.sync:{}}:{convert:{base:e.base,folder:e.folder,file:e.file,baseInput:e.baseInput},sync:{base:e.base,folder:e.folder,file:e.file,baseInput:e.baseInput}},p("direction").onchange(),Mt(e.mode==="sync"?"sync":"convert");let c;try{c=await Tt(ke[U])}finally{ve=!1,q=!1,ee(),G()}await Le.resume(),c&&_(c,!0)}ge.ready.then(Kt).then(()=>{let e=Le.watch();window.addEventListener("pagehide",e,{once:!0})}).catch(e=>Ie(e.message,"error"));
3
+ `}function mt(e){let n=Object.hasOwn(ut,e.kind)?e.kind:"job",r=String(e.id??"").replace(/[^a-zA-Z0-9-]/g,"").slice(0,36)||"current";return`csync-${n}-${r}.log`}function ht({api:e,selection:n,setBusy:r,isBusy:c,status:u,start:l}){let t=p=>document.getElementById(p),a=t("sync-restore-dialog"),i,s=()=>JSON.stringify(n());function g(){i=void 0,a.close()}async function E(p,h){if(c())return;let w=s(),b=n();r(!0);try{let y=await e("/api/sync/restore",{...b,path:p,overwrite:h});if(w!==s())return;i={request:b,confirmationId:y.confirmationId,identity:w},t("sync-restore-title").textContent=h?"\uB85C\uCEEC \uC218\uC815\uC744 \uBC84\uB9AC\uACE0 \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uB418\uB3CC\uB9B4\uAE4C\uC694?":"\uB204\uB77D\uB41C \uBB38\uC11C\uB97C \uC6D0\uACA9\uC5D0\uC11C \uB2E4\uC2DC \uBC1B\uC744\uAE4C\uC694?",t("sync-restore-path").textContent=y.path,t("sync-restore-warning").textContent=h?"\uC774 \uBB38\uC11C\uC640 \uC6D0\uACA9\uC5D0\uC11C \uCC38\uC870\uD558\uB294 \uCCA8\uBD80\uC758 \uB85C\uCEEC \uC218\uC815\uC774 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4. \uC6D0\uACA9 \uCD5C\uC2E0 \uB0B4\uC6A9\uC73C\uB85C \uAD50\uCCB4\uD558\uBA70 \uB2E4\uB978 \uBB38\uC11C\uB294 \uC720\uC9C0\uD569\uB2C8\uB2E4.":"\uC9C0\uC815\uD55C \uBB38\uC11C\uC640 \uCC38\uC870 \uCCA8\uBD80\uB9CC \uB2E4\uC2DC \uBC1B\uC2B5\uB2C8\uB2E4. \uAE30\uC874 \uD30C\uC77C\uACFC \uB0B4\uC6A9\uC774 \uB2E4\uB978 \uAE30\uC874 \uCCA8\uBD80\uB294 \uB36E\uC5B4\uC4F0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",t("sync-restore-warning").textContent+=` \uAC00\uC838\uC624\uAE30 \uD615\uC2DD: ${b.format==="obsidian"?"Obsidian":"Markdown"}.`,t("sync-restore-confirm").textContent=h?"\uB85C\uCEEC \uC218\uC815 \uBC84\uB9AC\uACE0 \uC6D0\uBCF5":"\uC6D0\uACA9\uC5D0\uC11C \uBCF5\uAD6C",a.showModal(),t("sync-restore-cancel").focus()}catch(y){u(y.message,!0)}finally{r(!1)}}return t("sync-restore-cancel").onclick=g,a.addEventListener("cancel",g),t("sync-restore-confirm").onclick=async()=>{if(!i||c())return;if(i.identity!==s()){g(),u("\uB300\uC0C1\uC774\uB098 \uC5F0\uACB0 \uC124\uC815\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4. \uBCF5\uAD6C \uB300\uC0C1\uC744 \uB2E4\uC2DC \uC120\uD0DD\uD558\uC138\uC694.",!0);return}let p=i;g(),await l("restore",{...p.request,confirmationId:p.confirmationId})},{open:E}}function xt({api:e,selection:n,monaco:r,loadMonaco:c=async()=>r,notify:u}){let l=h=>document.getElementById(h),t="",a=0,i,s,g;function E(){a++,l("sync-diff-dialog").close()}l("sync-diff-close").onclick=E,l("sync-diff-dialog").addEventListener("cancel",()=>{a++});async function p(h=!1){let w=++a,b={...n(),path:t,remote:h};l("sync-diff-note").textContent=h?"\uC120\uD0DD\uD55C \uD398\uC774\uC9C0 \uBCF8\uBB38\uB9CC \uC870\uD68C\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":"\uC800\uC7A5\uB41C \uB85C\uCEEC \uBE44\uAD50 \uAE30\uC900\uC744 \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026",h&&(l("sync-diff-remote").textContent="\uC6D0\uACA9 \uBE44\uAD50 \uB2E4\uC2DC \uC2DC\uB3C4"),l("sync-diff-remote").disabled=!0,l("sync-diff-editor").hidden=!0,l("sync-diff-labels").hidden=!0;try{let y=await e("/api/sync/diff",b);if(w!==a||!l("sync-diff-dialog").open||!h&&y.before===null&&y.canRemote&&(l("sync-diff-note").textContent="\uC800\uC7A5\uB41C \uAE30\uC900\uBCF8\uC774 \uC5C6\uC5B4 \uC120\uD0DD\uD55C \uC6D0\uACA9 \uD398\uC774\uC9C0 \uBCF8\uBB38\uC744 \uC870\uD68C\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026",l("sync-diff-remote").hidden=!1,l("sync-diff-remote").textContent="\uC6D0\uACA9 \uBE44\uAD50 \uB2E4\uC2DC \uC2DC\uB3C4",y=await e("/api/sync/diff",{...b,remote:!0}),w!==a||!l("sync-diff-dialog").open)||(l("sync-diff-note").textContent=y.note,l("sync-diff-before-label").textContent=y.source==="remote"?"\uD604\uC7AC \uC6D0\uACA9 \uBCF8\uBB38 (\uADFC\uC0AC \uBCC0\uD658)":y.source==="new"?"\uC0C8 \uBB38\uC11C (\uC6D0\uACA9 \uC5C6\uC74C)":"\uB9C8\uC9C0\uB9C9 \uB3D9\uAE30\uD654 \uAE30\uC900",l("sync-diff-remote").hidden=!y.canRemote,l("sync-diff-remote").textContent=y.source==="remote"?"\uC6D0\uACA9 \uC0C8\uB85C\uACE0\uCE68":"\uC6D0\uACA9\uACFC \uBE44\uAD50 \xB7 \uBCF8\uBB38 1\uD68C \uC870\uD68C",y.before===null))return;if(l("sync-diff-editor").hidden=!1,l("sync-diff-labels").hidden=!1,!i){let I=await c();if(w!==a||!l("sync-diff-dialog").open)return;s=I.editor.createModel("","markdown"),g=I.editor.createModel("","markdown"),i=I.editor.createDiffEditor(l("sync-diff-editor"),{automaticLayout:!0,readOnly:!0,originalEditable:!1,ignoreTrimWhitespace:!1,renderSideBySide:!0,useInlineViewWhenSpaceIsLimited:!0,renderSideBySideInlineBreakpoint:700,minimap:{enabled:!1},wordWrap:"on",scrollBeyondLastLine:!1,fontSize:12}),i.setModel({original:s,modified:g}),i.getOriginalEditor().updateOptions({ariaLabel:"\uAE30\uC900 Markdown"}),i.getModifiedEditor().updateOptions({ariaLabel:"\uD604\uC7AC \uB85C\uCEEC Markdown"})}s.setValue(y.before),g.setValue(y.after),i.layout()}catch(y){w===a&&(l("sync-diff-note").textContent=y.message,u(y.message,"error"))}finally{w===a&&(l("sync-diff-remote").disabled=!1)}}return l("sync-diff-remote").onclick=()=>p(!0),{open:async(h,w=!0)=>{t=h,l("sync-diff-path").textContent=t,l("sync-diff-remote").hidden=!w,l("sync-diff-dialog").showModal(),await p(w)}}}function bt({api:e,selection:n,changed:r,busy:c,status:u,update:l,compare:t,restore:a=()=>{},canRestore:i=()=>!1,scopeKey:s=()=>""}){let g=x=>document.getElementById(x),E="csync.staging.views.v1",p=new Set(["same","new","changed","moved","unavailable"]),h=[],w="",b="",y=null,I=!1,L="",A="",N,R=!0,O=null,q=()=>{let{verify:x,...C}=n();return JSON.stringify([C,s()])},B=()=>JSON.stringify([n().base,n().referenceRoots]),X=()=>h.filter(x=>!x.unmapped&&x.remoteState!=="new"&&x.status!=="unavailable"&&(x.staged?x.stale:x.status!=="same")).map(x=>x.path),W=()=>h.filter(x=>x.staged).map(x=>x.path),$=()=>!!w&&w===q();function H(){try{let x=JSON.parse(localStorage.getItem(E));return Array.isArray(x)?x:[]}catch{return[]}}function ae(){try{let x=H().filter(C=>C?.key!==b);x.push({key:b,scannedAt:y,localCheckFailed:!!A,rows:h.map(({path:C,status:m,staged:d,stale:v,pageId:S,renamed:o,unmapped:M,recoverable:J,localUnverified:j,remoteState:Y,remoteVersion:ne,baselineVersion:ke})=>({path:C,status:m,staged:d,stale:v,pageId:S,renamed:o,unmapped:M,recoverable:J,localUnverified:j,remoteState:Y,remoteVersion:ne,baselineVersion:ke}))}),localStorage.setItem(E,JSON.stringify(x.slice(-5)))}catch{}}function te(){let x=I&&!$();if(g("sync-stage-note").classList.toggle("stale",x||!!A),A){g("sync-stage-note").textContent=(x?"\uC774\uC804 \uC870\uD68C \uACB0\uACFC\uC785\uB2C8\uB2E4. ":"")+"\uB85C\uCEEC \uBCC0\uACBD \uD655\uC778 \uC2E4\uD328: "+A+" \uC6D0\uACA9 \uC870\uD68C \uACB0\uACFC\uB294 \uC544\uB798\uC5D0 \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uC5C5\uB85C\uB4DC\uD558\uB824\uBA74 \uB85C\uCEEC \uC624\uB958\uB97C \uD574\uACB0\uD55C \uB4A4 \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.";return}if(x){let C=new Date(y).toLocaleString("ko-KR",{timeZone:"Asia/Seoul"});g("sync-stage-note").textContent=`\uC774\uC804 \uC870\uD68C \uACB0\uACFC\uC785\uB2C8\uB2E4 (${C}). \uD30C\uC77C\uC774\uB098 \uC5C5\uB85C\uB4DC \uC120\uD0DD\uC774 \uBC14\uB00C\uC5C8\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC \uBCC0\uACBD\uC744 \uC790\uB3D9\uC73C\uB85C \uB2E4\uC2DC \uD655\uC778\uD55C \uB4A4 \uC5C5\uB85C\uB4DC\uD560 \uBB38\uC11C\uB97C \uCCB4\uD06C\uD558\uACE0 \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C4\uD589\uD558\uC138\uC694.`}else g("sync-stage-note").textContent=I?h.some(C=>C.status!=="same"||C.staged||C.remoteState&&C.remoteState!=="unchanged")?h.some(C=>["unknown","unavailable"].includes(C.remoteState))?"\uC77C\uBD80 \uBB38\uC11C\uC758 \uC6D0\uACA9 \uC815\uBCF4\uB97C \uD655\uC778\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC \uC218\uC815\uC744 \uB73B\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. Fetch\uB85C \uB2E4\uC2DC \uC870\uD68C\uD558\uACE0 \uBB38\uC11C\uC758 \uC0C1\uC138 \uC0AC\uC720\uB97C \uD655\uC778\uD558\uC138\uC694.":h.some(C=>C.unmapped)?"\uBC1B\uAE30 \uBBF8\uC644\uB8CC \uBB38\uC11C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. Fetch \uD6C4 \uB2E4\uC2DC \uAC00\uC838\uC624\uBA74 \uC6D0\uACA9\uACFC \uC77C\uCE58\uD558\uB294 \uBB38\uC11C\uB9CC \uC5F0\uACB0\uD558\uBA70 \uB85C\uCEEC \uC218\uC815\uC740 \uBCF4\uC874\uD569\uB2C8\uB2E4.":h.some(C=>C.staged&&C.stale)?"\uC218\uC815\uB418\uAC70\uB098 \uBC94\uC704\uB97C \uBC97\uC5B4\uB09C \uB300\uC0C1\uC774 \uC788\uC2B5\uB2C8\uB2E4. \uCD5C\uC2E0 \uB0B4\uC6A9 \uBC18\uC601\uC744 \uB204\uB974\uAC70\uB098 \uCCB4\uD06C\uB97C \uD574\uC81C\uD574 \uC5C5\uB85C\uB4DC\uC5D0\uC11C \uC81C\uC678\uD558\uC138\uC694.":h.some(C=>C.remoteState==="new"||C.status==="same"&&C.remoteState==="changed")?"\uC6D0\uACA9 \uC2E0\uADDC\xB7\uBCC0\uACBD \uBB38\uC11C\uB294 \uC704\uC758 \uAC00\uC838\uC624\uAE30\uB85C \uBC1B\uC73C\uC138\uC694. \uC5C5\uB85C\uB4DC \uCCB4\uD06C\uB294 \uB85C\uCEEC \uBB38\uC11C\uB97C \uBCF4\uB0BC \uB54C\uB9CC \uC0AC\uC6A9\uD569\uB2C8\uB2E4.":"\uCCB4\uD06C\uD558\uBA74 \uC5C5\uB85C\uB4DC\uC5D0 \uBC14\uB85C \uD3EC\uD568\uB429\uB2C8\uB2E4. \uCCB4\uD06C\uB97C \uD574\uC81C\uD558\uBA74 \uC81C\uC678\uB418\uBA70 \uC6D0\uBCF8 \uD30C\uC77C\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4. \uC120\uD0DD \uD6C4 \uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C4\uD589\uD558\uC138\uC694.":"\uB85C\uCEEC\uC5D0 \uBCC0\uACBD\uB41C \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC6D0\uACA9 \uC2E0\uADDC\xB7\uBCC0\uACBD\uC740 Fetch\uB85C \uD655\uC778\uD558\uC138\uC694.":"\uB85C\uCEEC \uBCC0\uACBD\uC744 \uC790\uB3D9\uC73C\uB85C \uD655\uC778\uD569\uB2C8\uB2E4. \uC6D0\uACA9 \uC0C1\uD0DC\uB294 Fetch\uB97C \uB20C\uB7EC \uD655\uC778\uD558\uC138\uC694."}function G(){g("sync-stage-list").replaceChildren();let x=d=>d.localUnverified?"attention":d.remoteState==="new"?d.recoverable||d.status==="unavailable"?"receive":"conflict":d.unmapped?"attention":d.remoteState==="changed"&&["changed","moved","new"].includes(d.status)?"conflict":d.status==="unavailable"||d.stale||["unknown","unavailable"].includes(d.remoteState)?"attention":d.status==="same"&&d.remoteState==="changed"?"receive":"send",C={receive:0,conflict:1,attention:2,send:3},m;for(let d of h.filter(v=>v.status!=="same"||v.staged||v.remoteState&&v.remoteState!=="unchanged").sort((v,S)=>C[x(v)]-C[x(S)])){let v=x(d);if(m!==v){let K=document.createElement("h3");K.className="stage-group-heading",K.textContent={receive:"\u2193 \uBC1B\uC744 \uBB38\uC11C \xB7 \uC6D0\uACA9 \uC2E0\uADDC\xB7\uBCC0\uACBD",conflict:"! \uC591\uCABD \uBCC0\uACBD \xB7 \uBE44\uAD50 \uD544\uC694",attention:"! \uC5F0\uACB0 \uD655\uC778 \uD544\uC694",send:"\u2191 \uBCF4\uB0BC \uBCC0\uACBD \xB7 \uB85C\uCEEC \uC791\uC5C5"}[v],g("sync-stage-list").append(K),m=v}let S=document.createElement("div"),o=document.createElement("label"),M=document.createElement("input"),J=document.createElement("span"),j=document.createElement("small");M.type="checkbox",M.value=d.path,M.checked=d.staged,M.setAttribute("aria-label",d.path+" \uC5C5\uB85C\uB4DC\uC5D0 \uD3EC\uD568"),J.textContent=d.path,J.title=[d.path,...d.remoteReasons||[]].join(`
4
+ `);let Y=d.renamed?"\uB85C\uCEEC \uACBD\uB85C \uBCC0\uACBD":{new:"\uB85C\uCEEC \uC2E0\uADDC",changed:"\uB85C\uCEEC \uC218\uC815",moved:"\uB85C\uCEEC \uC774\uB3D9",same:"\uBCC0\uACBD \uC5C6\uC74C",unavailable:"\uD30C\uC77C \uD655\uC778"}[d.status],ne=document.createElement("span"),ke=document.createElement("span"),Pe=d.remoteState==="new"&&!d.unmapped&&d.status!=="unavailable"||d.remoteState==="changed"&&["changed","moved","new"].includes(d.status),Ze=d.localUnverified||d.unmapped||d.stale||Pe||["unknown","unavailable"].includes(d.remoteState),Qe=d.remoteState==="new"&&!Pe?"incoming":Ze?"attention":d.staged?"included":d.remoteState==="changed"?"moved":d.status,Ye={incoming:'<path d="M12 3v12m-5-5 5 5 5-5M4 17v4h16v-4"/>',included:'<circle cx="12" cy="12" r="9"/><path d="m8 12 3 3 5-6"/>',new:'<path d="M12 5v14M5 12h14"/>',changed:'<circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/>',moved:'<path d="M4 8h15m-4-4 4 4-4 4M20 16H5m4-4-4 4 4 4"/>',same:'<path d="m5 12 4 4L19 6"/>',attention:'<path d="m12 3 10 18H2L12 3ZM12 9v5m0 3v.1"/>'};if(ne.className="stage-state-icon",ne.setAttribute("aria-hidden","true"),ne.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">'+(Ye[Qe]||Ye.attention)+"</svg>",ke.textContent=d.localUnverified?{changed:"\uC6D0\uACA9 \uBCC0\uACBD",new:"\uC6D0\uACA9 \uC2E0\uADDC",unknown:"\uC6D0\uACA9 \uD655\uC778 \uD544\uC694",unavailable:"\uC6D0\uACA9 \uC870\uD68C \uBD88\uAC00"}[d.remoteState]+" \xB7 \uB85C\uCEEC \uBBF8\uD655\uC778":d.unmapped?"\uBC1B\uAE30 \uBBF8\uC644\uB8CC \xB7 \uC6D0\uACA9 \uB300\uC870 \uD544\uC694":d.remoteState==="new"?Pe?"\uC6D0\uACA9 \uC2E0\uADDC \xB7 \uB85C\uCEEC \uACBD\uB85C \uD655\uC778":"\uC6D0\uACA9 \uC2E0\uADDC":Pe?d.stale?"\uC591\uCABD \uC218\uC815 \xB7 \uCD5C\uC2E0 \uB0B4\uC6A9 \uD655\uC778 \uD544\uC694":"\uC591\uCABD \uC218\uC815 \xB7 \uCDA9\uB3CC \uC8FC\uC758":d.stale?"\uCD5C\uC2E0 \uB0B4\uC6A9 \uD655\uC778 \uD544\uC694":d.remoteState==="changed"?d.remoteReasons?.some(K=>K.includes("\uC704\uCE58 \uBCC0\uACBD"))?"\uC6D0\uACA9 \uC704\uCE58 \uBCC0\uACBD":"\uC6D0\uACA9 \uC218\uC815":d.remoteState==="unavailable"?"\uC6D0\uACA9 \uC870\uD68C \uBD88\uAC00":d.remoteState==="unknown"?"\uC6D0\uACA9 \uD655\uC778 \uD544\uC694":Y+(d.staged?" \xB7 \uC5C5\uB85C\uB4DC \uD3EC\uD568":""),M.remoteOnly=d.status==="same"&&["unknown","unavailable"].includes(d.remoteState)||d.unmapped&&!d.staged||d.remoteState==="new"&&!d.staged||d.status==="same"&&d.remoteState==="changed"&&!d.staged,M.localUnverified=!!d.localUnverified,M.remoteOnly&&(M.title=["unknown","unavailable"].includes(d.remoteState)?"\uC6D0\uACA9 \uC815\uBCF4\uB97C \uD655\uC778\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. Fetch\uB85C \uB2E4\uC2DC \uC870\uD68C\uD558\uC138\uC694.":d.remoteState==="new"?"\uC544\uC9C1 \uBC1B\uC9C0 \uC54A\uC740 \uC6D0\uACA9 \uBB38\uC11C\uC785\uB2C8\uB2E4. Pull\uB85C \uAC00\uC838\uC624\uC138\uC694.":"\uC6D0\uACA9\uC5D0\uC11C\uB9CC \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff\uB97C \uD655\uC778\uD558\uACE0 Pull\uB85C \uAC00\uC838\uC624\uC138\uC694."),j.append(ne,ke),S.className="sync-stage-row"+(Ze?" needs-attention":d.staged?" is-included":x(d)==="receive"?" is-incoming":""),o.className="sync-stage-choice",j.className="stage-status stage-status-"+Qe,M.onchange=()=>k(M.checked?"add":"remove",[d.path]),o.append(M,J),S.append(o,j),!d.unmapped&&d.staged&&d.stale&&d.status!=="unavailable"){let K=document.createElement("button");K.type="button",K.textContent="\u21BB \uCD5C\uC2E0 \uB0B4\uC6A9 \uBC18\uC601",K.setAttribute("aria-label",d.path+" \uCD5C\uC2E0 \uB0B4\uC6A9 \uBC18\uC601"),K.onclick=()=>k("add",[d.path]),S.append(K)}if(!d.unmapped&&d.status!=="unavailable"&&d.remoteState!=="new"){let K=document.createElement("button");K.type="button",K.textContent="\u2194 diff \uBCF4\uAE30",K.setAttribute("aria-label",d.path+" \uBCC0\uACBD \uBE44\uAD50"),K.onclick=()=>t(d.path),S.append(K)}if(!(d.status==="same"&&["unknown","unavailable"].includes(d.remoteState))&&!d.localUnverified&&d.remoteState!=="new"&&d.pageId&&d.status!=="new"&&d.status!=="moved"){let K=document.createElement("button");K.type="button",K.className="stage-restore",K.isRestore=!0;let Ne=document.createElement("span"),et=document.createElement("span");Ne.className="stage-action-icon",Ne.setAttribute("aria-hidden","true"),Ne.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="'+(d.status==="unavailable"?"M12 3v12m-5-5 5 5 5-5M4 17v4h16v-4":"M3 11a9 9 0 1 1 2.64 6.36M3 3v8h8")+'"/></svg>',et.textContent=d.status==="unavailable"?"\uC6D0\uACA9\uC5D0\uC11C \uBCF5\uAD6C":"\uC6D0\uACA9\uC73C\uB85C \uC6D0\uBCF5",K.append(Ne,et),K.setAttribute("aria-label",d.path+" \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C"),K.onclick=()=>{$()&&i()&&a(d.path,d.status!=="unavailable")},S.append(K)}g("sync-stage-list").append(S)}te()}function pe(){let x=B();if(b===x)return;b=x,w="",h=[],y=null,I=!1,L="",A="";let C=H().find(m=>m?.key===x);C&&Number.isFinite(Date.parse(C.scannedAt))&&Array.isArray(C.rows)&&C.rows.every(m=>m&&typeof m.path=="string"&&p.has(m.status)&&typeof m.staged=="boolean"&&typeof m.stale=="boolean")&&(A=C.localCheckFailed?"\uC774\uC804 \uB85C\uCEEC \uBCC0\uACBD \uD655\uC778\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.":"",h=C.rows,y=C.scannedAt,I=!0),G()}function oe(x){pe(),w&&w!==q()&&(w="",te()),g("sync-stage-scan").disabled=x||!n().base,g("sync-stage-add").disabled=x||!$()||!X().length,g("sync-stage-remove").disabled=x||!$()||!W().length,g("sync-stage-count").textContent=`${I&&!$()?"\uC774\uC804 \uC870\uD68C \xB7 ":""}${h.filter(C=>C.staged).length}\uAC1C \uC5C5\uB85C\uB4DC \uC608\uC815`;for(let C of g("sync-stage-list").querySelectorAll("input"))C.disabled=x||!$()||C.remoteOnly||C.localUnverified;for(let C of g("sync-stage-list").querySelectorAll("button"))C.disabled=x||C.isRestore&&(!$()||!i())}async function z(x,C,m=!1){if(x&&(!$()||!C?.length))return;let d=q(),v=n(),S=!1;m||c(!0),m||(g("sync-stage-note").textContent=x==="remove"?"\uC5C5\uB85C\uB4DC \uB300\uC0C1\uC5D0\uC11C \uC81C\uC678\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":x==="add"?"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uD655\uC778\uD574 \uC5C5\uB85C\uB4DC\uC5D0 \uD3EC\uD568\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":"\uB85C\uCEEC \uBB38\uC11C\uC758 \uBCC0\uACBD\uC744 \uAC80\uC0AC\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026");try{let o,M="";try{o=await e("/api/sync/staging",{...v,...x?{action:x,paths:C}:{}},void 0,{background:m})}catch(j){if(x||d!==q())throw j;M=j.message,o=await e("/api/sync/staging",{...v,remoteOnly:!0},void 0,{background:m})}if(d!==q())return;if(!Array.isArray(o.rows))throw new Error("\uBCC0\uACBD \uBAA9\uB85D \uC751\uB2F5\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uBD88\uB7EC\uC624\uC138\uC694.");let J=g("sync-stage-remote-note");if(J&&(J.textContent=o.remoteCheckedAt?`\uC6D0\uACA9 \uD655\uC778: ${new Date(o.remoteCheckedAt).toLocaleString("ko-KR",{timeZone:"Asia/Seoul"})}${o.remoteExpired?" \xB7 \uC774\uC804 \uC870\uD68C \uACB0\uACFC\uC785\uB2C8\uB2E4. Fetch\uB85C \uAC31\uC2E0\uD558\uC138\uC694.":""}`:"\uC6D0\uACA9 \uC0C1\uD0DC \uBBF8\uD655\uC778 \xB7 Fetch\uB97C \uB204\uB974\uBA74 \uBC84\uC804\uACFC \uC704\uCE58\uB97C \uBB36\uC5B4\uC11C \uC870\uD68C\uD569\uB2C8\uB2E4."),m&&$()&&o.revision&&o.revision===L&&A===M)return;A=M,L=o.revision||"",S=!0,r(),h=o.rows,w=d,I=!0,(!x||!y)&&(y=new Date().toISOString()),ae(),G(),g("sync-stage-scan").hidden=!0,x&&u(x==="add"?"\uC5C5\uB85C\uB4DC\uC5D0 \uD3EC\uD568\uD588\uC2B5\uB2C8\uB2E4. \uBBF8\uB9AC\uBCF4\uAE30 \uD6C4 \uC5C5\uB85C\uB4DC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.":"\uC5C5\uB85C\uB4DC\uC5D0\uC11C \uC81C\uC678\uD588\uC2B5\uB2C8\uB2E4. \uC6D0\uBCF8 \uD30C\uC77C\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4.",!1,"success")}catch(o){if(d!==q())return;S=!0,r(),w="",G(),m?(g("sync-stage-note").textContent="\uB85C\uCEEC \uC790\uB3D9 \uD655\uC778 \uC2E4\uD328: "+o.message+" \uC774\uC804 \uBAA9\uB85D\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4.",g("sync-stage-scan").hidden=!1):u(o.message,!0)}finally{m?S&&l():(c(!1),l())}}async function k(x,C,m=!1){if(m&&O)return;let d=q(),v=(O??Promise.resolve()).catch(()=>{}).then(()=>d===q()?z(x,C,m):void 0);O=v;try{await v}finally{O===v&&(O=null)}}g("sync-stage-scan").onclick=()=>k(),g("sync-stage-add").onclick=()=>k("add",X()),g("sync-stage-remove").onclick=()=>k("remove",W());function P(x){R=!1;let C=async()=>{try{!R&&await x()&&await k(void 0,void 0,!0)}finally{R||(N=setTimeout(C,5e3))}};return clearTimeout(N),N=setTimeout(C,100),()=>{R=!0,clearTimeout(N)}}return{idle:()=>O??Promise.resolve(),remoteOnlyCount:()=>$()?h.filter(x=>x.status==="same"&&x.remoteState==="changed"||(x.recoverable||x.status==="unavailable")&&x.remoteState==="new").length:0,startWatching:P,update:oe,ready:()=>$()&&!A&&h.some(x=>x.staged)&&!h.some(x=>x.staged&&(x.stale||x.unmapped)),reload:(x=!1)=>k(void 0,void 0,x)}}function yt({api:e,context:n,setBusy:r,changed:c,renderConfig:u,status:l}){let t=L=>document.getElementById(L),a=n().base,i="",s="",g=!1,E=null;t("sync-env-toggle").onclick=()=>{let L=t("sync-env-toggle").getAttribute("aria-expanded")!=="true";t("sync-env-toggle").setAttribute("aria-expanded",String(L)),t("sync-env-body").hidden=!L,t("sync-env-chevron").textContent=L?"\u25BE":"\u25B8",t("sync-env-toggle-label").textContent=L?"\uC811\uAE30":"\uD3BC\uCE58\uAE30"};let p=()=>t("sync-env-import-mode").checked,h=()=>`${p()?"import":"base"}:${i}`,w=()=>({base:n().base,envId:p()?i||"not-imported":""});function b(){E=null,t("sync-env-confirm").open&&t("sync-env-confirm").close()}function y(L){g=L,a!==n().base&&(a=n().base,i="",s="",t("sync-env-file").value="",t("sync-env-base-mode").checked=!0,t("sync-env-import-mode").checked=!1,b());for(let A of["sync-env-base-mode","sync-env-import-mode"])t(A).disabled=g;t("sync-env-import-controls").hidden=!p(),t("sync-env-file-name").textContent=s||"\uC120\uD0DD\uD55C \uD30C\uC77C \uC5C6\uC74C",t("sync-env-choose").disabled=g||!a,t("sync-env-save").disabled=g||!i||!p(),t("sync-env-source-note").textContent=p()?"\uAC00\uC838\uC628 \uC124\uC815\uC740 \uD604\uC7AC \uC6F9 \uC791\uC5C5\uC5D0\uB9CC \uC801\uC6A9\uB429\uB2C8\uB2E4. \uC0C8\uB85C\uACE0\uCE68\uD558\uBA74 \uB2E4\uC2DC \uAC00\uC838\uC640\uC57C \uD569\uB2C8\uB2E4.":"\uB85C\uCEEC \uBB38\uC11C\uC5D0\uC11C \uC120\uD0DD\uD55C \uAE30\uC900 \uD3F4\uB354\uC758 .env\uB9CC \uC77D\uC2B5\uB2C8\uB2E4. \uD30C\uC77C\uC774 \uC5C6\uC73C\uBA74 .env\uB97C \uAC00\uC838\uC624\uC138\uC694."}for(let L of["sync-env-base-mode","sync-env-import-mode"])t(L).onchange=()=>{b(),c(),y(g)};t("sync-env-choose").onclick=()=>{g||t("sync-env-file").click()},t("sync-env-file").onchange=async()=>{let L=t("sync-env-file").files?.[0];if(!L||g)return;if(L.size>12e3){l(".env \uD30C\uC77C\uC740 12KB \uC774\uD558 \uD14D\uC2A4\uD2B8\uC5EC\uC57C \uD569\uB2C8\uB2E4.",!0),t("sync-env-file").value="";return}let A=n().base;r(!0),b();try{let N=await L.text(),R=await e("/api/sync/env/import",{base:A,text:N,name:L.name});if(A!==n().base)return;i=R.envId,s=L.name,c(),u(R.config),l(".env\uB97C \uAC00\uC838\uC654\uC2B5\uB2C8\uB2E4. \uAE30\uC900 \uD3F4\uB354\uC758 \uD30C\uC77C\uC740 \uBCC0\uACBD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",!1,"success")}catch(N){l(N.message,!0)}finally{t("sync-env-file").value="",r(!1)}};async function I(L){r(!0);try{let A=await e("/api/sync/env/save",L);t("sync-env-base-mode").checked=!0,t("sync-env-import-mode").checked=!1,c(),u(A.config),l("\uAE30\uC900 \uD3F4\uB354\uC5D0 .env\uB97C \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4. CLI\uC5D0\uC11C\uB3C4 \uAC19\uC740 \uC124\uC815\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",!1,"success")}catch(A){l(A.message,!0)}finally{b(),r(!1)}}return t("sync-env-save").onclick=async()=>{if(g||!i||!p())return;let L=w();r(!0);try{let A=await e("/api/sync/env/save",L),N={...L,expectedHash:A.expectedHash};A.needsConfirmation?(E=N,t("sync-env-confirm-path").textContent=A.path,t("sync-env-confirm").showModal()):await I(N)}catch(A){l(A.message,!0)}finally{r(!1)}},t("sync-env-confirm-save").onclick=()=>{if(E&&!g)return I(E)},t("sync-env-confirm-cancel").onclick=b,t("sync-env-confirm").addEventListener("cancel",b),{update:y,identity:h,request:w}}var jt=[["error",/^(?:✗|(?:\w*Error|오류|실패)\s*[::]|일부 작업이 실패)/],["warning",/^(?:⚠|\[경고\])/],["success",/^(?:\[(?:신규|폴더\+)\]|+\s*생성|완료(?:\s|$))/],["change",/^(?:\[변경\]|↻\s*갱신)/],["reference",/^(?:참조 링크:|\[연결\]|🔗|♻)/],["muted",/^(?:\[(?:동일|상위|폴더)\]|=\s*변경없음|·\s*상위|--dry-run:)/],["info",/^(?:base:|대상:|📁)/]];function wt(e,n){if(e.textContent===n)return;let r=document.createDocumentFragment();for(let c of n.match(/[^\n]*\n|[^\n]+$/g)??[]){let u=document.createElement("span"),l=jt.find(([,t])=>t.test(c.trimStart()))?.[0]??"default";u.className="sync-log-line sync-log-"+l,u.textContent=c,r.append(u)}e.replaceChildren(r)}function vt({api:e,monaco:n,loadMonaco:r,context:c,setBusy:u,showSync:l,refresh:t=async()=>{},notify:a=()=>{},activity:i}){let s=o=>document.getElementById(o),g=!1,E=null,p=null,h="",w="",b,y=!1,I=!1,L="",A="\uC2A4\uD398\uC774\uC2A4 \uC804\uCCB4",N,R,O={restore:"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C\uD558\uB294 \uC911",preview:"\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uACC4\uC0B0\uD558\uB294 \uC911",fetch:"\uC6D0\uACA9 \uBCC0\uACBD\uC744 \uD655\uC778\uD558\uB294 \uC911",pull:"Confluence\uC5D0\uC11C \uAC00\uC838\uC624\uB294 \uC911",push:"Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uD558\uB294 \uC911"},q={restore:"sync-restore-confirm",preview:"sync-preview",fetch:"sync-fetch",pull:"sync-pull-remote",push:"sync-push"};function B(o,M){N?.end(),N=i?.begin({label:O[o],detail:"\uC791\uC5C5\uC744 \uC900\uBE44\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",button:M||q[o],region:"sync-results",link:"#sync-results"})}function X(){N?.end(),N=void 0}let W=new Set,$=(o,M=!1,J=M?"error":"info")=>{s("sync-status").textContent=o,s("sync-status").classList.toggle("error",M),J&&a(o,J)};function H(){return{base:c().base||"",target:"",envId:S.request().envId,verify:s("sync-verify").checked,referenceRoots:s("sync-references").value.split(/\r?\n/).map(M=>M.trim()).filter(Boolean)}}let ae=()=>s("sync-pull-format").value==="obsidian"?"obsidian":"markdown",te=()=>JSON.stringify(H()),G=()=>JSON.stringify([c().base,S.identity()]),pe=()=>!!c().base;function oe(){E=null,p=null,h=""}function z(o,M=!1){g=o,!M&&h&&h!==te()&&(oe(),$("\uB300\uC0C1\uC774\uB098 \uC635\uC158\uC774 \uBC14\uB00C\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.")),!M&&w&&w!==G()&&(w="",y=!1,I=!1,L="",s("sync-config").replaceChildren(),s("sync-config-status").textContent="\uC124\uC815 \uD655\uC778 \uB610\uB294 .env \uAC00\uC838\uC624\uAE30\uB85C \uC5F0\uACB0 \uC815\uBCF4\uB97C \uBD88\uB7EC\uC624\uC138\uC694."),s("sync-log-download").disabled=!R?.log?.trim(),s("sync-job-state").hidden=!R,S.update(g),s("sync-connect").disabled=g||!c().base||!I||y,s("sync-connect").textContent=y?"\uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0\uB428":"\uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0",v.update(g);for(let Y of["sync-pull-format","sync-load","sync-verify","sync-references","sync-add-reference"])s(Y).disabled=g;s("sync-pull-format-help").textContent=ae()==="obsidian"?"\uC704\uD0A4\uB9C1\uD06C([[\uBB38\uC11C|\uC774\uB984]])\xB7\uCF5C\uC544\uC6C3\xB7\uAC01\uC8FC \uBB38\uBC95\uC73C\uB85C \uBCF5\uC6D0\uD569\uB2C8\uB2E4. \uD30C\uC77C\uBA85\uC774 \uACB9\uCE58\uAC70\uB098 HTML \uD45C \uC548\uC758 \uB9C1\uD06C\uB294 \uD638\uD658\uB418\uB294 \uC0C1\uB300 \uACBD\uB85C \uB9C1\uD06C\uB97C \uC720\uC9C0\uD569\uB2C8\uB2E4. \uC0C8\uB85C \uBC1B\uB294 \uBB38\uC11C\uC640 \uBCF5\uAD6C\xB7\uC6D0\uBCF5\uC5D0 \uC801\uC6A9\uD569\uB2C8\uB2E4.":"Markdown \uB9C1\uD06C([\uC774\uB984](\uBB38\uC11C.md))\xB7\uC81C\uBAA9\uC774 \uC788\uB294 \uC778\uC6A9\uBB38\xB7\uC704\uCCA8\uC790 \uAC01\uC8FC \uBAA9\uB85D\uC73C\uB85C \uBC1B\uC2B5\uB2C8\uB2E4. \uC0C8\uB85C \uBC1B\uB294 \uBB38\uC11C\uC640 \uBCF5\uAD6C\xB7\uC6D0\uBCF5\uC5D0 \uC801\uC6A9\uD558\uBA70 \uAE30\uC874 \uD30C\uC77C\uC744 \uC77C\uAD04 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.";let J=s("sync-pull-remote");if(J){let Y=v.remoteOnlyCount();J.disabled=g||!y||!I||!Y,J.textContent=`\u2193 \uC6D0\uACA9 \uBB38\uC11C ${Y}\uAC1C \uAC00\uC838\uC624\uAE30 (Pull)`}s("sync-fetch").disabled=g||!c().base||!y||!I,s("sync-log-empty").textContent="\uBBF8\uB9AC\uBCF4\uAE30 \uB610\uB294 Fetch\xB7Pull\xB7\uBCF5\uAD6C\uB97C \uC2E4\uD589\uD558\uBA74 \uBB38\uC11C\uBCC4 \uCC98\uB9AC \uB0B4\uC5ED\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",s("sync-load").disabled=g||!c().base,s("sync-preview").disabled=g||!pe()||!y||!v.ready(),s("sync-push").disabled=g||!y||!I||!E||!p||h!==te(),s("sync-push").title=E?"\uBBF8\uB9AC\uBCF4\uAE30\uD55C \uBC94\uC704\uB97C \uC5C5\uB85C\uB4DC\uD569\uB2C8\uB2E4.":"\uD604\uC7AC \uC120\uD0DD\uACFC \uC124\uC815\uC73C\uB85C \uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uBA3C\uC800 \uC644\uB8CC\uD558\uC138\uC694.";let j=H();s("sync-target").textContent=pe()?`\uAE30\uC900 \uD3F4\uB354 ${j.base} \u2194 ${A} \xB7 Push\uB294 \uCCB4\uD06C\uD55C \uBB38\uC11C\uB9CC`:"\uB85C\uCEEC \uBB38\uC11C\uC5D0\uC11C \uAE30\uC900 \uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694."}function k(o){w=G(),y=!!o.connected,I=!o.missing.length,A=o.rootPath&&o.rootPath!=="/"?`\uAE30\uC874 \uC6D0\uACA9 \uB8E8\uD2B8 ${o.rootPath}`:"\uC2A4\uD398\uC774\uC2A4 \uC804\uCCB4",L=y?`${o.baseUrl}/${o.spaceKey}/${o.rootPath||"/"}`:"",s("sync-config").replaceChildren();for(let[M,J]of[["\uC124\uC815 \uCD9C\uCC98",o.source],["\uC11C\uBC84",o.baseUrl||"\uBBF8\uC124\uC815"],["\uACC4\uC815",o.email||"\uBBF8\uC124\uC815"],["\uC2A4\uD398\uC774\uC2A4",o.spaceKey||"\uBBF8\uC124\uC815"],["\uC791\uC5C5\uACF5\uAC04",y?`\uAE30\uC900 \uD3F4\uB354 \u2194 ${A}`:"\uBBF8\uC5F0\uACB0"],["API \uD1A0\uD070",o.hasToken?"\uC124\uC815\uB428":"\uBBF8\uC124\uC815"]]){let j=document.createElement("dt"),Y=document.createElement("dd");j.textContent=M,Y.textContent=J,s("sync-config").append(j,Y)}s("sync-config-status").textContent=o.missing.length?`\uC124\uC815 \uD544\uC694: ${o.missing.join(", ")}. \uBBF8\uB9AC\uBCF4\uAE30\uB294 \uC778\uC99D \uC5C6\uC774 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`:y?"\uC811\uC18D \uC124\uC815\uACFC \uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0\uC744 \uBD88\uB7EC\uC654\uC2B5\uB2C8\uB2E4.":"\uC2A4\uD398\uC774\uC2A4 \uC5F0\uACB0\uC744 \uB20C\uB7EC \uAE30\uC900 \uD3F4\uB354\uC640 \uC5F0\uACB0\uD558\uC138\uC694."}function P(o){if(R=o,s("sync-log-download").disabled=!o.log?.trim(),o.state==="running"&&!N&&B(o.kind),N){let Y=(o.log||"").split(/\r?\n/).filter(ne=>ne.trim()&&!/^\s*(?:✓|완료|진행 ·)/.test(ne)).at(-1);N.update({label:o.state==="running"?o.phase==="fetch"?"\uC644\uB8CC \uD6C4 \uC6D0\uACA9 \uC0C1\uD0DC\uB97C \uB2E4\uC2DC \uD655\uC778\uD558\uB294 \uC911":O[o.kind]:"\uC2E4\uD589 \uACB0\uACFC\uB97C \uBC18\uC601\uD558\uB294 \uC911",detail:o.state==="running"?Y||"\uCC98\uB9AC \uC911\uC785\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC5D0\uC11C \uC138\uBD80 \uB0B4\uC6A9\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.":"\uBCC0\uACBD \uBAA9\uB85D\uACFC \uB85C\uCEEC \uD3F4\uB354\uB97C \uAC31\uC2E0\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",startedAt:o.startedAt,uncertain:!1})}s("sync-job-summary").hidden=!1,s("sync-job-summary").textContent=`${o.kind==="restore"?"\uBB38\uC11C \uBCF5\uAD6C":o.kind==="preview"?"\uC5C5\uB85C\uB4DC \uBBF8\uB9AC\uBCF4\uAE30":o.kind==="fetch"?"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778":o.kind==="pull"?"\uAC00\uC838\uC624\uAE30":"\uC5C5\uB85C\uB4DC"} \xB7 ${["pull","fetch","restore"].includes(o.kind)?`${o.config.spaceKey||"\uC2A4\uD398\uC774\uC2A4 \uBBF8\uC124\uC815"} \u2192 ${o.selection.base}`:`${o.selection.target||o.selection.base} \u2192 ${o.config.spaceKey||"\uC2A4\uD398\uC774\uC2A4 \uBBF8\uC124\uC815"}`} (${o.config.baseUrl||"\uC11C\uBC84 \uBBF8\uC124\uC815"})`,["pull","restore"].includes(o.kind)&&(s("sync-job-summary").textContent+=` \xB7 \uAC00\uC838\uC624\uAE30 \uD615\uC2DD: ${o.selection.format==="obsidian"?"Obsidian":"Markdown"}`),s("sync-log-empty").hidden=!0,s("sync-log").hidden=!1;let M=s("sync-log"),J=M.scrollHeight-M.scrollTop-M.clientHeight<40;wt(M,o.log||"\uC791\uC5C5\uC744 \uC900\uBE44\uD558\uB294 \uC911\uC785\uB2C8\uB2E4\u2026"),J&&(M.scrollTop=M.scrollHeight),s("sync-job-state").hidden=!1,s("sync-job-state").setAttribute("data-state",o.state==="succeeded"&&(o.warningCount||o.refreshFailed)?"warning":o.state),s("sync-job-state").textContent=o.state==="succeeded"&&(o.warningCount||o.refreshFailed)?"\uC644\uB8CC (\uACBD\uACE0)":{running:"\uC9C4\uD589 \uC911",succeeded:"\uC644\uB8CC",failed:"\uC2E4\uD328"}[o.state];let j=!W.has(o.id);o.state!=="running"&&W.add(o.id),o.state==="running"&&o.phase==="fetch"?$("Push\xB7Pull\uC744 \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uCD5C\uC2E0 \uC6D0\uACA9 \uC0C1\uD0DC\uB97C \uB2E4\uC2DC \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026",!1,null):o.state==="running"?$(o.kind==="restore"?"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":o.kind==="preview"?"\uB85C\uCEEC \uBB38\uC11C\uC640 \uB9E4\uD551\uC744 \uBE44\uAD50\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":o.kind==="fetch"?"\uC6D0\uACA9 \uD398\uC774\uC9C0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":o.kind==="pull"?"Confluence\uC5D0\uC11C \uBB38\uC11C\uB97C \uAC00\uC838\uC624\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":"Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uC9C4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694.",!1,null):o.state==="failed"?$(o.kind==="restore"?"\uBB38\uC11C \uBCF5\uAD6C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694.":o.kind==="fetch"?"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694. \uC774\uC804 \uCE90\uC2DC\uB294 \uC720\uC9C0\uB429\uB2C8\uB2E4.":o.kind==="pull"?"\uAC00\uC838\uC624\uAE30\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uB85C\uCEEC \uBCC0\uACBD\uC774\uB098 \uC624\uB958 \uB0B4\uC5ED\uC744 \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.":"\uC5C5\uB85C\uB4DC\uAC00 \uC2E4\uD328\uD588\uAC70\uB098 \uC77C\uBD80 \uBB38\uC11C\uAC00 \uCC98\uB9AC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB0B4\uC5ED\uC744 \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.",!0,j?"error":null):o.kind==="preview"?(o.id===p&&h===te()&&!o.config.missing.length&&o.config.connected&&(E=o.planId),$(o.config.missing.length?"\uBBF8\uB9AC\uBCF4\uAE30 \uC644\uB8CC. \uC811\uC18D \uC124\uC815\uC744 \uCC44\uC6B4 \uB4A4 \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.":E?"\uBBF8\uB9AC\uBCF4\uAE30 \uC644\uB8CC. \uB300\uC0C1\uACFC \uC5C5\uB85C\uB4DC \uC704\uCE58\uB97C \uD655\uC778\uD558\uACE0 Confluence\uC5D0 \uC5C5\uB85C\uB4DC\uB97C \uB204\uB974\uC138\uC694.":"\uBBF8\uB9AC\uBCF4\uAE30 \uB0B4\uC5ED\uC744 \uBD88\uB7EC\uC654\uC2B5\uB2C8\uB2E4. \uD604\uC7AC \uC120\uD0DD\uC73C\uB85C \uB2E4\uC2DC \uBBF8\uB9AC\uBCF4\uAE30\uD574 \uC8FC\uC138\uC694.",!1,j?o.config.missing.length?"warning":"success":null)):o.kind==="fetch"?$("Fetch\uB97C \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uACBD \uBB38\uC11C \uBAA9\uB85D\uC5D0 \uC6D0\uACA9 \uC0C1\uD0DC\uB97C \uBC18\uC601\uD569\uB2C8\uB2E4. \uC0C1\uC138 \uC870\uD68C \uB0B4\uC5ED\uC740 \uB300\uC0C1 \uBC0F \uC2E4\uD589 \uB0B4\uC5ED\uC5D0\uC11C \uD655\uC778\uD560 \uC218 \uC788\uC73C\uBA70 \uBB38\uC11C\uC640 \uB3D9\uAE30\uD654 \uAE30\uC900\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4.",!1,j?"success":null):o.refreshFailed?$(`${o.kind==="push"?"\uC5C5\uB85C\uB4DC":"\uAC00\uC838\uC624\uAE30"}\uB294 \uC644\uB8CC\uD588\uC9C0\uB9CC \uD6C4\uC18D Fetch\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. ${o.warningCount?`\uCCA8\uBD80 ${o.warningCount}\uAC1C\uB294 \uC6D0\uACA9 \uCC38\uC870\uB97C \uC720\uC9C0\uD588\uC2B5\uB2C8\uB2E4. `:""}\uBCC0\uACBD \uBAA9\uB85D\uC774 \uCD5C\uC2E0\uC774 \uC544\uB2D0 \uC218 \uC788\uC73C\uB2C8 Fetch\uB97C \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694.`,!1,j?"warning":null):o.warningCount?$(`\uAC00\uC838\uC624\uAE30\uB97C \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uCCA8\uBD80 ${o.warningCount}\uAC1C\uB97C \uC800\uC7A5\uD558\uC9C0 \uBABB\uD574 \uC6D0\uACA9 \uCC38\uC870\uB97C \uC720\uC9C0\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uB0B4\uC5ED\uC744 \uD655\uC778\uD558\uC138\uC694.`,!1,j?"warning":null):$(o.kind==="restore"?"\uC6D0\uACA9 \uCD5C\uC2E0\uC73C\uB85C \uBCF5\uAD6C\uD588\uC2B5\uB2C8\uB2E4. \uBCF5\uAD6C \uBB38\uC11C\uB294 \uC5C5\uB85C\uB4DC \uC120\uD0DD\uC5D0\uC11C \uC81C\uC678\uD588\uC2B5\uB2C8\uB2E4.":o.kind==="pull"?"\uAC00\uC838\uC624\uAE30\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uAE30\uC900 \uD3F4\uB354\uC5D0\uC11C \uBB38\uC11C\uB97C \uD655\uC778\uD558\uC138\uC694.":"\uC5C5\uB85C\uB4DC\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uB978 \uB300\uC0C1\uC744 \uC120\uD0DD\uD574 \uACC4\uC18D \uC791\uC5C5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",!1,j?"success":null)}async function x(){clearTimeout(b);try{let{job:o}=await e("/api/sync/job");if(!o){X(),u(!1);return}P(o),s("sync-reconnect").hidden=!0,o.state==="running"?b=setTimeout(x,800):(["push","pull","fetch","restore"].includes(o.kind)&&o.state==="succeeded"&&await v.reload(!0),["pull","restore"].includes(o.kind)&&o.state==="succeeded"&&await t(),X(),u(!1))}catch(o){$(`\uC9C4\uD589 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC791\uC5C5\uC740 \uC11C\uBC84\uC5D0\uC11C \uACC4\uC18D\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4. ${o.message}`,!0),N?.update({label:"\uC9C4\uD589 \uC0C1\uD0DC \uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4",detail:"\uC11C\uBC84 \uC791\uC5C5\uC774 \uACC4\uC18D\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC9C4\uD589 \uC0C1\uD0DC \uB2E4\uC2DC \uD655\uC778\uC73C\uB85C \uC5F0\uACB0\uD558\uC138\uC694.",uncertain:!0}),s("sync-reconnect").hidden=!1}}async function C(o,M){let J=o==="pull-remote";if(J&&(o="pull"),g||!y)return;let j=H(),Y=E;if(!(o==="push"&&(!Y||!p||h!==te()||!I))){oe(),o==="preview"&&(h=te()),B(o,J?"sync-pull-remote":void 0),u(!0),$(o==="restore"?"\uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uBCF5\uAD6C\uD569\uB2C8\uB2E4\u2026":o==="preview"?"\uB3D9\uAE30\uD654 \uB300\uC0C1\uC744 \uD655\uC778\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4\u2026":o==="fetch"?"\uC6D0\uACA9 \uBCC0\uACBD \uD655\uC778\uC744 \uC2DC\uC791\uD569\uB2C8\uB2E4\u2026":o==="pull"?"Confluence\uC5D0\uC11C \uAC00\uC838\uC624\uAE30\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4\u2026":"\uC5C5\uB85C\uB4DC\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4\u2026",!1,null);try{let{job:ne}=await e("/api/sync/"+o,o==="restore"?M:o==="preview"?j:o==="pull"?{...S.request(),remoteOnly:!0,format:ae()}:o==="fetch"?S.request():{planId:Y});o==="preview"&&(p=ne.id),k(ne.config),P(ne),o==="fetch"&&s("sync-stage-heading").scrollIntoView({block:"start"}),await x()}catch(ne){$(ne.message,!0);try{let{job:ke}=await e("/api/sync/job");if(ke?.state==="running"){await x();return}X(),u(!1)}catch{N?.update({label:"\uC9C4\uD589 \uC0C1\uD0DC \uD655\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4",detail:"\uC694\uCCAD \uACB0\uACFC\uB97C \uD655\uC778\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC791\uC5C5\uC774 \uACC4\uC18D\uB420 \uC218 \uC788\uC73C\uB2C8 \uC9C4\uD589 \uC0C1\uD0DC\uB97C \uB2E4\uC2DC \uD655\uC778\uD558\uC138\uC694.",uncertain:!0}),s("sync-reconnect").hidden=!1}}}}s("sync-add-reference").onclick=async()=>{if(!g){u(!0);try{let o=await e("/api/pick-folder",{kind:"reference",start:c().base});if(o.path){let M=H().referenceRoots;s("sync-references").value=[...new Set([...M,o.path])].join(`
5
+ `),s("sync-references").dispatchEvent(new Event("input",{bubbles:!0}))}}catch(o){$(o.message,!0)}finally{u(!1)}}};let m=xt({api:e,selection:H,monaco:n,loadMonaco:r,notify:a}),d=ht({api:e,selection:()=>({...H(),format:ae()}),setBusy:u,isBusy:()=>g,status:$,start:C}),v=bt({restore:d.open,canRestore:()=>y&&I,scopeKey:()=>L,compare:m.open,api:e,selection:H,changed:oe,busy:u,status:$,update:()=>z(g)}),S=yt({api:e,context:c,setBusy:u,changed:()=>{oe(),z(g)},renderConfig:o=>{oe(),k(o)},status:$});s("sync-connect").onclick=async()=>{if(g||y||!I)return;let o=G();oe(),u(!0);try{let M=await e("/api/sync/connect",S.request());if(o!==G())return;k(M),$("\uAE30\uC900 \uD3F4\uB354\uB97C \uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uD588\uC2B5\uB2C8\uB2E4. Fetch\uB85C \uBC1B\uC744 \uBB38\uC11C\uB97C \uD655\uC778\uD55C \uB4A4 \uAC00\uC838\uC624\uC138\uC694.",!1,"success")}catch(M){$(M.message,!0)}finally{u(!1)}},s("sync-pull-format").onchange=()=>z(g),s("sync-fetch").onclick=()=>C("fetch"),s("sync-pull-remote")&&(s("sync-pull-remote").onclick=()=>C("pull-remote")),s("sync-preview").onclick=()=>C("preview"),s("sync-push").onclick=()=>C("push"),s("sync-reconnect").onclick=x,s("sync-log-download").onclick=()=>{if(R?.log?.trim())try{ft(mt(R),gt(R)),a("\uB85C\uADF8 \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC2DC\uC791\uD588\uC2B5\uB2C8\uB2E4.","success")}catch(o){$("\uB85C\uADF8 \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC2DC\uC791\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. "+o.message,!0)}},s("sync-load").onclick=async()=>{if(g)return;oe(),u(!0);let o=G();try{let M=await e("/api/sync/config",S.request());o===G()&&(k(M),$(s("sync-config-status").textContent,!1,M.missing.length||!M.connected?"warning":"success"))}catch(M){$(M.message,!0)}finally{u(!1)}};for(let o of["sync-verify","sync-references"])s(o).addEventListener("input",()=>z(g));return{waitForLocalCheck:()=>v.idle(),watch:()=>v.startWatching(async()=>{if(g||document.hidden||s("sync-view").hidden||!c().base)return!1;if(!y||w!==G())try{let o=G(),M=await e("/api/sync/config",S.request(),void 0,{quiet:!0});if(o!==G()||g)return!1;k(M),z(g)}catch{return!1}return y}),update:z,resume:async()=>{try{let{job:o}=await e("/api/sync/job");if(!o)return;P(o),o.state==="running"&&(await l(),u(!0),await x())}catch(o){$("\uC791\uC5C5 \uC0C1\uD0DC\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. "+o.message,!0)}}}}function kt({api:e,selection:n,formatting:r,notify:c=()=>{}}){let u=document.getElementById("document-preview-frame"),l=document.getElementById("document-preview-status"),t=document.getElementById("document-preview-refresh"),a=document.getElementById("document-preview-toggle"),i,s,g=0,E=!1,p=!1;function h(){g++,s?.abort(),r?.clear(),u.hidden=!0,u.removeAttribute("srcdoc"),i=void 0,p=!1}async function w(b=!1){let{base:y,file:I,folder:L}=n(),A=y&&I&&!L?JSON.stringify([y,I]):"";if(!E){i!==void 0&&(A!==i||p)&&h(),t.disabled=!0;return}if(t.disabled=!A,!b&&A===i)return;h(),i=A;let N=g;if(t.disabled=!A,l.textContent=A?"\uBB38\uC11C\uB97C \uBD88\uB7EC\uC624\uB294 \uC911\u2026":"Markdown \uD30C\uC77C\uC744 \uC120\uD0DD\uD558\uBA74 \uBCF8\uBB38\uC774 \uD45C\uC2DC\uB429\uB2C8\uB2E4.",!!A){s=new AbortController,p=!0;try{let R=await e("/api/document-preview",{base:y,file:I},s.signal);if(N!==g)return;u.srcdoc=R.html,u.hidden=!1,r?.load(R,{base:y,file:I}),l.textContent=I.split(/[\\/]/).pop()+" \xB7 \uB0B4\uC6A9\uC744 \uC120\uD0DD\uD574 \uBCF5\uC0AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."}catch(R){if(N!==g||R.name==="AbortError")return;l.textContent="\uBB38\uC11C\uB97C \uD45C\uC2DC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: "+R.message,c(l.textContent,"error")}finally{N===g&&(p=!1)}}}return a.onclick=()=>(E=!E,a.setAttribute("aria-expanded",String(E)),document.getElementById("document-preview-body").hidden=!E,document.getElementById("document-preview-actions").hidden=!E,document.getElementById("document-preview-chevron").textContent=E?"\u25BE":"\u25B8",document.getElementById("document-preview-toggle-label").textContent=E?"\uC811\uAE30":"\uD3BC\uCE58\uAE30",w()),t.onclick=()=>w(!0),{update:w}}function Ct(e,n){let r=e-n.length*40,c=n.reduce((i,s)=>i+s,0),u=n.map(i=>i/c*r),l=u.map(i=>40+Math.floor(i)),t=u.map((i,s)=>({i:s,remainder:i-Math.floor(i)})).sort((i,s)=>s.remainder-i.remainder),a=e-l.reduce((i,s)=>i+s,0);for(let i=0;i<a;i++)l[t[i].i]++;return l}function St({api:e,monaco:n,loadMonaco:r=async()=>n,refresh:c,setBusy:u,notify:l=()=>{}}){let t=z=>document.getElementById(z),a=t("document-preview-frame"),i=t("table-edit-toggle"),s=t("table-format-controls"),g=t("table-review-dialog"),E=t("table-format-status"),p,h,w=!1,b=-1,y=[],I=new Map,L,A,N,R,O=0,q=0,B=z=>a.contentWindow?.postMessage({...z,channel:p?.channel},"*"),X=z=>{E.textContent=z},W=()=>{q++,L=null,t("table-save").disabled=!0};function $(){a.onload=null,O++,p=null,h=null,w=!1,b=-1,y=[],I.clear(),W(),t("document-format-toggle").disabled=!0,t("document-format-controls").hidden=!0,t("document-format-toggle").setAttribute("aria-expanded","false"),t("document-format-tables").value="keep",i.disabled=!0,i.lastChild.textContent="\uD45C \uC9C1\uC811 \uD3B8\uC9D1",i.setAttribute("aria-pressed","false"),s.hidden=!0,g.open&&g.close(),H()}function H(){let z=b>=0;for(let k of["table-total-width","table-equal","table-revert"])t(k).disabled=!z;if(t("document-format-basic").disabled=!p,t("document-format-review").disabled=!p||!I.size,t("format-summary").textContent=I.size?`\uD45C ${I.size}\uAC1C \uC870\uC808\uB428 \xB7 \uBCC0\uACBD \uBE44\uAD50 \uD6C4 \uC800\uC7A5\uD569\uB2C8\uB2E4.`:"\uBCC0\uACBD \uBE44\uAD50 \uD6C4 \uC6D0\uBCF8 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4.",t("table-revert-all").disabled=!I.size,t("document-format-tables").disabled=!p?.tables.some(k=>k.editable),t("table-fit").disabled=!z||!p?.tables.find(k=>k.index===b)?.contentWeights,z){let k=y.reduce((P,x)=>P+x,0);t("table-total-width").min=String(Math.max(320,y.length*40)),t("table-total-width").max=String(Math.max(1200,k)),t("table-total-width").value=k,t("table-total-label").textContent=k+"px"}else t("table-total-label").textContent=""}function ae(z){y=z.slice(),I.set(b,y.slice()),W(),B({type:"csync-table-widths",index:b,widths:y}),H(),X("\uD45C "+(b+1)+" \xB7 \uC544\uC9C1 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.")}i.onclick=()=>{if(w=!w,s.hidden=!w,i.lastChild.textContent=w?"\uD45C \uC9C1\uC811 \uD3B8\uC9D1 \uC911":"\uD45C \uC9C1\uC811 \uD3B8\uC9D1",i.setAttribute("aria-pressed",String(w)),B({type:"csync-table-edit",enabled:w}),w){for(let[z,k]of I)B({type:"csync-table-widths",index:z,widths:k});b>=0&&B({type:"csync-table-widths",index:b,widths:y})}w&&b<0&&X("\uBBF8\uB9AC\uBCF4\uAE30\uC5D0\uC11C \uD3B8\uC9D1\uD560 \uD45C\uB97C \uD074\uB9AD\uD558\uC138\uC694.")},window.addEventListener("message",z=>{let k=z.data;if(!p||!w||z.source!==a.contentWindow||k?.channel!==p.channel)return;let P=p.tables.find(x=>x.index===k.index&&x.editable);P&&(k.type==="csync-table-select"&&(b=P.index,y=(I.get(b)??P.widths).slice(),W(),B({type:"csync-table-widths",index:b,widths:y}),H(),X("\uD45C "+(b+1)+" \uC120\uD0DD \xB7 \uB0B4\uC6A9\uC5D0 \uB9DE\uCDA4\uC73C\uB85C \uC790\uB3D9 \uBC30\uBD84\uD558\uAC70\uB098 \uC5F4 \uACBD\uACC4\uB97C \uB4DC\uB798\uADF8\uD558\uC138\uC694.")),k.type==="csync-table-change"&&k.index===b&&Array.isArray(k.widths)&&k.widths.length===P.widths.length&&k.widths.every(x=>Number.isInteger(x)&&x>=40)&&k.widths.reduce((x,C)=>x+C,0)<=3e3&&(y=k.widths.slice(),I.set(b,y.slice()),W(),H(),X("\uD45C "+(b+1)+" \xB7 \uC544\uC9C1 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.")))});let te=(z,k)=>Array.from({length:k},(P,x)=>Math.floor(z/k)+(x<z%k?1:0));t("table-equal").onclick=()=>ae(te(y.reduce((z,k)=>z+k,0),y.length)),t("table-fit").onclick=()=>{let z=p.tables.find(k=>k.index===b);ae(Ct(y.reduce((k,P)=>k+P,0),z.contentWeights)),X("\uD45C "+(b+1)+" \xB7 \uAE00\uC790 \uAE38\uC774\uC5D0 \uB9DE\uCDB0 \uBC30\uBD84\uD588\uC2B5\uB2C8\uB2E4. \uC544\uC9C1 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.")};function G(z){let k=p.tables.filter(P=>P.editable);if(k.length){B({type:"csync-table-edit",enabled:!0});for(let P of k){let x=I.get(P.index)??P.widths,C=x.reduce((d,v)=>d+v,0),m=z==="fit"?Ct(C,P.contentWeights):te(C,x.length);I.set(P.index,m),B({type:"csync-table-widths",index:P.index,widths:m})}b<0&&(b=k[0].index),y=I.get(b).slice(),B({type:"csync-table-widths",index:b,widths:y}),W(),H(),B({type:"csync-table-edit",enabled:w}),X(`\uD45C ${k.length}\uAC1C\uC5D0 ${z==="fit"?"\uB0B4\uC6A9\uC5D0 \uB9DE\uCDA4":"\uADE0\uB4F1 \uBC30\uBD84"}\uC744 \uC801\uC6A9\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uACBD \uBE44\uAD50 \uD6C4 \uC800\uC7A5\uD558\uC138\uC694.`)}}t("document-format-tables").onchange=()=>{t("document-format-tables").value==="keep"?t("table-revert-all").onclick():G(t("document-format-tables").value)},t("table-revert-all").onclick=()=>{B({type:"csync-table-edit",enabled:!0});for(let z of p.tables.filter(k=>k.editable))B({type:"csync-table-widths",index:z.index,widths:z.widths});I.clear(),t("document-format-tables").value="keep",b>=0&&(y=p.tables.find(z=>z.index===b).widths.slice(),B({type:"csync-table-widths",index:b,widths:y})),B({type:"csync-table-edit",enabled:w}),W(),H(),X("\uBAA8\uB4E0 \uD45C\uC758 \uB108\uBE44 \uBCC0\uACBD\uC744 \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4.")},t("document-format-toggle").onclick=()=>{let z=!t("document-format-controls").hidden;t("document-format-controls").hidden=z,t("document-format-toggle").setAttribute("aria-expanded",String(!z)),z&&w&&i.onclick()};function pe(z,k,P){L=z.planId,t("table-save-status").textContent="",t("table-review-title").textContent="\uBB38\uC11C \uC11C\uC2DD \uBCC0\uACBD \uD655\uC778",t("format-review-note").textContent=k?"\uAE30\uBCF8 \uC11C\uC2DD \uC815\uB9AC\uC640 \uD45C \uC870\uC808 \uACB0\uACFC\uB97C \uD655\uC778\uD558\uC138\uC694. \uC800\uC7A5\uC744 \uB20C\uB7EC\uC57C \uD30C\uC77C\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4.":"\uD45C \uC870\uC808 \uACB0\uACFC\uB97C \uD655\uC778\uD558\uC138\uC694. \uBCF8\uBB38 \uAE30\uBCF8 \uC11C\uC2DD\uC740 \uBCC0\uACBD\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC800\uC7A5\uC744 \uB20C\uB7EC\uC57C \uD30C\uC77C\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4.",g.open||g.showModal(),A||(N=P.editor.createModel("","markdown"),R=P.editor.createModel("","markdown"),A=P.editor.createDiffEditor(t("table-review-diff"),{automaticLayout:!0,readOnly:!0,originalEditable:!1,minimap:{enabled:!1},wordWrap:"on",scrollBeyondLastLine:!1}),A.setModel({original:N,modified:R})),N.setValue(z.before),R.setValue(z.after),A.layout(),t("table-save").disabled=z.before===z.after,z.before===z.after&&(t("table-save-status").textContent="\uC815\uB9AC\uD560 \uC11C\uC2DD \uBCC0\uACBD\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.")}async function oe(z){if(!p)return;let k=O,P=q;t("document-format-basic").disabled=t("document-format-review").disabled=!0;try{let x=await e("/api/document-format/preview",{...h,hash:p.hash,basic:z,tables:"keep",changes:Array.from(I,([m,d])=>({index:m,widths:d.slice()}))}),C=await r();if(k!==O||P!==q)return;pe(x,z,C)}catch(x){l(x.message,"error")}finally{H()}}return t("document-format-basic").onclick=()=>oe(!0),t("document-format-review").onclick=()=>oe(!1),t("table-total-width").oninput=z=>{let k=Number(z.target.value),P=k-y.length*40,x=y.map(v=>v-40),C=x.reduce((v,S)=>v+S,0),m=C?x.map(v=>40+Math.floor(v/C*P)):te(k,y.length),d=k-m.reduce((v,S)=>v+S,0);for(let v=0;d>0;v++,d--)m[v%m.length]++;ae(m)},t("table-revert").onclick=()=>{I.delete(b),y=p.tables.find(z=>z.index===b).widths.slice(),B({type:"csync-table-widths",index:b,widths:y}),W(),H(),X("\uC120\uD0DD\uD55C \uD45C\uC758 \uBCC0\uACBD\uC744 \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4.")},t("table-save").onclick=async()=>{if(!L)return;let z=L;t("table-save").disabled=!0,t("table-review-close").disabled=!0,u(!0);try{await e("/api/table-format/save",{planId:z}),g.close(),l("\uBB38\uC11C \uC11C\uC2DD\uC744 \uC6D0\uBCF8 \uD30C\uC77C\uC5D0 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.","success"),await c()}catch(k){t("table-save-status").textContent=k.message,l(k.message,"error")}finally{t("table-review-close").disabled=!1,u(!1)}},t("table-review-close").onclick=()=>g.close(),{clear:$,load(z,k){$(),p=z,h=k,a.onload=()=>{p===z&&(t("document-format-toggle").disabled=!1,i.disabled=!z.tables?.some(P=>P.editable),H(),B({type:"csync-table-edit",enabled:w}))}}}}var f=e=>document.getElementById(e),$e=lt(),Et=nt(),Z=st(),Vt=ct(),T,be,Le=[],F=null,U=null,xe=null,V=!1,le=0,fe=null,Ie=null,Be=!1,Ce="",zt,_e,Me=0,re,Oe,Ae=[],he="file",me=!1,ie=new Set,ye=new Map,Se=new Set,D="convert",Kt=St({api:se,loadMonaco:Re,notify:$e,refresh:()=>Mt.update(!0),setBusy:e=>{V=e,ee(),Q()}}),Mt=kt({notify:$e,api:se,formatting:Kt,selection:()=>({base:F||T,file:U,folder:D==="convert"?he==="folder":me})});dt(()=>D);var Ee=!0,ge={convert:{},sync:{}},It=()=>({base:F,folder:T,file:U,selectedDirectory:me,baseInput:f("base-input").value,expanded:[...ie]}),At="csync.workspace.v1";function Ue(){let e=f("out-input");return Z.browser?e.dataset.path||"":e.value}function Fe(e){let n=f("out-input");Z.browser&&(n.dataset.path=e),n.value=Z.browser?Z.folderName(e):e}function we(e){if(!Ee){ge[D]=It();try{localStorage.setItem(At,JSON.stringify({workspaces:ge,mode:e==="convert"||e==="sync"?e:D,referenceRoots:f("sync-references").value,out:Ue(),convertScope:he,direction:f("direction").value,fix:f("fix").checked,verify:f("sync-verify").checked,pullFormat:f("sync-pull-format").value,sideBySide:f("side-by-side").checked}))}catch{}}}function Lt(){try{let e=JSON.parse(localStorage.getItem(At));return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}catch{return{}}}function $t(e){D=e,f(e+"-view").prepend(f("document-preview-panel"));for(let n of["convert","sync"])f("tab-"+n).setAttribute("aria-selected",String(n===D)),f("tab-"+n).tabIndex=n===D?0:-1,f(n+"-view").hidden=n!==D;f("choose-base").lastChild.textContent="\uAE30\uC900 \uD3F4\uB354 \uBCC0\uACBD\u2026",f("base-input").setAttribute("aria-label",D==="sync"?"Confluence \uC791\uC5C5 \uAE30\uC900 \uD3F4\uB354 \uACBD\uB85C":"\uBCC0\uD658 \uAE30\uC900 \uD3F4\uB354 \uACBD\uB85C"),f("workspace-note").textContent=Z.standalone?"\uD30C\uC77C\uACFC \uBCC0\uD658\uC740 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uCC98\uB9AC\uD558\uBA70, Confluence \uC694\uCCAD\uB9CC \uC911\uACC4 API\uB85C \uC804\uB2EC\uD569\uB2C8\uB2E4.":Z.browser?"\uD30C\uC77C\uC740 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC77D\uACE0 \uC800\uC7A5\uD558\uBA70, \uBCC0\uD658\xB7Confluence \uC791\uC5C5\uC740 \uC11C\uBC84\uC758 \uC784\uC2DC \uACF5\uAC04\uC5D0\uC11C \uCC98\uB9AC\uD569\uB2C8\uB2E4.":D==="sync"?"\uC6D0\uACA9 \uBCC0\uACBD\uC740 \uC704\uC5D0\uC11C \uAC00\uC838\uC624\uACE0, \uC5C5\uB85C\uB4DC\uD560 \uBB38\uC11C\uB294 \uCCB4\uD06C \uD6C4 \uBBF8\uB9AC\uBCF4\uAE30\uD558\uC138\uC694.":"\uBCC0\uD658\uC740 \uC774 \uCEF4\uD4E8\uD130\uC5D0\uC11C \uCC98\uB9AC\uB429\uB2C8\uB2E4.",D==="convert"&&re?.layout()}async function Ge(e){if(e===D||V)return;if(we(),Z.browser){if(we(e),Lt().mode!==e){_("\uD0ED \uC804\uD658\uC744 \uC704\uD574 \uBE0C\uB77C\uC6B0\uC800\uC758 \uC0AC\uC774\uD2B8 \uC800\uC7A5\uC18C\uB97C \uD5C8\uC6A9\uD574 \uC8FC\uC138\uC694.",!0);return}location.reload();return}Ee=!0,V=!0,$t(e);let n;try{n=await Rt(ge[e])}finally{Ee=!1,V=!1,ee(),Q()}n&&_(n,!0)}for(let e of["convert","sync"])f("tab-"+e).onclick=()=>Ge(e),f("tab-"+e).onkeydown=n=>{if(["ArrowLeft","ArrowRight","Home","End"].includes(n.key)){n.preventDefault();let r=n.key==="Home"?"convert":n.key==="End"||e==="convert"?"sync":"convert";f("tab-"+r).disabled||(Ge(r),f("tab-"+r).focus())}};var De,qe;async function Xt(){if(!re)try{let e=await Re();De=e.editor.createModel("","markdown"),qe=e.editor.createModel("","markdown"),re=e.editor.createDiffEditor(f("diff"),{automaticLayout:!0,readOnly:!0,originalEditable:!1,renderSideBySide:f("side-by-side").checked,useInlineViewWhenSpaceIsLimited:!0,renderSideBySideInlineBreakpoint:700,ignoreTrimWhitespace:!1,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:"on",renderOverviewRuler:!0,accessibilityVerbose:!0,padding:{top:12,bottom:12},lineHeight:22,fontSize:12}),re.setModel({original:De,modified:qe}),re.getOriginalEditor().updateOptions({ariaLabel:"\uC6D0\uBCF8 Markdown"}),re.getModifiedEditor().updateOptions({ariaLabel:"\uBCC0\uD658 \uACB0\uACFC Markdown"}),re.onDidUpdateDiff(()=>{let r=!!re.getLineChanges()?.length;f("previous-change").disabled=f("next-change").disabled=!r})}catch(e){throw f("editor-error").hidden=!1,f("editor-error").textContent="\uBCF8\uBB38 \uBE44\uAD50 \uD654\uBA74\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. \uC0C8\uB85C\uACE0\uCE68\uD574 \uC8FC\uC138\uC694. "+e.message,e}}f("previous-change").onclick=()=>re?.goToDiff("previous");f("next-change").onclick=()=>re?.goToDiff("next");f("side-by-side").onchange=()=>re?.updateOptions({renderSideBySide:f("side-by-side").checked});async function se(e,n,r,c){let u=tt(e,n,c),l=u&&Et.begin(u);try{e!=="/api/sync/staging"&&!(Z.browser&&e==="/api/pick-folder")&&await Oe?.waitForLocalCheck();let t=await Z.request(e,{signal:r,method:n?"POST":"GET",headers:{...n?{"Content-Type":"application/json"}:{}},...n?{body:JSON.stringify(n)}:{}}),a=await t.json();if(!t.ok)throw Object.assign(new Error(a.error||"\uC694\uCCAD\uC744 \uCC98\uB9AC\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."),{code:a.code,conflicts:a.conflicts,inPlace:a.inPlace,output:a.output});return a}finally{l?.end()}}function _(e,n=!1,r=n?"error":"info"){let c=f(D==="sync"?"sync-status":"status");c.textContent=e,c.classList.toggle("error",n),r&&$e(e,r)}function de(){if(D==="sync"){_("");return}Ae=[],f("preview-documents").hidden=!0,xe=null,f("result").hidden=!0,f("details").hidden=!0,De?.setValue(""),qe?.setValue(""),f("comparison-empty").hidden=!1,f("previous-change").disabled=f("next-change").disabled=!0,f("preview-label").textContent="\uBBF8\uB9AC\uBCF4\uAE30 \uB300\uAE30",_("")}var ue=(e,n)=>n===e||n.startsWith(e.endsWith("/")?e:e+"/")||n.startsWith(e.endsWith("\\")?e:e+"\\");function ee(){f("local-disconnect").disabled=V,Mt.update();for(let l of["preview","save","next-document"])f(l).disabled=V||!U;for(let l of["preview-document","tab-convert","tab-sync","choose-base","apply-base","base-input","base-home","up","choose-out","out-input","direction","fix","search"])f(l).disabled=V;V||(f("up").disabled=T===be||F&&!ue(F,be));let e=F||T,n=!!e&&Ue()===e;f("convert-save-mode").textContent=n?"\uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30":"\uBCC4\uB3C4 \uD3F4\uB354 \uC800\uC7A5",f("out-mode-hint").textContent=n?"\uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30 \xB7 \uD655\uC778 \uD6C4 \uC800\uC7A5":Z.browser?"\uBCC4\uB3C4 \uD3F4\uB354 \uB610\uB294 \uC6D0\uBCF8 \uB36E\uC5B4\uC4F0\uAE30":"\uC120\uD0DD \uC0AC\uD56D",f("root-name").textContent=e?e.split(/[\\/]/).filter(Boolean).pop()||e:"\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694",f("root-path").textContent=e||"\uC544\uC9C1 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",f("root-purpose").textContent=D==="sync"?"Push \xB7 Pull \uAE30\uC900":"\uBCC0\uD658 \uAE30\uC900",f("root-hint").textContent=D==="sync"?"\uC2A4\uD398\uC774\uC2A4 \uBB38\uC11C\uB97C \uBCF4\uAD00\uD558\uB294 \uC791\uC5C5\uACF5\uAC04\uC785\uB2C8\uB2E4. \uC5C5\uB85C\uB4DC \uB300\uC0C1\uC740 \uC624\uB978\uCABD \uBCC0\uACBD\uC0AC\uD56D\uC5D0\uC11C \uCCB4\uD06C\uD558\uC138\uC694.":"\uBB38\uC11C\uC640 \uCC38\uC870 \uB9C1\uD06C\uB97C \uCC3E\uB294 \uAE30\uC900\uC785\uB2C8\uB2E4. \uC544\uB798\uC5D0\uC11C \uBCC0\uD658\uD560 \uD30C\uC77C\xB7\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694.",f("base-home").disabled=V||!e||e===T;let r=e&&T&&ue(e,T)?T.slice(e.length).replace(/\\/g,"/"):T||"";f("path").textContent=T?T===e?"\uAE30\uC900 \uD3F4\uB354 /":`\uAE30\uC900 \uD3F4\uB354 ${r}`:"\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694",f("path").title=T||"",f("explorer-note").textContent=D==="sync"?"\uD30C\uC77C\uC744 \uC120\uD0DD\uD574 \uB0B4\uC6A9\uC744 \uBBF8\uB9AC\uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4":"\uD30C\uC77C\xB7\uD3F4\uB354\uB97C \uC120\uD0DD\uD574 \uBCC0\uD658\uD558\uC138\uC694",f("fix").disabled=V||f("direction").value==="repair",f("selected").textContent=U?U.split(/[\\/]/).pop():"\uBCC0\uD658\uD560 \uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uC138\uC694";let c=he==="folder",u=c&&!!F&&U===F;f("convert-select-all").disabled=V||!F||u,f("convert-select-all").textContent=u?"\uAE30\uC900 \uD3F4\uB354 \uC804\uCCB4 \uC120\uD0DD\uB428":"\uAE30\uC900 \uD3F4\uB354 \uC804\uCCB4 \uC120\uD0DD",f("convert-target-note").textContent=u?"\uAE30\uC900 \uD3F4\uB354\uC640 \uBAA8\uB4E0 \uD558\uC704 \uD3F4\uB354\uC758 Markdown \uBB38\uC11C\uB97C \uBCC0\uD658\uD569\uB2C8\uB2E4.":"\uD30C\uC77C\xB7\uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uAC70\uB098 \uAE30\uC900 \uD3F4\uB354 \uC804\uCCB4\uB97C \uC120\uD0DD\uD558\uC138\uC694.",f("selected").textContent=U?(c&&D==="convert"?u?"\uC804\uCCB4 \xB7 ":"\uD3F4\uB354 \xB7 ":"")+U.split(/[\\/]/).pop():c?"\uBCC0\uD658\uD560 \uD3F4\uB354\uB97C \uC120\uD0DD\uD558\uC138\uC694":"\uBCC0\uD658\uD560 \uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uC138\uC694",f("base").textContent=U||"\uC67C\uCABD\uC5D0\uC11C \uB300\uC0C1\uC744 \uC120\uD0DD\uD558\uC138\uC694.",f("convert-output-hint").textContent=n?"\uC120\uD0DD\uD55C \uBB38\uC11C\xB7\uCCA8\uBD80\uB9CC \uC6D0\uB798 \uC704\uCE58\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. \uBCC0\uACBD \uD30C\uC77C \uD655\uC778 \uD6C4 \uB36E\uC5B4\uC501\uB2C8\uB2E4.":c?"\uC120\uD0DD \uD3F4\uB354 \uC548\uC758 \uBAA8\uB4E0 Markdown\uC744 \uBCC0\uD658\uD569\uB2C8\uB2E4. \uCD9C\uB825 \uD3F4\uB354 \uC544\uB798\uC5D0 \uC120\uD0DD \uD3F4\uB354 \uB0B4\uBD80 \uAD6C\uC870\uB9CC \uC720\uC9C0\uD569\uB2C8\uB2E4.":"\uC120\uD0DD\uD55C Markdown\uC744 \uCD9C\uB825 \uD3F4\uB354 \uBC14\uB85C \uC544\uB798\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. \uB9C1\uD06C\uB294 \uD574\uB2F9 \uD30C\uC77C\uC774 \uC788\uB294 \uD3F4\uB354\uB97C \uAE30\uC900\uC73C\uB85C \uD574\uC11D\uD569\uB2C8\uB2E4.",f("base").title=F||"",f("selected").title=U||"",Oe?.update(V,Ee),we()}function Q(){let e=f("files").scrollTop;f("files").replaceChildren();let n=fe??Le;if(f("count").textContent=Be?"\uAC80\uC0C9 \uC911\u2026":n.length+(fe?"\uAC1C \uACB0\uACFC":"\uAC1C \uD56D\uBAA9"),Ce||fe&&!n.length){let c=document.createElement("div");c.className="empty",c.textContent=Ce||(fe?"\uC77C\uCE58\uD558\uB294 .md \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.":"\uD45C\uC2DC\uD560 \uD3F4\uB354\uB098 .md \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."),f("files").append(c)}let r=(c,u=0)=>{let l=document.createElement("div");l.className="tree-row",l.style.paddingLeft=u*16+"px";let t=document.createElement(c.directory?"button":"span");t.className="tree-toggle",c.directory&&(t.textContent=ie.has(c.path)?"\u25BE":"\u25B8",t.disabled=V,t.dataset.path=c.path,t.setAttribute("aria-expanded",String(ie.has(c.path))),t.setAttribute("aria-label",c.name+(ie.has(c.path)?" \uC811\uAE30":" \uD3BC\uCE58\uAE30")),t.onclick=()=>_t(c.path)),l.append(t);let a=document.createElement("button");a.className="file"+(c.path===U?" selected":""),a.disabled=V;let i=document.createElement("span");i.className=c.directory?"icon folder-icon":"icon",c.directory?i.innerHTML='<svg viewBox="0 0 24 24" fill="none"><path d="M3 6a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z" fill="#f7d783" stroke="#bf9132" stroke-width="1.5"/><path d="M3 9h18" stroke="#bf9132" stroke-width="1.5"/></svg>':i.textContent="MD",i.setAttribute("aria-hidden","true");let s=document.createElement("span");s.textContent=c.name;let g=document.createElement("span");if(g.className="file-label",g.append(s),c.relativePath){let E=document.createElement("small");E.className="file-location",E.textContent=c.relativePath,g.append(E),a.title=c.path}if(a.append(i,g),a.title=c.path,a.setAttribute("aria-pressed",String(c.path===U)),a.onclick=()=>{me=c.directory,D==="convert"&&(he=c.directory?"folder":"file"),U=c.path,(!F||!ue(F,U))&&(F=Ie||T),de(),ee(),Q()},l.append(a),f("files").append(l),c.directory&&ie.has(c.path)){let E=ye.get(c.path);if(E?.length)E.forEach(p=>r(p,u+1));else{let p=document.createElement("div");p.className="tree-note",p.style.paddingLeft=(u+1)*16+24+"px",p.textContent=Se.has(c.path)?"\uBD88\uB7EC\uC624\uB294 \uC911\u2026":E?"\uD45C\uC2DC\uD560 \uBB38\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.":"\uD3BC\uCE58\uAE30\uB97C \uB2E4\uC2DC \uB20C\uB7EC \uC8FC\uC138\uC694.",f("files").append(p)}}};fe?n.forEach(c=>r(c)):T&&r({name:T.split(/[\\/]/).pop()||T,path:T,directory:!0}),f("files").scrollTop=e}async function _t(e){if(V)return;let n=le;if(ie.has(e))ie.delete(e);else if(ie.add(e),!ye.has(e)&&!Se.has(e)){Se.add(e),Q();try{let r=await se("/api/browse?path="+encodeURIComponent(e));if(n!==le)return;ye.set(e,r.entries)}catch(r){n===le&&(ie.delete(e),_("\uD3F4\uB354\uB97C \uD3BC\uCE60 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: "+r.message,!0))}finally{n===le&&Se.delete(e)}}n===le&&(Q(),we(),[...f("files").querySelectorAll(".tree-toggle")].find(r=>r.dataset.path===e)?.focus())}async function ce(e,n=!1){Te(),f("search").value="";let r=++le;try{let c=await se("/api/browse"+(e?"?path="+encodeURIComponent(e):""));return r!==le?void 0:(T=c.path,be=c.parent,Le=c.entries,ye=new Map([[T,Le]]),ie=new Set([T]),Se=new Set,(n||!F)&&(F=T,U=null,me=!1,Ee||de()),n&&(f("root-path-editor").open=!1),f("base-input").value=F||T,f("path").textContent=T,f("path").title=T,f("base-input").title=F||T,f("search").value="",Q(),ee(),!0)}catch(c){r===le&&_("\uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: "+c.message,!0)}}async function Ot(e){V=!0,ee(),Q(),_("\uC2DC\uC2A4\uD15C \uD3F4\uB354 \uB2E4\uC774\uC5BC\uB85C\uADF8\uC5D0\uC11C \uD3F4\uB354\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",!1,null);try{let n=await se("/api/pick-folder",{kind:e,start:e==="base"?F||T:Ue()||be});if(n.path){if(e==="base"&&Z.browser){le++,Te(),F=T=n.path,be=void 0,U=null,me=!1,Le=[],ye=new Map,ie=new Set,Se=new Set,f("base-input").value=n.path,D==="convert"?Fe(""):f("sync-references").value="",ge[D]={},we(),location.reload();return}e==="base"?await ce(n.path,!0):(Fe(n.path),de())}else _("\uD3F4\uB354 \uC120\uD0DD\uC744 \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4.")}catch(n){_(n.message,!0)}finally{V=!1,ee(),Q()}}f("choose-base").onclick=()=>Ot("base");f("choose-out").onclick=()=>Ot("out");f("apply-base").onclick=()=>ce(f("base-input").value,!0);f("base-input").onkeydown=e=>{e.key==="Enter"&&ce(f("base-input").value,!0)};f("up").onclick=()=>ce(be);f("base-home").onclick=()=>{!V&&F&&ce(F)};f("convert-select-all").onclick=()=>{V||!F||D!=="convert"||(he="folder",me=!0,U=F,de(),ee(),Q())};function Te(){clearTimeout(zt),_e?.abort(),Me++,fe=null,Ie=null,Be=!1,Ce=""}f("search").oninput=()=>{Te();let e=f("search").value.trim();if(!e||!T){Q();return}let n=Me;Ie=F||T,fe=[],Be=!0,Ce="\uAE30\uC900 \uD3F4\uB354\uC758 \uBAA8\uB4E0 \uD558\uC704 \uD3F4\uB354\uB97C \uAC80\uC0C9\uD569\uB2C8\uB2E4\u2026",Q(),zt=setTimeout(async()=>{_e=new AbortController;try{let r=await se("/api/search?"+new URLSearchParams({path:Ie,q:e}),void 0,_e.signal);if(n!==Me)return;Ie=r.root,fe=r.entries,Ce=r.skipped?"\uC77D\uC744 \uC218 \uC5C6\uB294 \uD558\uC704 \uD3F4\uB354 "+r.skipped+"\uAC1C\uB97C \uAC74\uB108\uB6F0\uC5C8\uC2B5\uB2C8\uB2E4.":""}catch(r){if(n!==Me)return;Ce="\uAC80\uC0C9\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4: "+r.message}finally{n===Me&&(Be=!1,Q())}},250)};f("direction").onchange=()=>{de(),ee(),f("direction-hint").textContent={markdown:"\uC704\uD0A4\uB9C1\uD06C\uB97C \uC0C1\uB300 \uB9C1\uD06C\uB85C, PDF \uD398\uC774\uC9C0 \uCC38\uC870\uB97C \uC774\uBBF8\uC9C0\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.",obsidian:"\uC0C1\uB300 \uBB38\uC11C \uB9C1\uD06C\uB97C \uC704\uD0A4\uB9C1\uD06C\uB85C \uBC14\uAFB8\uACE0 \uAC01\uC8FC\xB7PDF \uCC38\uC870\uB97C \uBCF5\uC6D0\uD569\uB2C8\uB2E4.",repair:"\uB9C1\uD06C \uD615\uC2DD\uC740 \uC720\uC9C0\uD558\uACE0 \uCF54\uB4DC\uBE14\uB85D \uC5B8\uC5B4\xB7CSS \uC794\uD574\xB7\uC774\uC2A4\uCF00\uC774\uD504 \uB4F1\uC744 \uBCF4\uC815\uD569\uB2C8\uB2E4."}[f("direction").value]};var ve=f("repair-help-button"),We=f("repair-tooltip"),Tt=()=>{We.hidden=!1};ve.onfocus=ve.onclick=Tt;ve.parentElement.onmouseenter=Tt;ve.parentElement.onmouseleave=()=>{document.activeElement!==ve&&(We.hidden=!0)};ve.onblur=()=>{We.hidden=!0};ve.onkeydown=e=>{e.key==="Escape"&&(We.hidden=!0,e.stopPropagation())};function Pt(e){let n=Ae[e];n&&(De.setValue(n.before),qe.setValue(n.after),f("comparison-empty").hidden=!0,f("preview-label").textContent=n.before===n.after?"\uBCF8\uBB38 \uBCC0\uACBD \uC5C6\uC74C":"\uBCC0\uACBD\uB41C \uBD80\uBD84 \uD45C\uC2DC")}f("preview-document").onchange=()=>Pt(Number(f("preview-document").value));f("fix").onchange=de;f("out-input").oninput=()=>{de(),ee()};async function Nt(e){if(!(V||!U)){V=!0;try{de(),ee(),Q(),_(e?"\uBBF8\uB9AC\uBCF4\uAE30\uB97C \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4\u2026":"\uBB38\uC11C\uC640 \uCCA8\uBD80\uD30C\uC77C\uC744 \uBCC0\uD658\uD558\uB294 \uC911\uC785\uB2C8\uB2E4\u2026",!1,null),await Xt();let n={base:F,file:U,scope:he,out:Ue(),to:f("direction").value,fix:f("fix").checked,preview:e},r,c={};for(;!r;)try{r=await se("/api/convert",{...n,approvedOverwrites:c})}catch(u){if(e||u.code!=="OVERWRITE_REQUIRED")throw u;if(!await Vt({conflicts:u.conflicts,inPlace:u.inPlace,output:u.output||n.out})){_("\uB36E\uC5B4\uC4F0\uAE30\uB97C \uCDE8\uC18C\uD588\uC2B5\uB2C8\uB2E4. \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.");return}for(let l of u.conflicts)c[l.path]=l.hash;_("\uAE30\uC874 \uD30C\uC77C\uC744 \uB36E\uC5B4\uC4F0\uB294 \uC911\uC785\uB2C8\uB2E4\u2026",!1,null)}if(Ae=r.previews,f("preview-document").replaceChildren(...Ae.map((u,l)=>{let t=document.createElement("option");return t.value=l,t.textContent=u.path,t})),f("preview-documents").hidden=r.documentCount<=1,f("preview-count").textContent=`\uC804\uCCB4 ${r.documentCount}\uAC1C \uBCC0\uD658 \xB7 ${Ae.length}\uAC1C \uBCF8\uBB38 \uBE44\uAD50`,Pt(0),f("log").textContent=r.log,f("details").hidden=!1,xe=r.output,xe&&(f("output").textContent=Z.browser&&Z.folderName(xe)||xe,f("result").hidden=!1),e)_("\uBBF8\uB9AC\uBCF4\uAE30 \uC644\uB8CC. \uCD9C\uB825 \uC704\uCE58\uB97C \uD655\uC778\uD558\uACE0 \uC800\uC7A5\uD558\uC138\uC694.",!1,"success");else if(r.saved&&r.saved.created===0&&r.saved.overwritten===0)_(`\uAE30\uC874 \uCD9C\uB825\uACFC \uB0B4\uC6A9\uC774 \uAC19\uC544 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD30C\uC77C ${r.saved.reused}\uAC1C\uB97C \uADF8\uB300\uB85C \uC7AC\uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4.`,!1,"success");else{let u=r.saved;_(u?`\uC800\uC7A5 \uC644\uB8CC \xB7 \uC0C8 \uD30C\uC77C ${u.created}\uAC1C \xB7 \uB36E\uC5B4\uC4F4 \uD30C\uC77C ${u.overwritten}\uAC1C \xB7 \uB3D9\uC77C \uB0B4\uC6A9 \uC7AC\uC0AC\uC6A9 ${u.reused}\uAC1C (\uBB38\uC11C\xB7\uCCA8\uBD80 \uD3EC\uD568)`:`\uBB38\uC11C ${r.documentCount}\uAC1C \uC800\uC7A5 \uC644\uB8CC.`,!1,"success")}}catch(n){_(n.message,!0)}finally{V=!1,ee(),Q()}}}f("next-document").onclick=()=>{V||(U=null,de(),Te(),f("search").value="",ee(),Q(),f("search").focus(),f("search").scrollIntoView({block:"center",behavior:"auto"}),_("\uB2E4\uC74C \uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uC138\uC694. \uAE30\uC900 \uD3F4\uB354\uC640 \uBCC0\uD658 \uC124\uC815\uC740 \uC720\uC9C0\uB429\uB2C8\uB2E4."))};f("preview").onclick=()=>Nt(!0);f("save").onclick=()=>Nt(!1);f("open").onclick=async()=>{try{let e=await se("/api/open",{path:xe});Z.browser&&_(`\uC120\uD0DD\uD55C \uCD9C\uB825 \uD3F4\uB354 (${e.name})\uC5D0 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.`)}catch(e){_("\uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC704 \uC800\uC7A5 \uACBD\uB85C\uB97C \uC774\uC6A9\uD574 \uC8FC\uC138\uC694. "+e.message,!0)}};Oe=vt({activity:Et,api:se,loadMonaco:Re,notify:$e,context:()=>{let e=D==="sync"?It():ge.sync;return{base:e.base||e.folder,folder:e.folder,file:e.file,directory:e.selectedDirectory}},setBusy:e=>{V=e,ee(),Q()},showSync:()=>Ge("sync"),refresh:async()=>{D==="sync"&&await ce(F||T)}});document.querySelector(".app-main").addEventListener("input",we);document.querySelector(".app-main").addEventListener("change",we);async function Rt(e){let n=a=>typeof e[a]=="string"?e[a]:"";le++,Te(),F=null,U=null,me=!1,T=void 0,be=void 0,Le=[],f("base-input").value="",ee(),Q();let r="",c=n("base"),u=n("folder");c?await ce(c,!0)?u&&ue(F,u)&&u!==F&&(await ce(u)||(r="\uC774\uC804 \uD0D0\uC0C9 \uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uAE30\uC900 \uD3F4\uB354\uB97C \uC5F4\uC5C8\uC2B5\uB2C8\uB2E4.")):(r="\uC800\uC7A5\uB41C \uAE30\uC900 \uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uC2DC\uC791 \uD3F4\uB354\uB97C \uC5F4\uC5C8\uC2B5\uB2C8\uB2E4. \uACBD\uB85C\uB97C \uB2E4\uC2DC \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",await ce()):await ce(u||void 0)||(r="\uC774\uC804 \uD3F4\uB354\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uC2DC\uC791 \uD3F4\uB354\uB97C \uC5F4\uC5C8\uC2B5\uB2C8\uB2E4.",await ce());let l=n("file");if(l&&F&&ue(F,l))try{if(D==="convert"&&he==="folder"||D==="sync"&&e.selectedDirectory===!0)U=(await se("/api/browse?path="+encodeURIComponent(l))).path,me=!0;else{let a=l.slice(0,Math.max(l.lastIndexOf("/"),l.lastIndexOf("\\")));(await se("/api/browse?path="+encodeURIComponent(a))).entries.some(s=>!s.directory&&s.path===l)?U=l:r="\uC774\uC804\uC5D0 \uC120\uD0DD\uD55C \uBB38\uC11C\uAC00 \uC5C6\uC5B4 \uC120\uD0DD\uC744 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4."}}catch{r="\uC774\uC804\uC5D0 \uC120\uD0DD\uD55C \uBB38\uC11C\uB97C \uC5F4 \uC218 \uC5C6\uC5B4 \uC120\uD0DD\uC744 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4."}let t=new Set(Array.isArray(e.expanded)?e.expanded.filter(a=>typeof a=="string"&&T&&ue(T,a)):[]);if(!Array.isArray(e.expanded)&&U&&T&&ue(T,U)){let a=U.slice(0,Math.max(U.lastIndexOf("/"),U.lastIndexOf("\\")));for(;a&&ue(T,a)&&(t.add(a),a!==T);)a=a.slice(0,Math.max(a.lastIndexOf("/"),a.lastIndexOf("\\")))}for(let a of t)try{ye.has(a)||ye.set(a,(await se("/api/browse?path="+encodeURIComponent(a))).entries),ie.add(a)}catch{}return!r&&n("baseInput")&&(f("base-input").value=n("baseInput")),r&&D==="convert"&&de(),r}async function Gt(){let e=Lt(),n=l=>typeof e[l]=="string"?e[l]:"";V=!0,ee(),f("sync-references").value=n("referenceRoots"),Fe(n("out")),["file","folder"].includes(e.convertScope)&&(he=e.convertScope),["markdown","obsidian","repair"].includes(e.direction)&&(f("direction").value=e.direction),typeof e.fix=="boolean"&&(f("fix").checked=e.fix),["markdown","obsidian"].includes(e.pullFormat)&&(f("sync-pull-format").value=e.pullFormat),typeof e.verify=="boolean"&&(f("sync-verify").checked=e.verify),typeof e.sideBySide=="boolean"&&(f("side-by-side").checked=e.sideBySide,re?.updateOptions({renderSideBySide:e.sideBySide}));let r=l=>l&&typeof l=="object"&&!Array.isArray(l);ge=r(e.workspaces)?{convert:r(e.workspaces.convert)?e.workspaces.convert:{},sync:r(e.workspaces.sync)?e.workspaces.sync:{}}:{convert:{base:e.base,folder:e.folder,file:e.file,baseInput:e.baseInput},sync:{base:e.base,folder:e.folder,file:e.file,baseInput:e.baseInput}};let c=e.mode==="sync"?"sync":"convert";Z.browser&&Z.newBaseSelected?.()&&(ge[c]={},c==="convert"?Fe(""):f("sync-references").value=""),f("direction").onchange(),$t(c);let u;try{u=await Rt(ge[D])}finally{Ee=!1,V=!1,ee(),Q()}(!Z.browser||D==="sync")&&await Oe.resume(),u&&_(u,!0)}Z.ready.then(Gt).then(()=>{let e=Oe.watch();window.addEventListener("pagehide",e,{once:!0})}).catch(e=>$e(e.message,"error"));