zen-gitsync 2.15.8 → 2.15.10
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.
- package/README.md +1 -0
- package/package.json +1 -1
- package/src/ui/public/assets/AppVersionBadge-ZginY_T5.js +2 -0
- package/src/ui/public/assets/{BranchSelector-DoY43HVz.js → BranchSelector-BD8y_UMH.js} +1 -1
- package/src/ui/public/assets/{CommitForm-BIwYhnl6.js → CommitForm-B1DJxyib.js} +1 -1
- package/src/ui/public/assets/{ConsoleView-eoEYLkYu.js → ConsoleView-EJa9vjMa.js} +2 -2
- package/src/ui/public/assets/CustomCommandManager-BRxKf9jl.js +1 -0
- package/src/ui/public/assets/{EditorView-Dvt1LUL7.js → EditorView-DR2O8qKP.js} +0 -0
- package/src/ui/public/assets/{FlowExecutionViewer-tpbVccBh.js → FlowExecutionViewer-Dvv2-pUp.js} +1 -1
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-BKalhFsV.js → FlowOrchestrationWorkspace-DzSgBTmq.js} +1 -1
- package/src/ui/public/assets/{LogList-D7M5qlo9.js → LogList-BEnd3kcT.js} +1 -1
- package/src/ui/public/assets/MindmapView-Bt2VdyoX.css +1 -0
- package/src/ui/public/assets/MindmapView-Ds2Qd2ZL.js +1 -0
- package/src/ui/public/assets/{MonitorView-Wuza9xoA.js → MonitorView-B9t-8uJB.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-BON5_5pd.js → ProjectStartupButton-CHh6z5Pn.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-DqVy9_jd.js → RemoteRepoCard-BbKpAzPj.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-DyEW_0Bi.js → SourceMapView-Deai1zNG.js} +1 -1
- package/src/ui/public/assets/{SvgIcon-gZB9aFAd.js → SvgIcon-BoP8CWdO.js} +1 -1
- package/src/ui/public/assets/{TemplateManager-DjnkD7_u.js → TemplateManager-Eu4YhYCk.js} +1 -1
- package/src/ui/public/assets/{UserInputNode-Cr1SxzIN.js → UserInputNode-C0GJHtef.js} +1 -1
- package/src/ui/public/assets/{WorkbenchView-CvHPPs8Q.css → WorkbenchView-C2xSxJfg.css} +1 -1
- package/src/ui/public/assets/WorkbenchView-DUS0hiHf.js +12 -0
- package/src/ui/public/assets/{_plugin-vue_export-helper-CbbG2Bfw.js → _plugin-vue_export-helper-D9aIxbUC.js} +4 -4
- package/src/ui/public/assets/{configStore-apbbX4nJ.js → configStore-CiAM1jWr.js} +1 -1
- package/src/ui/public/assets/flow-mindmap-CI2OSS19.css +1 -0
- package/src/ui/public/assets/flow-mindmap-DrcjupFb.js +90 -0
- package/src/ui/public/assets/{index-BN1q_ie5.js → index-Dleiy2zi.js} +3 -3
- package/src/ui/public/assets/index-DltbTqIJ.css +1 -0
- package/src/ui/public/index.html +5 -5
- package/src/ui/public/assets/AppVersionBadge-BmGuEsu2.js +0 -2
- package/src/ui/public/assets/CustomCommandManager-BB5dROOG.js +0 -1
- package/src/ui/public/assets/MindmapView-B8rUSi-e.css +0 -1
- package/src/ui/public/assets/MindmapView-u5m7lyGg.js +0 -1
- package/src/ui/public/assets/WorkbenchView-CeE1Pog-.js +0 -12
- package/src/ui/public/assets/flow-mindmap-DYBM6P0r.js +0 -21
- package/src/ui/public/assets/flow-mindmap-l8sIPoN8.css +0 -1
- package/src/ui/public/assets/index-CquDLWhf.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-CMxvf4Kt.js";import{Jn as e,a as t,mn as n,n as r,sr as i,t as a}from"./element-plus-DB-NeCl9.js";import{u as o}from"./vendor-SOsdHF7M.js";import{a as s,n as c,r as l}from"./_plugin-vue_export-helper-CbbG2Bfw.js";var u={"zh-CN":r,"en-US":a};function d(e){return u[e]||r}var f=o(`locale`,()=>{let e=i(l()),t=n(()=>d(e.value));async function r(t){s(t),e.value=t;let n=p();n.locale!==t&&await n.saveGeneralSettings({locale:t})}return{currentLocale:e,elementPlusLocale:t,changeLocale:r}}),p=o(`config`,()=>{let r=i(``),a=i([]),o=i([]),l=i([]),u=i([]),d=i([]),p=i([]),m=i([]),h=i([]),g=i(!1),_=i({enabled:!1,type:`command`,refId:``}),v=i(!1),y=i(!1),b=i(``),x=i(``),S=i(``),C=i(!0),w=i(!1),T=i(!0),E=i(!1),D=i(!1),O=i(!0),k=i(`light`),A=i(`zh-CN`),j=i([]),M={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},layoutsByProject:{},fileListViewMode:`list`,fileDiffSplitPercent:35,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!1,mindmapDir:``},N=i(JSON.parse(JSON.stringify(M))),P=i(!1);function F(e){S.value=e||``}function I(){let e=S.value;if(e&&N.value.layoutsByProject?.[e]){N.value.layout={...N.value.layoutsByProject[e]};return}}function L(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}function R(){let e=document.documentElement.getAttribute(`data-theme`)===`dark`?`light`:`dark`;return k.value=e,L(e),$({theme:e}).catch(e=>{console.error(`保存主题切换结果失败:`,e)}),e}L(k.value);let z=n(()=>({defaultCommitMessage:r.value,descriptionTemplates:a.value,scopeTemplates:o.value,messageTemplates:l.value,commandTemplates:u.value,lockedFiles:d.value,customCommands:p.value,orchestrations:m.value,startupItems:h.value,startupAutoRun:g.value,afterQuickPushAction:_.value,currentDirectory:S.value})),B=n(()=>!!(b.value&&b.value.trim()));async function V(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),n=await e.json().catch(()=>({}));return e.ok&&n?.success?(t.success(c(`@D50BB:已打开系统配置文件`)),!0):(t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${n?.error||``}`),!1)}catch(e){return t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function H(e=!1){if(!e&&y.value&&!v.value)return console.log(c(`@D50BB:使用缓存的配置信息`)),z.value;v.value=!0;try{v.value=!0,console.log(c(`@D50BB:加载配置信息...`));let e=await fetch(`/api/config/getConfig`),n=await e.json().catch(()=>({}));if(!e.ok||n&&n.success===!1){let e=String(n?.error||c(`@D50BB:加载配置失败`)),r=String(n?.configPath||``),i=r?`\n${c(`@D50BB:配置文件`)}: ${r}`:``;return t.error(`${c(`@D50BB:加载配置失败: `)}${e}${i}`),b.value=e,x.value=r,null}if(b.value=``,x.value=``,r.value=n.defaultCommitMessage||``,a.value=n.descriptionTemplates||[],o.value=n.scopeTemplates||[],l.value=n.messageTemplates||[],u.value=n.commandTemplates||[],d.value=n.lockedFiles||[],p.value=n.customCommands||[],m.value=n.orchestrations||[],h.value=(n.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled==`boolean`?e.enabled:!0})).filter(e=>e.id&&e.refId),g.value=n.startupAutoRun||!1,_.value={enabled:!!n?.afterQuickPushAction?.enabled,type:n?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(n?.afterQuickPushAction?.refId||``).trim()},n.isStandardCommit!==void 0&&(T.value=!!n.isStandardCommit),n.skipHooks!==void 0&&(E.value=!!n.skipHooks),n.autoQuickPushOnEnter!==void 0&&(D.value=!!n.autoQuickPushOnEnter),n.autoSetDefaultMessage!==void 0&&(w.value=!!n.autoSetDefaultMessage),n.autoClosePushModal!==void 0&&(C.value=!!n.autoClosePushModal),n.pullBeforePush!==void 0&&(O.value=!!n.pullBeforePush),Array.isArray(n.models)&&(j.value=n.models),n.theme&&[`light`,`dark`,`auto`].includes(n.theme)&&(k.value=n.theme,L(n.theme)),n.locale&&[`zh-CN`,`en-US`].includes(n.locale)){A.value=n.locale,s(n.locale);let e=f();e.currentLocale=n.locale}if(n.currentDirectory&&(S.value=n.currentDirectory),n.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,M.layout.leftRatio),midRatio:e(r,M.layout.midRatio),rightRatio:e(i,M.layout.rightRatio),topRatio:e(a,M.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null?!0:u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):M.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(N.value={...N.value,...t}),Object.keys(t).length>0&&q(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else{let e=n.ui.layoutsByProject&&typeof n.ui.layoutsByProject==`object`&&!Array.isArray(n.ui.layoutsByProject)?n.ui.layoutsByProject:{},t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;t[n]={leftRatio:Number.isFinite(Number(e.leftRatio))?Number(e.leftRatio):M.layout.leftRatio,midRatio:Number.isFinite(Number(e.midRatio))?Number(e.midRatio):M.layout.midRatio,rightRatio:Number.isFinite(Number(e.rightRatio))?Number(e.rightRatio):M.layout.rightRatio,topRatio:Number.isFinite(Number(e.topRatio))?Number(e.topRatio):M.layout.topRatio}}N.value={layout:{...M.layout,...n.ui.layout||{}},layoutsByProject:t,fileListViewMode:n.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(n.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(n.ui.fileDiffSplitPercent))):M.fileDiffSplitPercent,commandConsole:{expanded:typeof n.ui.commandConsole?.expanded==`boolean`?n.ui.commandConsole.expanded:M.commandConsole.expanded,useTerminal:typeof n.ui.commandConsole?.useTerminal==`boolean`?n.ui.commandConsole.useTerminal:M.commandConsole.useTerminal,showTerminalSessions:typeof n.ui.commandConsole?.showTerminalSessions==`boolean`?n.ui.commandConsole.showTerminalSessions:M.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(n.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(n.ui.commandConsole.splitPercent))):M.commandConsole.splitPercent},editorAutoSave:typeof n.ui.editorAutoSave==`boolean`?n.ui.editorAutoSave:M.editorAutoSave,mindmapDir:typeof n.ui.mindmapDir==`string`?n.ui.mindmapDir:M.mindmapDir}}return I(),P.value=!0,y.value=!0,console.log(c(`@D50BB:配置信息加载完成`)),z.value}catch(e){return console.error(`加载配置失败:`,e),t.error(`${c(`@D50BB:加载配置失败: `)}${e.message}`),b.value=e.message,null}finally{v.value=!1}}async function U(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:T.value,skipHooks:E.value,autoQuickPushOnEnter:D.value,autoSetDefaultMessage:w.value,autoClosePushModal:C.value,pullBeforePush:O.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}e([T,E,D,w,C,O],()=>{y.value&&U()});let W=null,G={};async function K(){if(W&&=(clearTimeout(W),null),Object.keys(G).length===0)return;let e=G;G={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function q(e,t={}){if(P.value){if(t.immediate){Object.assign(G,e),await K();return}Object.assign(G,e),W&&clearTimeout(W),W=setTimeout(()=>{K()},300)}}async function J(){N.value.layout={...M.layout};let e=S.value;return e&&(N.value.layoutsByProject={...N.value.layoutsByProject,[e]:{...N.value.layout}}),await q({layoutsByProject:N.value.layoutsByProject},{immediate:!0}),N.value.layout}e(()=>N.value.fileListViewMode,e=>{P.value&&q({fileListViewMode:e})}),e(()=>N.value.fileDiffSplitPercent,e=>{P.value&&q({fileDiffSplitPercent:e})}),e(()=>N.value.editorAutoSave,e=>{P.value&&q({editorAutoSave:e})}),e(()=>N.value.layout,e=>{if(!P.value)return;let t=S.value;t&&(N.value.layoutsByProject={...N.value.layoutsByProject,[t]:e},q({layoutsByProject:N.value.layoutsByProject}))},{deep:!0}),e(()=>N.value.commandConsole,e=>{P.value&&q({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{K()});async function Y(e){try{let n=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:e})})).json();return n.success?(r.value=e,t.success(c(`@D50BB:默认提交信息已保存`)),!0):(t.error(`${c(`@D50BB:保存失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存失败: `)}${e.message}`),!1}}async function X(e){try{let n=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return n.success?(_.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(t.error(`保存提交后启动项失败: ${n.error}`),!1)}catch(e){return t.error(`保存提交后启动项失败: ${e.message}`),!1}}async function Z(e,n){try{let r=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value.includes(e)||a.value.push(e):n===`scope`?o.value.includes(e)||o.value.push(e):n===`message`?l.value.includes(e)||l.value.push(e):n===`command`&&(u.value.includes(e)||u.value.push(e)),t.success(c(`@D50BB:模板已保存`)),!0):(t.error(`${c(`@D50BB:保存模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function ee(e,n){try{let r=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value=a.value.filter(t=>t!==e):n===`scope`?o.value=o.value.filter(t=>t!==e):n===`message`?l.value=l.value.filter(t=>t!==e):n===`command`&&(u.value=u.value.filter(t=>t!==e)),t.success(c(`@D50BB:模板已删除`)),!0):(t.error(`${c(`@D50BB:删除模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function te(e,n,r){try{let i=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:n,type:r})})).json();if(i.success){if(r===`description`){let t=a.value.indexOf(e);t!==-1&&(a.value[t]=n)}else if(r===`scope`){let t=o.value.indexOf(e);t!==-1&&(o.value[t]=n)}else if(r===`message`){let t=l.value.indexOf(e);t!==-1&&(l.value[t]=n)}else if(r===`command`){let t=u.value.indexOf(e);t!==-1&&(u.value[t]=n)}return t.success(c(`@D50BB:模板已更新`)),!0}else return t.error(`${c(`@D50BB:更新模板失败: `)}${i.error}`),!1}catch(e){return t.error(`${c(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function ne(e,n){try{let r=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?(a.value=a.value.filter(t=>t!==e),a.value.unshift(e)):n===`scope`?(o.value=o.value.filter(t=>t!==e),o.value.unshift(e)):n===`message`?(l.value=l.value.filter(t=>t!==e),l.value.unshift(e)):n===`command`&&(u.value=u.value.filter(t=>t!==e),u.value.unshift(e)),t.success(c(`@D50BB:模板已置顶`)),!0):(t.error(`${c(`@D50BB:置顶模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function Q(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(d.value=e.lockedFiles||[],e.lockedFiles):(t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function re(e){try{let n=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已锁定: `)}${e}`),!0):(t.error(`${c(`@D50BB:锁定文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),t.error(`${c(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function ie(e){try{let n=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已解锁: `)}${e}`),!0):(t.error(`${c(`@D50BB:解锁文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),t.error(`${c(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function ae(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function oe(e){try{let n=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已保存`)),!0):(t.error(`${c(`@CMD01:保存命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function se(e){try{let n=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已删除`)),!0):(t.error(`${c(`@CMD01:删除命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ce(e,n){try{let r=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:n})})).json();return r.success?(await H(!0),t.success(c(`@CMD01:命令已更新`)),!0):(t.error(`${c(`@CMD01:更新命令失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function le(e){try{let n=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),!0):(t.error(n.error),!1)}catch(e){return t.error(e.message),!1}}async function ue(e){try{let n=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已保存`)),n.orchestration||null):(t.error(`${c(`@ORCH:保存编排失败: `)}${n.error}`),null)}catch(e){return t.error(`${c(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function de(e){try{let n=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已删除`)),!0):(t.error(`${c(`@ORCH:删除编排失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function fe(e,n){try{let r=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:n})})).json();return r.success?(await H(!0),t.success(c(`@ORCH:编排已更新`)),!0):(t.error(`${c(`@ORCH:更新编排失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function pe(e,n){try{let r=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:n===void 0?g.value:n})})).json();return r.success?(h.value=e,n!==void 0&&(g.value=n),!0):(t.error(`保存启动项失败: ${r.error}`),!1)}catch(e){return t.error(`保存启动项失败: ${e.message}`),!1}}async function me(e){try{let n=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return n.success?(j.value=e,!0):(t.error(`${c(`@D50BB:保存模型失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function $(e){try{let n=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(n.success){if(e.theme&&(k.value=e.theme,L(e.theme)),e.locale){A.value=e.locale,s(e.locale);let t=f();t.currentLocale=e.locale}return!0}else return t.error(`保存通用设置失败: ${n.error}`),!1}catch(e){return t.error(`保存通用设置失败: ${e.message}`),!1}}return{models:j,defaultCommitMessage:r,descriptionTemplates:a,scopeTemplates:o,messageTemplates:l,commandTemplates:u,lockedFiles:d,customCommands:p,orchestrations:m,startupItems:h,startupAutoRun:g,afterQuickPushAction:_,isLoading:v,isLoaded:y,configLoadError:b,configFilePath:x,hasConfigLoadError:B,currentDirectory:S,config:z,autoClosePushModal:C,autoSetDefaultMessage:w,isStandardCommit:T,skipHooks:E,autoQuickPushOnEnter:D,pullBeforePush:O,theme:k,locale:A,ui:N,isUiLoaded:P,loadConfig:H,setCurrentDirectory:F,openSystemConfigFile:V,saveTemplate:Z,saveModels:me,saveGeneralSettings:$,saveUiSettings:q,resetUiLayout:J,applyTheme:L,toggleTheme:R,saveDefaultMessage:Y,deleteTemplate:ee,updateTemplate:te,pinTemplate:ne,loadLockedFiles:Q,lockFile:re,unlockFile:ie,isFileLocked:ae,saveCustomCommand:oe,deleteCustomCommand:se,updateCustomCommand:ce,pinCustomCommand:le,saveOrchestration:ue,deleteOrchestration:de,updateOrchestration:fe,saveStartupItems:pe,saveAfterQuickPushAction:X,saveCommitSettings:U}});export{f as n,p as t};
|
|
1
|
+
import"./rolldown-runtime-CMxvf4Kt.js";import{Jn as e,a as t,mn as n,n as r,sr as i,t as a}from"./element-plus-DB-NeCl9.js";import{u as o}from"./vendor-SOsdHF7M.js";import{a as s,n as c,r as l}from"./_plugin-vue_export-helper-D9aIxbUC.js";var u={"zh-CN":r,"en-US":a};function d(e){return u[e]||r}var f=o(`locale`,()=>{let e=i(l()),t=n(()=>d(e.value));async function r(t){s(t),e.value=t;let n=p();n.locale!==t&&await n.saveGeneralSettings({locale:t})}return{currentLocale:e,elementPlusLocale:t,changeLocale:r}}),p=o(`config`,()=>{let r=i(``),a=i([]),o=i([]),l=i([]),u=i([]),d=i([]),p=i([]),m=i([]),h=i([]),g=i(!1),_=i({enabled:!1,type:`command`,refId:``}),v=i(!1),y=i(!1),b=i(``),x=i(``),S=i(``),C=i(!0),w=i(!1),T=i(!0),E=i(!1),D=i(!1),O=i(!0),k=i(`light`),A=i(`zh-CN`),j=i([]),M={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},layoutsByProject:{},fileListViewMode:`list`,fileDiffSplitPercent:35,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!1,mindmapDir:``},N=i(JSON.parse(JSON.stringify(M))),P=i(!1);function F(e){S.value=e||``}function I(){let e=S.value;if(e&&N.value.layoutsByProject?.[e]){N.value.layout={...N.value.layoutsByProject[e]};return}}function L(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}function R(){let e=document.documentElement.getAttribute(`data-theme`)===`dark`?`light`:`dark`;return k.value=e,L(e),$({theme:e}).catch(e=>{console.error(`保存主题切换结果失败:`,e)}),e}L(k.value);let z=n(()=>({defaultCommitMessage:r.value,descriptionTemplates:a.value,scopeTemplates:o.value,messageTemplates:l.value,commandTemplates:u.value,lockedFiles:d.value,customCommands:p.value,orchestrations:m.value,startupItems:h.value,startupAutoRun:g.value,afterQuickPushAction:_.value,currentDirectory:S.value})),B=n(()=>!!(b.value&&b.value.trim()));async function V(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),n=await e.json().catch(()=>({}));return e.ok&&n?.success?(t.success(c(`@D50BB:已打开系统配置文件`)),!0):(t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${n?.error||``}`),!1)}catch(e){return t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function H(e=!1){if(!e&&y.value&&!v.value)return console.log(c(`@D50BB:使用缓存的配置信息`)),z.value;v.value=!0;try{v.value=!0,console.log(c(`@D50BB:加载配置信息...`));let e=await fetch(`/api/config/getConfig`),n=await e.json().catch(()=>({}));if(!e.ok||n&&n.success===!1){let e=String(n?.error||c(`@D50BB:加载配置失败`)),r=String(n?.configPath||``),i=r?`\n${c(`@D50BB:配置文件`)}: ${r}`:``;return t.error(`${c(`@D50BB:加载配置失败: `)}${e}${i}`),b.value=e,x.value=r,null}if(b.value=``,x.value=``,r.value=n.defaultCommitMessage||``,a.value=n.descriptionTemplates||[],o.value=n.scopeTemplates||[],l.value=n.messageTemplates||[],u.value=n.commandTemplates||[],d.value=n.lockedFiles||[],p.value=n.customCommands||[],m.value=n.orchestrations||[],h.value=(n.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled==`boolean`?e.enabled:!0})).filter(e=>e.id&&e.refId),g.value=n.startupAutoRun||!1,_.value={enabled:!!n?.afterQuickPushAction?.enabled,type:n?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(n?.afterQuickPushAction?.refId||``).trim()},n.isStandardCommit!==void 0&&(T.value=!!n.isStandardCommit),n.skipHooks!==void 0&&(E.value=!!n.skipHooks),n.autoQuickPushOnEnter!==void 0&&(D.value=!!n.autoQuickPushOnEnter),n.autoSetDefaultMessage!==void 0&&(w.value=!!n.autoSetDefaultMessage),n.autoClosePushModal!==void 0&&(C.value=!!n.autoClosePushModal),n.pullBeforePush!==void 0&&(O.value=!!n.pullBeforePush),Array.isArray(n.models)&&(j.value=n.models),n.theme&&[`light`,`dark`,`auto`].includes(n.theme)&&(k.value=n.theme,L(n.theme)),n.locale&&[`zh-CN`,`en-US`].includes(n.locale)){A.value=n.locale,s(n.locale);let e=f();e.currentLocale=n.locale}if(n.currentDirectory&&(S.value=n.currentDirectory),n.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,M.layout.leftRatio),midRatio:e(r,M.layout.midRatio),rightRatio:e(i,M.layout.rightRatio),topRatio:e(a,M.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null?!0:u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):M.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(N.value={...N.value,...t}),Object.keys(t).length>0&&q(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else{let e=n.ui.layoutsByProject&&typeof n.ui.layoutsByProject==`object`&&!Array.isArray(n.ui.layoutsByProject)?n.ui.layoutsByProject:{},t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;t[n]={leftRatio:Number.isFinite(Number(e.leftRatio))?Number(e.leftRatio):M.layout.leftRatio,midRatio:Number.isFinite(Number(e.midRatio))?Number(e.midRatio):M.layout.midRatio,rightRatio:Number.isFinite(Number(e.rightRatio))?Number(e.rightRatio):M.layout.rightRatio,topRatio:Number.isFinite(Number(e.topRatio))?Number(e.topRatio):M.layout.topRatio}}N.value={layout:{...M.layout,...n.ui.layout||{}},layoutsByProject:t,fileListViewMode:n.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(n.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(n.ui.fileDiffSplitPercent))):M.fileDiffSplitPercent,commandConsole:{expanded:typeof n.ui.commandConsole?.expanded==`boolean`?n.ui.commandConsole.expanded:M.commandConsole.expanded,useTerminal:typeof n.ui.commandConsole?.useTerminal==`boolean`?n.ui.commandConsole.useTerminal:M.commandConsole.useTerminal,showTerminalSessions:typeof n.ui.commandConsole?.showTerminalSessions==`boolean`?n.ui.commandConsole.showTerminalSessions:M.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(n.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(n.ui.commandConsole.splitPercent))):M.commandConsole.splitPercent},editorAutoSave:typeof n.ui.editorAutoSave==`boolean`?n.ui.editorAutoSave:M.editorAutoSave,mindmapDir:typeof n.ui.mindmapDir==`string`?n.ui.mindmapDir:M.mindmapDir}}return I(),P.value=!0,y.value=!0,console.log(c(`@D50BB:配置信息加载完成`)),z.value}catch(e){return console.error(`加载配置失败:`,e),t.error(`${c(`@D50BB:加载配置失败: `)}${e.message}`),b.value=e.message,null}finally{v.value=!1}}async function U(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:T.value,skipHooks:E.value,autoQuickPushOnEnter:D.value,autoSetDefaultMessage:w.value,autoClosePushModal:C.value,pullBeforePush:O.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}e([T,E,D,w,C,O],()=>{y.value&&U()});let W=null,G={};async function K(){if(W&&=(clearTimeout(W),null),Object.keys(G).length===0)return;let e=G;G={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function q(e,t={}){if(P.value){if(t.immediate){Object.assign(G,e),await K();return}Object.assign(G,e),W&&clearTimeout(W),W=setTimeout(()=>{K()},300)}}async function J(){N.value.layout={...M.layout};let e=S.value;return e&&(N.value.layoutsByProject={...N.value.layoutsByProject,[e]:{...N.value.layout}}),await q({layoutsByProject:N.value.layoutsByProject},{immediate:!0}),N.value.layout}e(()=>N.value.fileListViewMode,e=>{P.value&&q({fileListViewMode:e})}),e(()=>N.value.fileDiffSplitPercent,e=>{P.value&&q({fileDiffSplitPercent:e})}),e(()=>N.value.editorAutoSave,e=>{P.value&&q({editorAutoSave:e})}),e(()=>N.value.layout,e=>{if(!P.value)return;let t=S.value;t&&(N.value.layoutsByProject={...N.value.layoutsByProject,[t]:e},q({layoutsByProject:N.value.layoutsByProject}))},{deep:!0}),e(()=>N.value.commandConsole,e=>{P.value&&q({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{K()});async function Y(e){try{let n=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:e})})).json();return n.success?(r.value=e,t.success(c(`@D50BB:默认提交信息已保存`)),!0):(t.error(`${c(`@D50BB:保存失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存失败: `)}${e.message}`),!1}}async function X(e){try{let n=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return n.success?(_.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(t.error(`保存提交后启动项失败: ${n.error}`),!1)}catch(e){return t.error(`保存提交后启动项失败: ${e.message}`),!1}}async function Z(e,n){try{let r=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value.includes(e)||a.value.push(e):n===`scope`?o.value.includes(e)||o.value.push(e):n===`message`?l.value.includes(e)||l.value.push(e):n===`command`&&(u.value.includes(e)||u.value.push(e)),t.success(c(`@D50BB:模板已保存`)),!0):(t.error(`${c(`@D50BB:保存模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function ee(e,n){try{let r=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value=a.value.filter(t=>t!==e):n===`scope`?o.value=o.value.filter(t=>t!==e):n===`message`?l.value=l.value.filter(t=>t!==e):n===`command`&&(u.value=u.value.filter(t=>t!==e)),t.success(c(`@D50BB:模板已删除`)),!0):(t.error(`${c(`@D50BB:删除模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function te(e,n,r){try{let i=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:n,type:r})})).json();if(i.success){if(r===`description`){let t=a.value.indexOf(e);t!==-1&&(a.value[t]=n)}else if(r===`scope`){let t=o.value.indexOf(e);t!==-1&&(o.value[t]=n)}else if(r===`message`){let t=l.value.indexOf(e);t!==-1&&(l.value[t]=n)}else if(r===`command`){let t=u.value.indexOf(e);t!==-1&&(u.value[t]=n)}return t.success(c(`@D50BB:模板已更新`)),!0}else return t.error(`${c(`@D50BB:更新模板失败: `)}${i.error}`),!1}catch(e){return t.error(`${c(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function ne(e,n){try{let r=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?(a.value=a.value.filter(t=>t!==e),a.value.unshift(e)):n===`scope`?(o.value=o.value.filter(t=>t!==e),o.value.unshift(e)):n===`message`?(l.value=l.value.filter(t=>t!==e),l.value.unshift(e)):n===`command`&&(u.value=u.value.filter(t=>t!==e),u.value.unshift(e)),t.success(c(`@D50BB:模板已置顶`)),!0):(t.error(`${c(`@D50BB:置顶模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function Q(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(d.value=e.lockedFiles||[],e.lockedFiles):(t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function re(e){try{let n=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已锁定: `)}${e}`),!0):(t.error(`${c(`@D50BB:锁定文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),t.error(`${c(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function ie(e){try{let n=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已解锁: `)}${e}`),!0):(t.error(`${c(`@D50BB:解锁文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),t.error(`${c(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function ae(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function oe(e){try{let n=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已保存`)),!0):(t.error(`${c(`@CMD01:保存命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function se(e){try{let n=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已删除`)),!0):(t.error(`${c(`@CMD01:删除命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ce(e,n){try{let r=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:n})})).json();return r.success?(await H(!0),t.success(c(`@CMD01:命令已更新`)),!0):(t.error(`${c(`@CMD01:更新命令失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function le(e){try{let n=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),!0):(t.error(n.error),!1)}catch(e){return t.error(e.message),!1}}async function ue(e){try{let n=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已保存`)),n.orchestration||null):(t.error(`${c(`@ORCH:保存编排失败: `)}${n.error}`),null)}catch(e){return t.error(`${c(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function de(e){try{let n=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已删除`)),!0):(t.error(`${c(`@ORCH:删除编排失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function fe(e,n){try{let r=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:n})})).json();return r.success?(await H(!0),t.success(c(`@ORCH:编排已更新`)),!0):(t.error(`${c(`@ORCH:更新编排失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function pe(e,n){try{let r=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:n===void 0?g.value:n})})).json();return r.success?(h.value=e,n!==void 0&&(g.value=n),!0):(t.error(`保存启动项失败: ${r.error}`),!1)}catch(e){return t.error(`保存启动项失败: ${e.message}`),!1}}async function me(e){try{let n=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return n.success?(j.value=e,!0):(t.error(`${c(`@D50BB:保存模型失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function $(e){try{let n=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(n.success){if(e.theme&&(k.value=e.theme,L(e.theme)),e.locale){A.value=e.locale,s(e.locale);let t=f();t.currentLocale=e.locale}return!0}else return t.error(`保存通用设置失败: ${n.error}`),!1}catch(e){return t.error(`保存通用设置失败: ${e.message}`),!1}}return{models:j,defaultCommitMessage:r,descriptionTemplates:a,scopeTemplates:o,messageTemplates:l,commandTemplates:u,lockedFiles:d,customCommands:p,orchestrations:m,startupItems:h,startupAutoRun:g,afterQuickPushAction:_,isLoading:v,isLoaded:y,configLoadError:b,configFilePath:x,hasConfigLoadError:B,currentDirectory:S,config:z,autoClosePushModal:C,autoSetDefaultMessage:w,isStandardCommit:T,skipHooks:E,autoQuickPushOnEnter:D,pullBeforePush:O,theme:k,locale:A,ui:N,isUiLoaded:P,loadConfig:H,setCurrentDirectory:F,openSystemConfigFile:V,saveTemplate:Z,saveModels:me,saveGeneralSettings:$,saveUiSettings:q,resetUiLayout:J,applyTheme:L,toggleTheme:R,saveDefaultMessage:Y,deleteTemplate:ee,updateTemplate:te,pinTemplate:ne,loadLockedFiles:Q,lockFile:re,unlockFile:ie,isFileLocked:ae,saveCustomCommand:oe,deleteCustomCommand:se,updateCustomCommand:ce,pinCustomCommand:le,saveOrchestration:ue,deleteOrchestration:de,updateOrchestration:fe,saveStartupItems:pe,saveAfterQuickPushAction:X,saveCommitSettings:U}});export{f as n,p as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.zm-node-menu{z-index:40;color:#1e293b;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:2px;min-width:168px;padding:4px;font-size:13px;display:flex;position:fixed;box-shadow:0 8px 24px #0f172a24}.zm-node-menu-item{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;width:100%;padding:6px 10px;transition:background .1s;display:flex}.zm-node-menu-item:hover:not(:disabled){background:#f1f5f9}.zm-node-menu-item:active:not(:disabled){background:#e2e8f0}.zm-node-menu-item:disabled{color:#94a3b8;cursor:not-allowed}.zm-node-menu-icon{color:#64748b;flex-shrink:0;justify-content:center;align-items:center;width:13px;height:13px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:10px;font-weight:600;display:inline-flex}.zm-node-menu-icon-code{letter-spacing:-1px;font-size:10px}.zm-node-menu-icon-table{font-family:inherit;font-size:12px}.zm-canvas-menu{z-index:40;box-sizing:border-box;color:#1e293b;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:2px;min-width:140px;padding:4px;font-size:13px;display:flex;position:fixed;box-shadow:0 8px 24px #0f172a24}.zm-canvas-menu-item{color:inherit;font:inherit;text-align:left;cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;width:100%;padding:6px 10px;transition:background .1s;display:flex}.zm-canvas-menu-item:hover:not(:disabled){background:#f1f5f9}.zm-canvas-menu-item:active:not(:disabled){background:#e2e8f0}.zm-canvas-menu-item:disabled{color:#94a3b8;cursor:not-allowed}.zm-canvas-menu-item-has-submenu{box-sizing:border-box;position:relative}.zm-canvas-menu-item-has-submenu.is-open,.zm-canvas-menu-item-has-submenu:hover{background:#f1f5f9}.zm-canvas-menu-caret{color:#94a3b8;flex-shrink:0;align-items:center;margin-left:auto;display:inline-flex}.zm-canvas-submenu{z-index:41;box-sizing:border-box;color:#1e293b;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:2px;min-width:160px;padding:4px;font-size:13px;animation:.12s ease-out zm-submenu-in;display:flex;position:fixed;box-shadow:0 8px 24px #0f172a24}@keyframes zm-submenu-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.zm-mindmap{-webkit-user-select:none;user-select:none;width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;position:relative;overflow:hidden}.zm-canvas{cursor:grab;position:absolute;inset:0}.zm-canvas:active{cursor:grabbing}.zm-world{transform-origin:0 0;position:absolute;top:0;left:0}.zm-svg-layer{pointer-events:none;position:absolute;overflow:visible}.zm-marquee{pointer-events:none;z-index:5;background:#3b82f614;border:1px dashed #3b82f6;position:absolute}.zm-svg{pointer-events:none;shape-rendering:geometricprecision;position:absolute;top:0;left:0;overflow:visible}.zm-node{box-sizing:border-box;cursor:default;white-space:nowrap;z-index:1;border:1px solid;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:0 .8em;line-height:1.2;transition:box-shadow .15s;display:flex;position:absolute;box-shadow:0 1px 2px #0000000f}.zm-node:hover{z-index:2;box-shadow:0 4px 12px #0000001a}.zm-node.is-root{font-weight:600}.zm-node.is-selected{outline-offset:2px;z-index:3;outline:2px solid #3b82f6}.zm-text{text-overflow:ellipsis;white-space:nowrap;justify-content:center;align-items:center;gap:4px;max-width:200px;min-height:1.2em;display:flex;overflow:hidden}.zm-text-label{pointer-events:none;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden}.zm-input{color:inherit;font:inherit;text-align:center;background:0 0;border:none;outline:none;width:100%;min-width:40px}.zm-tooltip{color:#f8fafc;pointer-events:none;z-index:1000;white-space:normal;word-break:break-word;background:#0f172af0;border-radius:6px;max-width:240px;padding:6px 10px;font-size:12px;line-height:1.4;animation:.12s ease-out zm-tooltip-in;position:absolute;transform:translate(-50%,-100%);box-shadow:0 4px 14px #0000002e}.zm-tooltip.is-below{transform:translate(-50%)}.zm-tooltip:after{content:"";border:4px solid #0000;border-top-color:#0f172af0;position:absolute;top:100%;left:50%;transform:translate(-50%)}.zm-tooltip.is-below:after{border-top-color:#0000;border-bottom-color:#0f172af0;top:auto;bottom:100%}@keyframes zm-tooltip-in{0%{opacity:0;transform:translate(-50%,calc(4px - 100%))}to{opacity:1;transform:translate(-50%,-100%)}}.zm-tooltip.is-below{animation-name:zm-tooltip-in-below}@keyframes zm-tooltip-in-below{0%{opacity:0;transform:translate(-50%,-4px)}to{opacity:1;transform:translate(-50%)}}.zm-rich{text-align:left;width:max-content;color:inherit;background:#0000000a;border-radius:4px;margin-top:6px;padding:4px 6px;font-size:.78em;line-height:1.35;overflow:visible}.zm-rich-above{margin:0 0 2px}.zm-rich-no-overflow{max-height:none;overflow:visible}.zm-rich-code{white-space:pre-wrap;word-break:break-word;background:#ffffff8c;border:1px solid;border-radius:6px;margin:0;padding:6px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em;box-shadow:0 1px 2px #0f172a14}.zm-rich-list{margin:0;padding-left:1.2em;list-style:outside}.zm-rich-list li{margin:1px 0}.zm-rich-table{border-collapse:separate;border-spacing:0;background:#ffffff8c;border:1px solid;border-radius:6px;width:100%;font-size:.92em;overflow:hidden;box-shadow:0 1px 2px #0f172a14}.zm-rich-table td{opacity:.9;border-top:1px solid;border-right:1px solid;padding:3px 6px}.zm-rich-table tr:last-child td{border-bottom:none}.zm-rich-table td:last-child{border-right:none}.zm-rich-table-sort{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;pointer-events:auto;background:#fff6;border-bottom:1px solid;border-right:1px solid;padding:3px 6px;font-weight:600;position:relative}.zm-rich-table-sort:last-child{border-right:none}.zm-rich-table-sort:hover{background:#ffffffa6}.zm-rich-table-sort.is-sorted{background:#ffffffb3}.zm-rich-sort-mark{color:#94a3b8;font-size:9px;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.zm-rich-table-sort.is-sorted .zm-rich-sort-mark{color:#1d4ed8}.zm-rich-edit{width:100%;min-height:90px;color:inherit;resize:vertical;white-space:pre;box-sizing:border-box;background:#fff9;border:1px solid;border-radius:3px;outline:none;margin:0;padding:4px 6px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em;line-height:1.4}.zm-rich-edit:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-rich-paragraph{white-space:pre-wrap;word-break:break-word}.zm-btn{color:#fff;cursor:pointer;opacity:0;z-index:4;background:#3b82f6;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;transition:opacity .15s,transform .15s;display:flex;position:absolute}.zm-node:hover .zm-btn,.zm-node.is-selected .zm-btn{opacity:1}.zm-btn:hover{transform:scale(1.15)}.zm-collapse{background:#fff;border:1.5px solid;width:14px;height:14px;top:50%;right:-8px;transform:translateY(-50%);box-shadow:0 1px 3px #0f172a2e}.zm-collapse.is-on-left{left:-8px;right:auto}.zm-collapse:hover{background:#fff;transform:translateY(-50%)scale(1.15)}.zm-collapse-badge{color:#fff;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;z-index:2;border-radius:5px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:600;line-height:18px;transition:filter .1s;position:absolute;top:50%;left:calc(100% + 8px);transform:translateY(-50%);box-shadow:0 1px 2px #00000026}.zm-collapse-badge.is-on-left{left:auto;right:calc(100% + 8px)}.zm-collapse-badge:hover{filter:brightness(.9)}.zm-node.has-image{white-space:normal;flex-direction:column;gap:6px;padding:8px}.zm-node-img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;border-radius:4px;display:block}.zm-node-link,.zm-node-note-btn{color:currentColor;cursor:pointer;opacity:.75;pointer-events:auto;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;padding:0;text-decoration:none;transition:opacity .1s,background .1s;display:inline-flex}.zm-node-link:hover,.zm-node-note-btn:hover{opacity:1;background:#0f172a14}.zm-node-link svg,.zm-node-note-btn svg{display:block}.zm-img-resize-handle{cursor:nwse-resize;z-index:4;background:#fff;border:1.5px solid #3b82f6;border-radius:2px;width:10px;height:10px;position:absolute;bottom:-5px;right:-5px;box-shadow:0 1px 3px #0f172a33}.zm-node.is-resizing{cursor:nwse-resize!important}.zm-img-remove-btn{cursor:pointer;color:#64748b;z-index:4;background:#fff;border:1px solid #cbd5e1;border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;padding:0;display:flex;position:absolute;bottom:14px;right:-5px;box-shadow:0 1px 2px #0f172a1f}.zm-img-remove-btn:hover{color:#b91c1c;background:#fee2e2;border-color:#fca5a5}.zm-order-badge{color:#475569;font-variant-numeric:tabular-nums;pointer-events:none;-webkit-user-select:none;user-select:none;vertical-align:middle;background:#e2e8f0;border-radius:3px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:600;line-height:16px;display:inline-block}.zm-canvas-fab{color:#475569;cursor:pointer;z-index:11;opacity:0;pointer-events:none;background:#fff;border:1px solid #e2e8f0;border-radius:999px;justify-content:center;align-items:center;width:32px;height:32px;transition:opacity .18s,transform .18s,background .1s,color .1s;display:flex;position:absolute;transform:translateY(4px);box-shadow:0 2px 8px #0f172a14}.zm-canvas-fab.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.zm-canvas-fab:hover{color:#1e293b;background:#f1f5f9;box-shadow:0 4px 12px #0f172a1f}.zm-canvas-fab:active{transform:scale(.94)}.zm-canvas-fab-preview{top:16px;right:16px}.zm-canvas-fab-outline{top:16px;left:16px}.zm-toolbar{z-index:10;background:#fff;border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:4px;padding:6px 10px;transition:opacity .18s,transform .18s;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0000000f}.zm-toolbar.is-preview-only{opacity:0;pointer-events:none;transform:translate(-50%)translateY(8px)}.zm-toolbar.is-preview-only.is-hovered{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)}.zm-tb-btn{cursor:pointer;color:#475569;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.zm-tb-btn:hover{color:#1e293b;background:#f1f5f9}.zm-tb-btn img{filter:invert(20%)sepia(15%)saturate(500%)hue-rotate(180deg);transition:filter .1s}.zm-tb-btn:hover img{filter:invert(15%)sepia(30%)saturate(800%)hue-rotate(180deg)}.zm-tb-btn.active{background:var(--zm-tb-active,#fff7ed);color:var(--zm-tb-active-fg,#c2410c)}.zm-tb-divider{background:#e2e8f0;width:1px;height:18px;margin:0 4px}.zm-tb-tip{color:#64748b;text-align:center;min-width:38px;font-size:12px}.zm-outline-root{flex-direction:column;height:100%;display:flex}.zm-outline-actions{flex-shrink:0;justify-content:flex-end;padding:8px 10px 4px;display:flex}.zm-outline-action-btn{color:#64748b;cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px;align-items:center;gap:5px;padding:3px 8px;font-family:inherit;font-size:11px;transition:all .1s;display:inline-flex}.zm-outline-action-btn:hover{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.zm-outline-action-btn.is-success{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.zm-outline{flex:1;min-height:0;margin:0;padding:4px 0 8px;font-size:13px;list-style:none;overflow:auto}.zm-outline-row{cursor:grab;color:#334155;-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;align-items:center;gap:6px;margin:0 6px;padding-top:4px;padding-bottom:4px;padding-right:6px;transition:background .1s;display:flex;position:relative;overflow:hidden}.zm-outline-row:active{cursor:grabbing}.zm-outline-row:hover{background:#f1f5f9}.zm-outline-row.is-root{color:#0f172a;font-weight:600}.zm-outline-row.is-selected{color:#1d4ed8;background:#eff6ff}.zm-outline-row.is-selected .zm-outline-toggle,.zm-outline-row.is-selected .zm-outline-dot,.zm-outline-row.is-selected .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-action{color:#1d4ed8}.zm-outline-row.is-drag-over-before:before,.zm-outline-row.is-drag-over-after:after{content:"";pointer-events:none;background:#3b82f6;border-radius:1px;height:2px;position:absolute;left:6px;right:6px}.zm-outline-row.is-drag-over-before:before{top:0}.zm-outline-row.is-drag-over-after:after{bottom:0}.zm-outline-row.is-drag-over-child{outline-offset:-2px;outline:2px solid #3b82f6;background:#dbeafe!important}.zm-outline-toggle{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;padding:0;display:flex}.zm-outline-toggle:hover{color:#475569;background:#e2e8f0}.zm-outline-dot{background:#cbd5e1;border-radius:50%;flex-shrink:0;width:4px;height:4px;margin:0 6px}.zm-outline-index{color:#94a3b8;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;flex-shrink:0;min-width:22px;font-size:11px}.zm-outline-text{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.zm-outline-input{font:inherit;color:inherit;background:#fff;border:1px solid #3b82f6;border-radius:3px;outline:none;flex:1;margin:-2px 0;padding:1px 4px;font-size:13px}.zm-outline-row-action{color:#94a3b8;cursor:pointer;opacity:0;background:0 0;border:1px solid #0000;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:opacity .1s,background .1s,color .1s,border-color .1s;display:inline-flex}.zm-outline-row:hover .zm-outline-row-action,.zm-outline-row.is-selected .zm-outline-row-action{opacity:1}.zm-outline-row-action:hover{color:#4338ca;background:#e0e7ff;border-color:#c7d2fe}.zm-outline-row-action img{filter:invert(38%)sepia(94%)saturate(2417%)hue-rotate(229deg)brightness(91%)contrast(91%)}.zm-outline-row-copy{color:#94a3b8;cursor:pointer;opacity:0;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:opacity .1s,background .1s,color .1s;display:flex}.zm-outline-row:hover .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-copy{opacity:1}.zm-outline-row-copy:hover{color:#475569;background:#e2e8f0}.zm-outline-row-copy.is-success{opacity:1;color:#047857;background:#ecfdf5}.zm-drawer{background:#fff;border-right:1px solid #e2e8f0;flex-direction:column;flex-shrink:0;height:100%;display:flex;overflow:hidden}.zm-drawer--canvas{z-index:40;height:100%;position:absolute;top:0;bottom:0;box-shadow:0 8px 24px #0f172a1f}.zm-drawer--left.zm-drawer--canvas{border-right:1px solid #e2e8f0;left:0}.zm-drawer--right.zm-drawer--canvas{border-left:1px solid #e2e8f0;border-right:none;right:0}.zm-drawer-canvas-backdrop{z-index:39;cursor:pointer;background:#0f172a47;position:absolute;inset:0}.zm-drawer-enter-active,.zm-drawer-leave-active{transition:width .22s,opacity .15s}.zm-drawer-enter-from,.zm-drawer-leave-to{opacity:0;border-right:none;width:0!important}.zm-slide-left-enter-active,.zm-slide-left-leave-active,.zm-slide-right-enter-active,.zm-slide-right-leave-active{transition:transform .22s,opacity .18s}.zm-slide-left-enter-from,.zm-slide-left-leave-to{opacity:0;transform:translate(-100%)}.zm-slide-right-enter-from,.zm-slide-right-leave-to{opacity:0;transform:translate(100%)}.zm-fade-enter-active,.zm-fade-leave-active{transition:opacity .18s}.zm-fade-enter-from,.zm-fade-leave-to{opacity:0}.zm-drawer--right{border-left:1px solid #e2e8f0;border-right:none}.zm-drawer-header{border-bottom:1px solid #f1f5f9;flex-shrink:0;align-items:center;gap:8px;padding:12px 16px;display:flex}.zm-drawer-title{color:#1e293b;letter-spacing:.02em;flex:1;margin:0;font-size:13px;font-weight:600}.zm-drawer-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.zm-drawer-close:hover{color:#1e293b;background:#f1f5f9}.zm-drawer-body{flex:1;min-height:0;overflow:auto}.zm-jtv-root{color:#334155;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.6}.zm-jtv-header{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:3px;align-items:center;gap:4px;padding-right:6px;display:flex}.zm-jtv-header:hover{background:#f1f5f9}.zm-jtv-toggle{text-align:center;color:#94a3b8;flex-shrink:0;width:12px;font-size:9px;display:inline-block}.zm-jtv-toggle.is-leaf{color:#cbd5e1}.zm-jtv-key{color:#1d4ed8;font-weight:500}.zm-jtv-colon{color:#94a3b8;margin-right:4px}.zm-jtv-size{color:#64748b;font-style:italic}.zm-jtv-bracket,.zm-jtv-brace{color:#94a3b8;margin-left:4px;font-weight:500}.zm-jtv-footer{color:#94a3b8;font-weight:500}.zm-jtv-leaf{border-radius:3px;flex-wrap:wrap;align-items:center;gap:4px;padding-right:6px;display:flex}.zm-jtv-leaf:hover{background:#f8fafc}.zm-jtv-value{word-break:break-all}.zm-jtv-string{color:#047857}.zm-jtv-number{color:#b45309}.zm-jtv-boolean{color:#7c3aed;font-weight:500}.zm-jtv-null,.zm-jtv-undefined{color:#94a3b8;font-style:italic}.zm-jtv-thumb-wrap{flex-shrink:0;align-items:center;gap:4px;margin-left:6px;display:inline-flex}.zm-jtv-thumb{object-fit:contain;background:#fff;border:1px solid #e2e8f0;border-radius:3px;max-width:48px;max-height:32px}.zm-jtv-thumb-link{color:#3b82f6;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:10px;text-decoration:none}.zm-jtv-thumb-link:hover{text-decoration:underline}.zm-jtv-leaf mark,.zm-jtv-key mark{color:#422006;background:#fef08a;border-radius:2px;padding:0 1px}.zm-data-panel{background:#fff;flex-direction:column;height:100%;display:flex}.zm-data-header{background:#f8fafc;border-bottom:1px solid #f1f5f9;flex-shrink:0;align-items:center;padding:8px 12px 6px;display:flex}.zm-data-title{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.zm-data-title-text{color:#1e293b;letter-spacing:.02em;font-size:12px;font-weight:600}.zm-data-title-meta{color:#94a3b8;font-variant-numeric:tabular-nums;font-size:11px}.zm-data-toolbar{background:#fff;border-bottom:1px solid #f1f5f9;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px;padding:6px 10px;display:flex}.zm-data-btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-family:inherit;font-size:12px;transition:all .1s;display:inline-flex}.zm-data-btn:hover{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.zm-data-btn.is-icon{padding:4px 8px}.zm-data-btn.is-active{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.zm-data-btn.is-success{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.zm-data-btn.is-primary{color:#fff;background:#3b82f6;border-color:#3b82f6}.zm-data-btn.is-primary:hover{color:#fff;background:#2563eb;border-color:#2563eb}.zm-data-btn:disabled{opacity:.4;cursor:not-allowed}.zm-data-btn-label{font-size:11px}.zm-data-toolbar-spacer{flex:1;min-width:4px}.zm-data-search{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;flex:0 160px;align-items:center;gap:4px;min-width:0;padding:3px 6px;transition:all .1s;display:flex}.zm-data-search:focus-within,.zm-data-search.is-active{background:#fff;border-color:#3b82f6}.zm-data-search svg{color:#94a3b8;flex-shrink:0}.zm-data-search input{min-width:0;font:inherit;color:#1e293b;background:0 0;border:none;outline:none;flex:1;padding:0;font-size:11px}.zm-data-search input::placeholder{color:#94a3b8}.zm-data-search-clear{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:2px;padding:0 2px;font-size:14px;line-height:1}.zm-data-search-clear:hover{color:#1e293b;background:#e2e8f0}.zm-data-paste{background:#f8fafc;border-bottom:1px solid #f1f5f9;flex-shrink:0;padding:8px 10px 10px}.zm-data-tabs{gap:4px;margin-bottom:6px;display:flex}.zm-data-tab{font:inherit;color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-size:11px;transition:all .1s}.zm-data-tab:hover{background:#f1f5f9}.zm-data-tab.is-active{color:#fff;background:#1e293b;border-color:#1e293b}.zm-data-paste textarea{resize:vertical;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:4px;width:100%;min-height:60px;max-height:160px;padding:6px 8px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.4}.zm-data-paste textarea:focus{border-color:#3b82f6;outline:none}.zm-data-paste-actions{gap:4px;margin-top:6px;display:flex}.zm-data-error{color:#dc2626;margin-top:6px;font-size:11px}.zm-data-tree{background:#fff;flex:1;padding:8px 4px 8px 6px;overflow:auto}.zm-data-footer{color:#94a3b8;background:#f8fafc;border-top:1px solid #f1f5f9;flex-shrink:0;padding:6px 12px;font-size:10px;line-height:1.5}.zm-data-footer-hint code{color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:3px;margin:0 1px;padding:0 3px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:10px}.zm-md-panel{background:#f8fafc;flex-direction:column;height:100%;display:flex}.zm-md-toolbar{background:#f8fafc;border-bottom:1px solid #f1f5f9;flex-shrink:0;align-items:center;gap:6px;padding:8px 10px;display:flex}.zm-md-spacer{flex:1}.zm-md-btn{color:#475569;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-family:inherit;font-size:12px;transition:all .1s;display:inline-flex}.zm-md-btn:hover:not(:disabled){color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.zm-md-btn:disabled{opacity:.4;cursor:not-allowed}.zm-md-btn.is-primary{color:#fff;background:#3b82f6;border-color:#3b82f6}.zm-md-btn.is-primary:hover:not(:disabled){color:#fff;background:#2563eb;border-color:#2563eb}.zm-md-error{color:#dc2626;background:#fef2f2;border-bottom:1px solid #fee2e2;flex-shrink:0;padding:6px 10px;font-size:11px}.zm-md-split,.zm-md-edit,.zm-md-preview{flex-direction:column;flex:1;min-height:0;display:flex}.zm-md-pane-header{color:#475569;letter-spacing:.02em;background:#f1f5f9;border-bottom:1px solid #e2e8f0;flex-shrink:0;align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.zm-md-hint{color:#94a3b8;margin-left:auto;font-size:10px;font-weight:400}.zm-md-textarea{color:#1e293b;resize:none;box-sizing:border-box;background:#fff;border:none;border-bottom:1px solid #e2e8f0;outline:none;flex:1;width:100%;padding:10px 12px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}.zm-md-textarea:focus{background:#fafbfc}.zm-md-preview-body{background:#fff;border-bottom:1px solid #e2e8f0;flex:1;min-height:0;position:relative}.zm-md-footer{background:#f8fafc;border-top:1px solid #e2e8f0;flex-shrink:0;justify-content:flex-end;padding:8px 10px;display:flex}.zm-settings-panel[data-v-17ef65d1]{flex-direction:column;gap:14px;padding:12px 12px 16px;display:flex}.zm-settings-section[data-v-17ef65d1]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px}.zm-settings-section-title[data-v-17ef65d1]{color:#475569;text-transform:uppercase;letter-spacing:.04em;align-items:baseline;gap:6px;margin:0 0 10px;font-size:12px;font-weight:600;display:flex}.zm-settings-section-sub[data-v-17ef65d1]{color:#64748b;text-transform:none;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:11px;font-weight:500;overflow:hidden}.zm-settings-row[data-v-17ef65d1]{color:#1e293b;justify-content:space-between;align-items:center;gap:12px;margin:6px 0;font-size:13px;display:flex}.zm-settings-label[data-v-17ef65d1]{flex:1}.zm-settings-value-tag[data-v-17ef65d1]{color:#64748b;white-space:nowrap;background:#fff;border:1px solid #e2e8f0;border-radius:4px;padding:2px 6px;font-size:11px}.zm-settings-number[data-v-17ef65d1]{color:#0f172a;text-align:right;-moz-appearance:textfield;background:#fff;border:1px solid #e2e8f0;border-radius:4px;width:56px;padding:2px 6px;font-size:11px}.zm-settings-number[data-v-17ef65d1]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-17ef65d1]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-17ef65d1]:focus{border-color:#818cf8;outline:none}.zm-settings-hint[data-v-17ef65d1]{color:#94a3b8;margin:4px 0 0;font-size:11px;line-height:1.5}.zm-slider[data-v-17ef65d1]{align-items:center;height:20px;margin:4px 0 8px;display:flex;position:relative}.zm-slider-track[data-v-17ef65d1]{pointer-events:none;background:#e2e8f0;border-radius:999px;position:absolute;inset:8px 0}.zm-slider input[type=range][data-v-17ef65d1]{appearance:none;cursor:pointer;z-index:1;background:0 0;width:100%;height:20px;margin:0;position:relative}.zm-slider input[type=range][data-v-17ef65d1]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#fff;border:2px solid #3b82f6;border-radius:50%;width:16px;height:16px;box-shadow:0 1px 3px #00000026}.zm-slider input[type=range][data-v-17ef65d1]::-moz-range-thumb{cursor:pointer;background:#fff;border:2px solid #3b82f6;border-radius:50%;width:16px;height:16px;box-shadow:0 1px 3px #00000026}.zm-toggle[data-v-17ef65d1]{cursor:pointer;background:#cbd5e1;border:none;border-radius:999px;flex-shrink:0;width:36px;height:20px;padding:0;transition:background .15s;position:relative}.zm-toggle.is-on[data-v-17ef65d1]{background:#3b82f6}.zm-toggle-knob[data-v-17ef65d1]{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.zm-toggle.is-on .zm-toggle-knob[data-v-17ef65d1]{transform:translate(16px)}.zm-swatch-row[data-v-17ef65d1]{flex-wrap:wrap;gap:4px;margin:4px 0 8px;display:flex}.zm-swatch[data-v-17ef65d1]{cursor:pointer;border:1px solid #e2e8f0;border-radius:4px;flex-shrink:0;width:22px;height:22px;padding:0}.zm-swatch.is-reset[data-v-17ef65d1]{color:#94a3b8;background:#fff;font-size:12px;line-height:1}.zm-line-style-group[data-v-17ef65d1]{gap:6px;display:flex}.zm-line-style-btn[data-v-17ef65d1]{cursor:pointer;color:#94a3b8;background:#fff;border:1px solid #e2e8f0;border-radius:6px;flex-direction:column;align-items:center;gap:2px;min-width:56px;padding:4px 8px;font-family:inherit;transition:all .12s;display:inline-flex}.zm-line-style-btn[data-v-17ef65d1]:hover{color:#475569;border-color:#cbd5e1}.zm-line-style-btn.is-on[data-v-17ef65d1]{color:#3b82f6;background:#eff6ff;border-color:#3b82f6}.zm-line-style-label[data-v-17ef65d1]{font-size:11px;font-weight:500}.zm-settings-preview[data-v-17ef65d1]{background:#fff;border:1px solid #e2e8f0;border-radius:6px;margin-top:8px;padding:6px 6px 4px}.zm-settings-preview svg[data-v-17ef65d1]{display:block}.zm-settings-preview-labels[data-v-17ef65d1]{color:#94a3b8;justify-content:space-between;margin-top:2px;padding:0 2px;font-size:10px;display:flex}.zm-data-paste-actions[data-v-17ef65d1]{gap:6px;margin-top:6px;display:flex}.zm-data-btn[data-v-17ef65d1]{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-family:inherit;font-size:12px;transition:all .1s;display:inline-flex}.zm-data-btn[data-v-17ef65d1]:hover{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.zm-data-btn.is-primary[data-v-17ef65d1]{color:#fff;background:#3b82f6;border-color:#3b82f6}.zm-data-btn.is-primary[data-v-17ef65d1]:hover{color:#fff;background:#2563eb;border-color:#2563eb}.zm-settings-reset[data-v-17ef65d1]{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;width:100%;padding:6px 10px;font-family:inherit;font-size:12px;transition:all .1s}.zm-settings-reset[data-v-17ef65d1]:hover{color:#1e293b;background:#f1f5f9}.zm-palette-picker[data-v-17ef65d1]{margin:6px 0 8px}.zm-palette-picker-title[data-v-17ef65d1]{color:#475569;letter-spacing:.02em;margin:6px 0;font-size:11px;font-weight:600}.zm-palette-grid[data-v-17ef65d1]{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;display:grid}.zm-palette-card[data-v-17ef65d1]{cursor:pointer;text-align:left;background:#fff;border:1px solid #e2e8f0;border-radius:6px;flex-direction:column;align-items:stretch;gap:6px;min-width:0;padding:6px 6px 8px;font-family:inherit;transition:all .12s;display:flex}.zm-palette-card[data-v-17ef65d1]:hover{background:#f8fafc;border-color:#cbd5e1}.zm-palette-card.is-active[data-v-17ef65d1]{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f62e}.zm-palette-card-name[data-v-17ef65d1]{color:#1e293b;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:500;overflow:hidden}.zm-palette-card.is-active .zm-palette-card-name[data-v-17ef65d1]{color:#1d4ed8}.zm-palette-card-swatches[data-v-17ef65d1]{border-radius:3px;gap:1px;height:8px;display:flex;overflow:hidden}.zm-palette-card-swatch[data-v-17ef65d1]{flex:1;min-width:0;height:100%}.zm-palette-customs[data-v-17ef65d1]{flex-direction:column;gap:8px;margin-top:10px;display:flex}.zm-palette-custom[data-v-17ef65d1]{background:#fff;border:1px solid #e2e8f0;border-radius:6px;flex-direction:column;gap:6px;padding:8px;display:flex}.zm-palette-custom .zm-palette-card[data-v-17ef65d1]{background:#f8fafc;border-style:dashed}.zm-palette-textarea[data-v-17ef65d1]{color:#0f172a;resize:vertical;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px;outline:none;min-height:32px;padding:4px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;transition:border-color .1s}.zm-palette-textarea[data-v-17ef65d1]:focus{background:#fff;border-color:#3b82f6}.zm-palette-custom-actions[data-v-17ef65d1]{gap:6px;display:flex}.zm-palette-add[data-v-17ef65d1]{color:#475569;cursor:pointer;background:#fff;border:1px dashed #cbd5e1;border-radius:6px;width:100%;margin-top:8px;padding:6px 8px;font-family:inherit;font-size:12px;transition:all .1s}.zm-palette-add[data-v-17ef65d1]:hover{color:#1e293b;background:#f1f5f9;border-color:#94a3b8}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.zm-note-panel{background:#f8fafc;flex-direction:column;gap:10px;height:100%;padding:12px 12px 16px;display:flex}.zm-note-empty{color:#64748b;padding:20px 12px;font-size:13px;line-height:1.6}.zm-note-empty p{margin:0 0 6px}.zm-note-hint{color:#94a3b8;font-size:12px}.zm-note-header{background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;flex-shrink:0;gap:4px;padding:10px 12px;display:flex}.zm-note-title-row{align-items:baseline;gap:8px;min-width:0;display:flex}.zm-note-label{text-transform:uppercase;letter-spacing:.04em;color:#94a3b8;flex-shrink:0;font-size:10px;font-weight:600}.zm-note-name{color:#1e293b;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.zm-note-meta{color:#94a3b8;font-size:11px}.zm-note-scroll{flex-direction:column;flex:1;gap:10px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.zm-note-section{background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.zm-note-section-head{align-items:center;gap:8px;min-width:0;display:flex}.zm-note-section-title{text-transform:uppercase;letter-spacing:.04em;color:#64748b;flex:1;min-width:0;font-size:10px;font-weight:600}.zm-note-section-hint{color:#94a3b8;font-size:10px}.zm-note-section-tag{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:1px 6px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:10px;line-height:1.4}.zm-note-section-actions{justify-content:flex-end;display:flex}.zm-note-textarea{width:100%;min-height:120px;font:inherit;color:#1e293b;resize:none;box-sizing:border-box;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;outline:none;padding:10px 12px;font-family:inherit;font-size:13px;line-height:20px;overflow:hidden}.zm-note-textarea:focus{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.zm-note-textarea:disabled{color:#94a3b8;cursor:not-allowed;background:#f8fafc}.zm-note-textarea::placeholder{color:#94a3b8;white-space:pre-line}.zm-note-split{flex-direction:column;gap:6px;display:flex}.zm-note-preview-toggle{font:inherit;color:#1d4ed8;cursor:pointer;background:0 0;border:1px solid #bfdbfe;border-radius:999px;flex-shrink:0;padding:1px 8px;font-size:10px;transition:all .1s}.zm-note-preview-toggle:hover{background:#eff6ff;border-color:#93c5fd}.zm-note-preview{color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;max-height:240px;padding:8px 12px;font-size:13px;line-height:1.6;overflow:auto}.zm-note-preview-hint{color:#94a3b8;font-size:12px;font-style:italic}.zm-note-preview-body h1,.zm-note-preview-body h2,.zm-note-preview-body h3{color:#0f172a;margin:8px 0 4px;font-weight:600}.zm-note-preview-body h1{font-size:16px}.zm-note-preview-body h2{font-size:14px}.zm-note-preview-body h3{font-size:13px}.zm-note-preview-body h4,.zm-note-preview-body h5,.zm-note-preview-body h6{color:#334155;margin:6px 0 4px;font-size:12px;font-weight:600}.zm-note-preview-body p{margin:0 0 6px}.zm-note-preview-body p:last-child{margin-bottom:0}.zm-note-preview-body ul,.zm-note-preview-body ol{margin:0 0 6px;padding-left:20px}.zm-note-preview-body li{margin:0 0 2px}.zm-note-preview-body blockquote{color:#475569;background:#f1f5f9;border-left:3px solid #cbd5e1;margin:0 0 6px;padding:4px 10px}.zm-note-preview-body code{color:#be185d;background:#f1f5f9;border-radius:3px;padding:1px 4px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px}.zm-note-preview-body pre{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;margin:0 0 6px;padding:8px 10px;overflow:auto}.zm-note-preview-body pre code{color:inherit;background:0 0;padding:0;font-size:12px;line-height:1.55}.zm-note-preview-body a{color:#1d4ed8;-webkit-text-decoration:underline #bfdbfe;text-decoration:underline #bfdbfe}.zm-note-preview-body a:hover{text-decoration-color:#1d4ed8}.zm-note-preview-body table{border-collapse:collapse;margin:0 0 6px;font-size:12px}.zm-note-preview-body th,.zm-note-preview-body td{text-align:left;border:1px solid #e2e8f0;padding:4px 8px}.zm-note-preview-body th{background:#f1f5f9;font-weight:600}.zm-note-preview-body hr{border:none;border-top:1px solid #e2e8f0;margin:8px 0}.zm-note-preview-body img{border-radius:4px;max-width:100%;max-height:200px;display:block}.zm-note-input{width:100%;font:inherit;color:#1e293b;box-sizing:border-box;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;outline:none;padding:7px 10px;font-family:inherit;font-size:12px;line-height:1.5}.zm-note-input:focus{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.zm-note-input:disabled{color:#94a3b8;cursor:not-allowed;background:#f8fafc}.zm-note-input-code{resize:none;white-space:pre;min-height:80px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:11px;line-height:20px;overflow:hidden}.zm-note-add-row{flex-wrap:wrap;gap:6px;padding:2px 2px 0;display:flex}.zm-note-add-chip{font:inherit;color:#64748b;cursor:pointer;background:#fff;border:1px dashed #cbd5e1;border-radius:999px;padding:3px 10px;font-size:11px;transition:all .1s}.zm-note-add-chip:hover{color:#1d4ed8;background:#eff6ff;border-color:#93c5fd}.zm-note-link-chip{color:#1d4ed8;word-break:break-all;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;max-width:100%;padding:6px 10px;font-size:12px;text-decoration:none;transition:background .1s;display:inline-block;overflow:hidden}.zm-note-link-chip:hover{background:#dbeafe}.zm-note-image{object-fit:contain;background:#f1f5f9;border-radius:6px;max-width:100%;max-height:240px;margin:0 auto;display:block}.zm-note-code{color:#24292e;white-space:pre-wrap;word-break:break-word;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;max-height:320px;margin:0;padding:10px 12px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px;line-height:1.55;overflow:auto;box-shadow:0 1px 3px #0f172a14}.zm-note-code code{font:inherit;color:inherit;background:0 0;padding:0}.zm-note-table{border-collapse:separate;border-spacing:0;color:#1e293b;table-layout:auto;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;width:100%;font-size:12px;overflow:hidden;box-shadow:0 1px 3px #92400e14}.zm-note-table td{text-align:left;vertical-align:top;word-break:break-word;background:#fffbeb;border-top:1px solid #fde68a;border-right:1px solid #fde68a;padding:6px 10px}.zm-note-table tr:last-child td{border-bottom:none}.zm-note-table td:last-child{border-right:none}.zm-note-table-sort{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fef3c7;border-bottom:1px solid #fcd34d;border-right:1px solid #fde68a;padding:6px 10px;font-weight:600;position:relative}.zm-note-table-sort:last-child{border-right:none}.zm-note-table-sort:hover{background:#fde68a}.zm-note-table-sort.is-sorted{color:#92400e;background:#fde68a}.zm-note-table-sort-mark{color:#94a3b8;font-size:10px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.zm-note-table-sort.is-sorted .zm-note-table-sort-mark{color:#1d4ed8}.zm-note-action-btn{color:#fff;cursor:pointer;background:#3b82f6;border:1px solid #3b82f6;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:12px;transition:all .1s}.zm-note-action-btn.is-danger{color:#b91c1c;background:#fff;border-color:#fca5a5}.zm-note-action-btn.is-danger:hover{background:#fee2e2;border-color:#f87171}.zm-app{color:#1e293b;background:#f8fafc;width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;display:flex;overflow:hidden}.zm-app-main{flex-direction:column;flex:1;min-width:0;display:flex}.zm-app-toolbar{background:#fff;border-bottom:1px solid #e2e8f0;flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;display:flex}.zm-app-icon-btn{cursor:pointer;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.zm-app-icon-btn:hover{color:#1e293b;background:#f1f5f9}.zm-app-spacer{flex:1}.zm-app-tip{color:#64748b;font-size:12px}.zm-app-icon-btn.is-on{color:#4338ca;background:#e0e7ff}.zm-app-preview-exit{z-index:10;color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:background .1s,color .1s,transform .1s;display:inline-flex;position:absolute;top:12px;right:12px;box-shadow:0 2px 8px #0f172a14}.zm-app-preview-exit:hover{color:#0f172a;background:#f1f5f9;transform:scale(1.05)}.zm-app-canvas{flex:1;min-height:0;position:relative}.zm-settings-backdrop{z-index:49;pointer-events:none;background:#0f172a26;position:absolute;inset:0}.zm-settings-popover{z-index:50;flex-direction:column;width:320px;max-height:calc(100% - 64px);display:flex;position:absolute;top:50px;right:16px}.zm-settings-popover>*{pointer-events:auto}.zm-settings-popover .zm-settings-popover-header,.zm-settings-popover .zm-settings-panel{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:auto;box-shadow:0 8px 28px #0f172a1f}.zm-settings-popover .zm-settings-popover-header{border-bottom:1px solid #f1f5f9;flex-shrink:0;align-items:center;padding:8px 10px 8px 14px;display:flex}.zm-settings-popover-title{color:#1e293b;letter-spacing:.02em;flex:1;font-size:13px;font-weight:600}.zm-settings-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.zm-settings-close:hover{color:#1e293b;background:#f1f5f9}
|