zen-gitsync 2.15.25 → 2.15.26
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/package.json +1 -1
- package/src/ui/public/assets/{AppVersionBadge-BscfRnjr.js → AppVersionBadge-BeH1vNS1.js} +1 -1
- package/src/ui/public/assets/{EditorView-Dn58NpHO.js → EditorView-D5Mq9oY1.js} +0 -0
- package/src/ui/public/assets/{MindmapView-CStpm7ct.js → MindmapView-lv2j6Ow3.js} +1 -1
- package/src/ui/public/assets/{flow-mindmap-BQHfrz-d.css → flow-mindmap-DCVd8Ppe.css} +1 -1
- package/src/ui/public/assets/{flow-mindmap-CORSSj0m.js → flow-mindmap-NNVsSd_b.js} +33 -33
- package/src/ui/public/assets/{index-C_fPrr0a.js → index-MSgsqlHo.js} +2 -2
- package/src/ui/public/index.html +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zen-gitsync",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.26",
|
|
4
4
|
"description": "Auto commit, scheduled sync, and visual GUI for Git. Run `g` in any repo for one-key commit & push, AI commit messages, scheduled background sync, and a drag-and-drop workflow builder.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import"./rolldown-runtime-DAXXjFlN.js";import{B as e,Cn as t,D as n,Et as r,Fn as i,G as a,Jn as o,Ln as s,Mn as c,Sn as l,Tn as u,Xn as d,Y as f,_n as p,_r as m,a as h,gn as g,hn as _,i as v,mn as y,mr as b,nt as x,pr as S,rt as C,sr as w,vn as T,zn as E}from"./element-plus-BuYhyYxZ.js";import{n as D,t as O}from"./_plugin-vue_export-helper-DEeiACve.js";async function k(e,t){let n=e.body.getReader(),r=new TextDecoder(`utf-8`),i=``;for(;;){let{done:e,value:a}=await n.read();if(e)break;i+=r.decode(a,{stream:!0});let o=i.split(`
|
|
2
|
-
`);i=o.pop()??``;for(let e of o)e.trim()&&t(e)}i.trim()&&t(i)}async function A(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function j(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}await k(t,t=>{try{e(JSON.parse(t))}catch{}})}async function M(){let e=await fetch(`/api/app-restart`,{method:`POST`});if(!e.ok){let t=`HTTP ${e.status}`;try{let n=await e.json();n?.error&&(t=n.error)}catch{}throw Error(t)}if(!e.body)throw Error(`响应无 body`);return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,e())};k(e,e=>{try{let r=JSON.parse(e);r.type===`ready`&&typeof r.port==`number`&&r.port>0?i(()=>t(r.port)):r.type===`timeout`?i(()=>n(Error(`restart.timeout`))):r.type===`error`&&i(()=>n(Error(r.message||`restart.failed`)))}catch{}}).then(()=>{i(()=>n(Error(`restart.stream-closed`)))}).catch(()=>{})})}var N={key:3},P={key:4},F={key:5},I={key:0,class:`upgrade-hint`},L={key:0,class:`upgrade-countdown`},R=O(u({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(i,{emit:a}){let s=i,u=a,h=w(null);o(()=>s.logs,async()=>{await c(),h.value&&(h.value.scrollTop=h.value.scrollHeight)});function v(){s.status!==`running`&&(s.status===`success`&&s.countdown>0&&u(`cancel`),u(`update:modelValue`,!1))}function y(){u(`retry`)}function O(){u(`restart`)}function k(){u(`cancel`),u(`update:modelValue`,!1)}return(a,o)=>{let s=f,c=e,w=n;return E(),g(w,{"model-value":i.modelValue,"onUpdate:modelValue":o[0]||=e=>u(`update:modelValue`,e),title:S(D)(`@F13B4:升级`),width:`680px`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":i.status!==`running`,"append-to-body":``,onClose:v},{footer:d(()=>[i.status===`failed`?(E(),g(c,{key:0,type:`primary`,onClick:y},{default:d(()=>[l(m(S(D)(`@F13B4:重试`)),1)]),_:1})):p(``,!0),i.status===`success`?(E(),g(c,{key:1,type:`primary`,onClick:O},{default:d(()=>[l(m(S(D)(`@F13B4:立即重启并刷新`)),1)]),_:1})):p(``,!0),i.status===`success`?(E(),g(c,{key:2,onClick:k},{default:d(()=>[l(m(S(D)(`@F13B4:稍后手动重启`)),1)]),_:1})):p(``,!0),i.status===`running`?(E(),g(c,{key:3,disabled:``},{default:d(()=>[l(m(S(D)(`@F13B4:升级中`))+`... `,1)]),_:1})):p(``,!0)]),default:d(()=>[_(`div`,{class:b([`upgrade-status`,`is-${i.status}`])},[i.status===`running`?(E(),g(s,{key:0,class:`is-loading`},{default:d(()=>[t(S(r))]),_:1})):i.status===`success`?(E(),g(s,{key:1,color:`#67c23a`},{default:d(()=>[t(S(x))]),_:1})):(E(),g(s,{key:2,color:`#f56c6c`},{default:d(()=>[t(S(C))]),_:1})),i.status===`running`?(E(),T(`span`,N,m(S(D)(`@F13B4:升级中`)),1)):i.status===`success`?(E(),T(`span`,P,m(S(D)(`@F13B4:升级完成`)),1)):(E(),T(`span`,F,m(S(D)(`@F13B4:升级失败`)),1))],2),i.status===`success`?(E(),T(`p`,I,[l(m(S(D)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),i.countdown>0?(E(),T(`span`,L,m(S(D)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:i.countdown})),1)):p(``,!0)])):p(``,!0),_(`pre`,{ref_key:`logEl`,ref:h,class:`upgrade-log`},m(i.logs||S(D)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-3de8edac`]]),z={class:`app-version-badge`},B=[`aria-label`],V=[`aria-label`],H=[`title`,`aria-label`],U={class:`upgrade-btn__label`},W={class:`upgrade-btn__version`},G=`https://github.com/xz333221/zen-gitsync/releases`,K=5,q=`app-version-check`,J=3600*1e3,Y=O(u({__name:`AppVersionBadge`,setup(e){let n=`2.15.
|
|
2
|
+
`);i=o.pop()??``;for(let e of o)e.trim()&&t(e)}i.trim()&&t(i)}async function A(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function j(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}await k(t,t=>{try{e(JSON.parse(t))}catch{}})}async function M(){let e=await fetch(`/api/app-restart`,{method:`POST`});if(!e.ok){let t=`HTTP ${e.status}`;try{let n=await e.json();n?.error&&(t=n.error)}catch{}throw Error(t)}if(!e.body)throw Error(`响应无 body`);return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,e())};k(e,e=>{try{let r=JSON.parse(e);r.type===`ready`&&typeof r.port==`number`&&r.port>0?i(()=>t(r.port)):r.type===`timeout`?i(()=>n(Error(`restart.timeout`))):r.type===`error`&&i(()=>n(Error(r.message||`restart.failed`)))}catch{}}).then(()=>{i(()=>n(Error(`restart.stream-closed`)))}).catch(()=>{})})}var N={key:3},P={key:4},F={key:5},I={key:0,class:`upgrade-hint`},L={key:0,class:`upgrade-countdown`},R=O(u({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(i,{emit:a}){let s=i,u=a,h=w(null);o(()=>s.logs,async()=>{await c(),h.value&&(h.value.scrollTop=h.value.scrollHeight)});function v(){s.status!==`running`&&(s.status===`success`&&s.countdown>0&&u(`cancel`),u(`update:modelValue`,!1))}function y(){u(`retry`)}function O(){u(`restart`)}function k(){u(`cancel`),u(`update:modelValue`,!1)}return(a,o)=>{let s=f,c=e,w=n;return E(),g(w,{"model-value":i.modelValue,"onUpdate:modelValue":o[0]||=e=>u(`update:modelValue`,e),title:S(D)(`@F13B4:升级`),width:`680px`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":i.status!==`running`,"append-to-body":``,onClose:v},{footer:d(()=>[i.status===`failed`?(E(),g(c,{key:0,type:`primary`,onClick:y},{default:d(()=>[l(m(S(D)(`@F13B4:重试`)),1)]),_:1})):p(``,!0),i.status===`success`?(E(),g(c,{key:1,type:`primary`,onClick:O},{default:d(()=>[l(m(S(D)(`@F13B4:立即重启并刷新`)),1)]),_:1})):p(``,!0),i.status===`success`?(E(),g(c,{key:2,onClick:k},{default:d(()=>[l(m(S(D)(`@F13B4:稍后手动重启`)),1)]),_:1})):p(``,!0),i.status===`running`?(E(),g(c,{key:3,disabled:``},{default:d(()=>[l(m(S(D)(`@F13B4:升级中`))+`... `,1)]),_:1})):p(``,!0)]),default:d(()=>[_(`div`,{class:b([`upgrade-status`,`is-${i.status}`])},[i.status===`running`?(E(),g(s,{key:0,class:`is-loading`},{default:d(()=>[t(S(r))]),_:1})):i.status===`success`?(E(),g(s,{key:1,color:`#67c23a`},{default:d(()=>[t(S(x))]),_:1})):(E(),g(s,{key:2,color:`#f56c6c`},{default:d(()=>[t(S(C))]),_:1})),i.status===`running`?(E(),T(`span`,N,m(S(D)(`@F13B4:升级中`)),1)):i.status===`success`?(E(),T(`span`,P,m(S(D)(`@F13B4:升级完成`)),1)):(E(),T(`span`,F,m(S(D)(`@F13B4:升级失败`)),1))],2),i.status===`success`?(E(),T(`p`,I,[l(m(S(D)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),i.countdown>0?(E(),T(`span`,L,m(S(D)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:i.countdown})),1)):p(``,!0)])):p(``,!0),_(`pre`,{ref_key:`logEl`,ref:h,class:`upgrade-log`},m(i.logs||S(D)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-3de8edac`]]),z={class:`app-version-badge`},B=[`aria-label`],V=[`aria-label`],H=[`title`,`aria-label`],U={class:`upgrade-btn__label`},W={class:`upgrade-btn__version`},G=`https://github.com/xz333221/zen-gitsync/releases`,K=5,q=`app-version-check`,J=3600*1e3,Y=O(u({__name:`AppVersionBadge`,setup(e){let n=`2.15.26`,r=w(n),o=y(()=>r.value||n),c=w(null),l=w(!1),u=w(``),f=w(`running`),g=w(0),b=null,x=w(!1);function C(){try{let e=sessionStorage.getItem(q);if(!e)return null;let{at:t,data:n}=JSON.parse(e);return Date.now()-t>J?null:n}catch{return null}}function O(e){try{sessionStorage.setItem(q,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function k(e=!1){let t=C();t&&(c.value=t);try{let t=await A();c.value=t,O(t),t.current&&(r.value=t.current),!e&&t.success&&t.hasUpdate&&h({type:`success`,message:D(`@F13B4:发现新版本 {version}`,{version:t.latest??``}),duration:4e3})}catch(t){e||h({type:`warning`,message:D(`@F13B4:检查更新失败 {error}`,{error:t?.message||``})})}}async function N(){if(c.value?.hasUpdate){try{await v.confirm(D(`@F13B4:确定要从 {current} 升级到 {latest} 吗?`,{current:c.value.current,latest:c.value.latest}),D(`@F13B4:升级`),{confirmButtonText:D(`@F13B4:确定升级`),cancelButtonText:D(`@F13B4:取消`),type:`info`})}catch{return}u.value=``,f.value=`running`,l.value=!0,await j(e=>{if(e.type===`done`){if(f.value=e.code===0?`success`:`failed`,e.code===0){try{sessionStorage.removeItem(q)}catch{}c.value?.latest&&(r.value=c.value.latest),P()}}else e.message&&(u.value+=e.message)})}}function P(){F(),g.value=K,b=setInterval(()=>{--g.value,g.value<=0&&(b&&=(clearInterval(b),null),L())},1e3)}function F(){b&&=(clearInterval(b),null),g.value=0}function I(){F()}async function L(){if(F(),!x.value){x.value=!0;try{let e=await M(),{pathname:t,search:n,hash:r}=window.location;window.location.href=`http://localhost:${e}${t}${n}${r}`}catch(e){let t=e?.message||``,n={"restart.timeout":`@F13B4:重启超时`,"restart.stream-closed":`@F13B4:重启失败,请刷新页面重试`,"restart.failed":`@F13B4:重启失败`}[t];h({type:`warning`,message:n?D(n):D(`@F13B4:重启失败 {error}`,{error:t})}),x.value=!1}}}return i(()=>{F()}),s(()=>{k(!0)}),(e,n)=>{let r=a;return E(),T(`div`,z,[t(r,{content:S(D)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[_(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":S(D)(`@F13B4:在 GitHub 上查看源码`)},[...n[1]||=[_(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[_(`path`,{d:`M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844a9.59 9.59 0 0 1 2.504.337c1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2z`})],-1)]],8,B)]),_:1},8,[`content`]),t(r,{content:S(D)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[_(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":S(D)(`@F13B4:在 npm 上查看包`)},[...n[2]||=[_(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[_(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)]],8,V)]),_:1},8,[`content`]),t(r,{content:S(D)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[_(`a`,{href:G,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+m(o.value),1)]),_:1},8,[`content`]),c.value?.hasUpdate?(E(),T(`button`,{key:0,type:`button`,class:`upgrade-btn`,title:S(D)(`@F13B4:发现新版本 {version},点击升级`,{version:c.value.latest??``}),"aria-label":S(D)(`@F13B4:发现新版本 {version},点击升级`,{version:c.value.latest??``}),onClick:N},[n[3]||=_(`span`,{class:`upgrade-btn__dot`,"aria-hidden":`true`},null,-1),_(`span`,U,m(S(D)(`@F13B4:升级`)),1),_(`span`,W,`v`+m(c.value.latest),1)],8,H)):p(``,!0),t(R,{modelValue:l.value,"onUpdate:modelValue":n[0]||=e=>l.value=e,logs:u.value,status:f.value,countdown:g.value,onRetry:N,onRestart:L,onCancel:I},null,8,[`modelValue`,`logs`,`status`,`countdown`])])}}}),[[`__scopeId`,`data-v-bc7c0d5c`]]);export{Y as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-DAXXjFlN.js";import{B as e,Cn as t,Fn as n,Jn as r,Ln as i,Lt as a,Pt as o,Sn as s,Tn as c,Vn as l,Xn as u,Zn as d,_n as f,_r as p,a as m,bt as h,gn as g,hn as _,ht as v,i as y,ln as ee,lt as te,mn as b,mr as ne,o as re,pr as x,pt as ie,sr as S,un as ae,vn as C,vt as oe,xn as w,zn as T}from"./element-plus-BuYhyYxZ.js";import{d as E,f as se,s as ce}from"./vendor-Cp3OS8BA.js";import{n as D,t as O}from"./_plugin-vue_export-helper-DEeiACve.js";import{n as le,t as k}from"./configStore-DPrLgVO3.js";import{n as ue,r as de}from"./flow-mindmap-CORSSj0m.js";var A=E(`mindmap`,()=>{let e=k(),t=S(e.ui.mindmapDir||``),n=S([]),r=S(null),i=S(!1),a=S(!1),o=S(null),s=S(``),c=b(()=>r.value!==null),l=b(()=>n.value.length);function u(t){e.saveUiSettings({mindmapDir:t})}async function d(e){let r=e??t.value;if(!r){o.value=null,n.value=[];return}a.value=!0,o.value=null;try{let e=await(await fetch(`/api/mindmap/list?dir=${encodeURIComponent(r)}`)).json();e.success?(t.value=e.dir,n.value=e.files||[],u(e.dir)):(o.value=e.error||`读取目录失败`,n.value=[])}catch(e){o.value=e?.message||String(e),n.value=[]}finally{a.value=!1}}async function f(e){await d(e)}async function p(e,t=!1){if(!t&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);a.value=!0,o.value=null;try{let t=await(await fetch(`/api/mindmap/read?path=${encodeURIComponent(e)}`)).json();t.success?(r.value={path:t.path,title:t.title,content:t.content,mtime:t.mtime},s.value=t.content,i.value=!1):o.value=t.error||`读取文件失败`}catch(e){o.value=e?.message||String(e)}finally{a.value=!1}}async function m(e,n=!1){if(!t.value)throw Error(`未选择目录`);if(!n&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);a.value=!0,o.value=null;try{let n=await(await fetch(`/api/mindmap/create`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({dir:t.value,name:e})})).json();if(n.success)r.value={path:n.path,title:n.title,content:n.content,mtime:n.mtime},s.value=n.content,i.value=!1,await d();else throw o.value=n.error||`新建失败`,Error(n.error||`新建失败`)}catch(e){throw e.message===`UNSAVED_CHANGES`||(o.value=e?.message||String(e)),e}finally{a.value=!1}}async function h(e){if(!r.value)throw Error(`没有打开的文件`);a.value=!0,o.value=null;try{let t=await(await fetch(`/api/mindmap/save`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:r.value.path,content:e})})).json();if(t.success)return r.value&&(r.value.content=e,r.value.mtime=t.mtime),s.value=e,i.value=!1,await d(),t;throw o.value=t.error||`保存失败`,Error(t.error||`保存失败`)}catch(e){throw o.value=e?.message||String(e),e}finally{a.value=!1}}async function g(e){let t=await(await fetch(`/api/mindmap/delete`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json();if(!t.success)throw Error(t.error||`删除失败`);return r.value&&r.value.path===e&&(r.value=null,i.value=!1,s.value=``),await d(),t}async function _(e,t){let n=await(await fetch(`/api/mindmap/rename`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e,newName:t})})).json();if(!n.success)throw Error(n.error||`重命名失败`);return r.value&&e===r.value.path&&(r.value={...r.value,path:n.path,title:t}),await d(),n}function v(){r.value&&(i.value=!0)}function y(){r.value=null,i.value=!1,s.value=``}return{currentDir:t,files:n,current:r,dirty:i,loading:a,error:o,hasCurrent:c,filesCount:l,listFiles:d,setDir:f,openFile:p,createFile:m,saveCurrent:h,deleteFile:g,renameFile:_,markDirty:v,closeCurrent:y}}),j={class:`mindmap-view`},M={class:`mm-toolbar`},N={class:`mm-toolbar-left`},P=[`title`],F={key:1,class:`mm-dir-empty`},I={class:`mm-toolbar-right`},L={key:0,class:`mm-status`},R=[`title`],z={key:0,class:`mm-status-dirty`},B={class:`mm-body`},V={class:`mm-sidebar`},H={class:`mm-sidebar-header`},fe={class:`mm-sidebar-title`},pe={class:`mm-sidebar-list`},me={key:0,class:`mm-sidebar-error`},he={key:1,class:`mm-sidebar-empty`},ge={key:2,class:`mm-sidebar-empty`},_e=[`onClick`],ve={class:`mm-file-info`},ye=[`title`],be={class:`mm-file-meta`},xe={class:`mm-editor`},Se={key:0,class:`mm-editor-empty`},Ce={class:`mm-editor-empty-title`},we={class:`mm-editor-empty-hint`},Te=1500,U=O(c({__name:`MindmapView`,setup(c){let E=A(),O=k(),{currentLocale:U}=se(le()),Ee=b(()=>{let e=O.theme;return e===`dark`?!0:e===`light`?!1:window.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}),W=S(null),G=S(!1);function De(){G.value=!0}function Oe(e){G.value=!1,e&&e.length>0&&E.setDir(e[0])}async function ke(){if(!E.currentDir){m.warning(D(`@MINDMAP:请先选择目录`));return}if(!await Y())return;let e=``;try{e=(await y.prompt(D(`@MINDMAP:输入文件名提示`),D(`@MINDMAP:新建思维导图`),{confirmButtonText:D(`@MINDMAP:新建`),cancelButtonText:D(`@MINDMAP:取消`),inputPlaceholder:D(`@MINDMAP:文件名占位`),inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||D(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await E.createFile(e,!0),m.success(D(`@MINDMAP:已新建并打开`))}catch(e){m.error(e?.message||D(`@MINDMAP:新建失败`))}}async function K(e=!1){if(E.current)try{let t=W.value?.exportData();if(!t){e||m.warning(D(`@MINDMAP:无法获取数据`));return}await E.saveCurrent(t),e||m.success(D(`@MINDMAP:已保存`))}catch(e){m.error(e?.message||D(`@MINDMAP:保存失败`))}}let q=null;function Ae(){!E.current||!E.dirty||(q&&clearTimeout(q),q=setTimeout(()=>{q=null,E.current&&E.dirty&&K(!0)},Te))}function J(){q&&=(clearTimeout(q),null)}async function Y(){if(!E.dirty||!E.current)return!0;try{await y.confirm(D(`@MINDMAP:未保存提示`).replace(`{title}`,E.current.title),D(`@MINDMAP:未保存的改动`),{confirmButtonText:D(`@MINDMAP:保存`),cancelButtonText:D(`@MINDMAP:丢弃`),distinguishCancelAndClose:!0,type:`warning`}),J();let e=W.value?.exportData();return e&&(await E.saveCurrent(e),m.success(D(`@MINDMAP:已保存`))),!0}catch(e){return e===`cancel`?(J(),!0):!1}}async function je(e){if(!(E.current&&E.current.path===e)&&await Y())try{await E.openFile(e,!0)}catch(e){m.error(e?.message||D(`@MINDMAP:打开失败`))}}async function Me(e){try{await y.confirm(D(`@MINDMAP:确认删除提示`).replace(`{title}`,e.title),D(`@MINDMAP:删除`),{confirmButtonText:D(`@MINDMAP:删除`),cancelButtonText:D(`@MINDMAP:取消`),type:`warning`})}catch{return}try{await E.deleteFile(e.path),m.success(D(`@MINDMAP:已删除`))}catch(e){m.error(e?.message||D(`@MINDMAP:删除失败`))}}async function Ne(e){let t=``;try{t=(await y.prompt(D(`@MINDMAP:输入新名称提示`),D(`@MINDMAP:重命名`),{confirmButtonText:D(`@MINDMAP:确定`),cancelButtonText:D(`@MINDMAP:取消`),inputValue:e.title,inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||D(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await E.renameFile(e.path,t),m.success(D(`@MINDMAP:已重命名`))}catch(e){m.error(e?.message||D(`@MINDMAP:重命名失败`))}}function X(e){E.markDirty(),Ae()}function Pe(e){}async function Fe(){if(!E.currentDir){m.warning(D(`@MINDMAP:请先选择目录`));return}let e=``,t=``;try{e=(await y.prompt(D(`@MINDMAP:粘贴Markdown提示`),D(`@MINDMAP:从Markdown导入`),{confirmButtonText:D(`@MINDMAP:导入`),cancelButtonText:D(`@MINDMAP:取消`),inputType:`textarea`,inputPlaceholder:D(`@MINDMAP:Markdown占位`),inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:内容不能为空`):!0})).value}catch{return}try{t=(await y.prompt(D(`@MINDMAP:输入文件名提示`),D(`@MINDMAP:文件名`),{confirmButtonText:D(`@MINDMAP:新建`),cancelButtonText:D(`@MINDMAP:取消`),inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||D(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await E.createFile(t,!0);let n=de(e,t),r=JSON.stringify(n,null,2);await E.saveCurrent(r),m.success(D(`@MINDMAP:已导入`))}catch(e){m.error(e?.message||D(`@MINDMAP:导入失败`))}}async function Ie(){if(W.value)try{let e=W.value.getMarkdown();await navigator.clipboard.writeText(e),m.success(D(`@MINDMAP:已复制Markdown`))}catch(e){m.error(e?.message||D(`@MINDMAP:复制失败`))}}function Z(e){(e.ctrlKey||e.metaKey)&&e.key===`s`&&(e.preventDefault(),E.current&&E.dirty&&(J(),K()))}let Q=S(0);r(()=>E.current?.path,()=>{Q.value++});let $=S(!1);function Le(){$.value=!$.value}let Re=b(()=>{let e=E.current?.content;if(!e)return null;try{return JSON.parse(e)}catch{return null}});i(async()=>{window.addEventListener(`keydown`,Z),E.currentDir&&await E.listFiles()}),n(()=>{window.removeEventListener(`keydown`,Z),J()});function ze(e){if(!e)return`-`;let t=new Date(e),n=Date.now()-e;return n<6e4?D(`@MINDMAP:刚刚`):n<36e5?`${Math.floor(n/6e4)}${D(`@MINDMAP:分钟前`)}`:n<864e5?`${Math.floor(n/36e5)}${D(`@MINDMAP:小时前`)}`:`${t.getMonth()+1}/${t.getDate()} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function Be(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`:`0 B`}return(n,r)=>{let i=e,c=re;return T(),C(`div`,j,[_(`div`,M,[_(`div`,N,[t(i,{size:`small`,icon:x(h),onClick:De},{default:u(()=>[s(p(x(D)(`@MINDMAP:选择目录`)),1)]),_:1},8,[`icon`]),x(E).currentDir?(T(),C(`span`,{key:0,class:`mm-dir-path`,title:x(E).currentDir},p(x(E).currentDir),9,P)):(T(),C(`span`,F,p(x(D)(`@MINDMAP:未选择目录`)),1))]),_(`div`,I,[t(i,{size:`small`,icon:x(o),disabled:!x(E).currentDir,onClick:ke},{default:u(()=>[s(p(x(D)(`@MINDMAP:新建`)),1)]),_:1},8,[`icon`,`disabled`]),t(i,{size:`small`,icon:x(ie),disabled:!x(E).currentDir,onClick:Fe},{default:u(()=>[s(p(x(D)(`@MINDMAP:从MD导入`)),1)]),_:1},8,[`icon`,`disabled`]),t(i,{size:`small`,icon:x(v),disabled:!x(E).current,onClick:Ie},{default:u(()=>[s(p(x(D)(`@MINDMAP:复制MD`)),1)]),_:1},8,[`icon`,`disabled`]),t(i,{size:`small`,type:`primary`,icon:x(oe),disabled:!x(E).current||!x(E).dirty,loading:x(E).loading,onClick:r[0]||=()=>{J(),K()}},{default:u(()=>[s(p(x(D)(`@MINDMAP:保存`)),1)]),_:1},8,[`icon`,`disabled`,`loading`]),x(E).current?(T(),C(`span`,L,[_(`span`,{class:`mm-status-title`,title:x(E).current.title},p(x(E).current.title),9,R),x(E).dirty?(T(),C(`span`,z,`●`)):f(``,!0)])):f(``,!0)])]),_(`div`,B,[_(`div`,V,[_(`div`,H,[_(`span`,fe,p(x(D)(`@MINDMAP:文件列表`)),1),t(i,{size:`small`,text:``,icon:x(a),loading:x(E).loading,onClick:r[1]||=e=>x(E).listFiles(),disabled:!x(E).currentDir},null,8,[`icon`,`loading`,`disabled`])]),d((T(),C(`div`,pe,[x(E).error&&!x(E).loading?(T(),C(`div`,me,p(x(E).error),1)):x(E).currentDir?x(E).files.length===0?(T(),C(`div`,ge,p(x(D)(`@MINDMAP:暂无思维导图`)),1)):(T(!0),C(ae,{key:3},l(x(E).files,e=>(T(),C(`div`,{key:e.path,class:ne([`mm-file-item`,{active:x(E).current?.path===e.path}]),onClick:t=>je(e.path)},[r[4]||=w(`<div class="mm-file-icon" data-v-cedb4fed><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-cedb4fed><circle cx="12" cy="12" r="2" data-v-cedb4fed></circle><circle cx="5" cy="5" r="2" data-v-cedb4fed></circle><circle cx="19" cy="5" r="2" data-v-cedb4fed></circle><circle cx="5" cy="19" r="2" data-v-cedb4fed></circle><circle cx="19" cy="19" r="2" data-v-cedb4fed></circle><line x1="10.5" y1="10.5" x2="6.5" y2="6.5" data-v-cedb4fed></line><line x1="13.5" y1="10.5" x2="17.5" y2="6.5" data-v-cedb4fed></line><line x1="10.5" y1="13.5" x2="6.5" y2="17.5" data-v-cedb4fed></line><line x1="13.5" y1="13.5" x2="17.5" y2="17.5" data-v-cedb4fed></line></svg></div>`,1),_(`div`,ve,[_(`div`,{class:`mm-file-title`,title:e.title},p(e.title),9,ye),_(`div`,be,p(ze(e.mtime))+` · `+p(Be(e.size)),1)]),_(`div`,{class:`mm-file-actions`,onClick:r[2]||=ee(()=>{},[`stop`])},[t(i,{size:`small`,text:``,icon:x(v),onClick:t=>Ne(e),title:x(D)(`@MINDMAP:重命名`)},null,8,[`icon`,`onClick`,`title`]),t(i,{size:`small`,text:``,type:`danger`,icon:x(te),onClick:t=>Me(e),title:x(D)(`@MINDMAP:删除`)},null,8,[`icon`,`onClick`,`title`])])],10,_e))),128)):(T(),C(`div`,he,p(x(D)(`@MINDMAP:请先选择目录`)),1))])),[[c,x(E).loading]])]),_(`div`,xe,[x(E).current?(T(),g(x(ue),{key:Q.value,ref_key:`mmRef`,ref:W,data:Re.value,"preview-mode":$.value,onChange:X,onSelect:Pe,onCanvasTogglePreview:Le},null,8,[`data`,`preview-mode`])):(T(),C(`div`,Se,[r[5]||=w(`<svg viewBox="0 0 24 24" width="56" height="56" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" data-v-cedb4fed><circle cx="12" cy="12" r="2" data-v-cedb4fed></circle><circle cx="5" cy="5" r="2" data-v-cedb4fed></circle><circle cx="19" cy="5" r="2" data-v-cedb4fed></circle><circle cx="5" cy="19" r="2" data-v-cedb4fed></circle><circle cx="19" cy="19" r="2" data-v-cedb4fed></circle><line x1="10.5" y1="10.5" x2="6.5" y2="6.5" data-v-cedb4fed></line><line x1="13.5" y1="10.5" x2="17.5" y2="6.5" data-v-cedb4fed></line><line x1="10.5" y1="13.5" x2="6.5" y2="17.5" data-v-cedb4fed></line><line x1="13.5" y1="13.5" x2="17.5" y2="17.5" data-v-cedb4fed></line></svg>`,1),_(`p`,Ce,p(x(D)(`@MINDMAP:思维导图编辑器`)),1),_(`p`,we,p(x(E).currentDir?x(D)(`@MINDMAP:从左侧选择或新建`):x(D)(`@MINDMAP:先选择目录提示`)),1)]))])]),t(x(ce),{visible:G.value,mode:`directory`,theme:Ee.value?`dark`:`light`,locale:x(U),onClose:r[3]||=e=>G.value=!1,onConfirm:Oe},null,8,[`visible`,`theme`,`locale`])])}}}),[[`__scopeId`,`data-v-cedb4fed`]]);export{U as default};
|
|
1
|
+
import"./rolldown-runtime-DAXXjFlN.js";import{B as e,Cn as t,Fn as n,Jn as r,Ln as i,Lt as a,Pt as o,Sn as s,Tn as c,Vn as l,Xn as u,Zn as d,_n as f,_r as p,a as m,bt as h,gn as g,hn as _,ht as v,i as y,ln as ee,lt as te,mn as b,mr as ne,o as re,pr as x,pt as ie,sr as S,un as ae,vn as C,vt as oe,xn as w,zn as T}from"./element-plus-BuYhyYxZ.js";import{d as E,f as se,s as ce}from"./vendor-Cp3OS8BA.js";import{n as D,t as O}from"./_plugin-vue_export-helper-DEeiACve.js";import{n as le,t as k}from"./configStore-DPrLgVO3.js";import{n as ue,r as de}from"./flow-mindmap-NNVsSd_b.js";var A=E(`mindmap`,()=>{let e=k(),t=S(e.ui.mindmapDir||``),n=S([]),r=S(null),i=S(!1),a=S(!1),o=S(null),s=S(``),c=b(()=>r.value!==null),l=b(()=>n.value.length);function u(t){e.saveUiSettings({mindmapDir:t})}async function d(e){let r=e??t.value;if(!r){o.value=null,n.value=[];return}a.value=!0,o.value=null;try{let e=await(await fetch(`/api/mindmap/list?dir=${encodeURIComponent(r)}`)).json();e.success?(t.value=e.dir,n.value=e.files||[],u(e.dir)):(o.value=e.error||`读取目录失败`,n.value=[])}catch(e){o.value=e?.message||String(e),n.value=[]}finally{a.value=!1}}async function f(e){await d(e)}async function p(e,t=!1){if(!t&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);a.value=!0,o.value=null;try{let t=await(await fetch(`/api/mindmap/read?path=${encodeURIComponent(e)}`)).json();t.success?(r.value={path:t.path,title:t.title,content:t.content,mtime:t.mtime},s.value=t.content,i.value=!1):o.value=t.error||`读取文件失败`}catch(e){o.value=e?.message||String(e)}finally{a.value=!1}}async function m(e,n=!1){if(!t.value)throw Error(`未选择目录`);if(!n&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);a.value=!0,o.value=null;try{let n=await(await fetch(`/api/mindmap/create`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({dir:t.value,name:e})})).json();if(n.success)r.value={path:n.path,title:n.title,content:n.content,mtime:n.mtime},s.value=n.content,i.value=!1,await d();else throw o.value=n.error||`新建失败`,Error(n.error||`新建失败`)}catch(e){throw e.message===`UNSAVED_CHANGES`||(o.value=e?.message||String(e)),e}finally{a.value=!1}}async function h(e){if(!r.value)throw Error(`没有打开的文件`);a.value=!0,o.value=null;try{let t=await(await fetch(`/api/mindmap/save`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:r.value.path,content:e})})).json();if(t.success)return r.value&&(r.value.content=e,r.value.mtime=t.mtime),s.value=e,i.value=!1,await d(),t;throw o.value=t.error||`保存失败`,Error(t.error||`保存失败`)}catch(e){throw o.value=e?.message||String(e),e}finally{a.value=!1}}async function g(e){let t=await(await fetch(`/api/mindmap/delete`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json();if(!t.success)throw Error(t.error||`删除失败`);return r.value&&r.value.path===e&&(r.value=null,i.value=!1,s.value=``),await d(),t}async function _(e,t){let n=await(await fetch(`/api/mindmap/rename`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e,newName:t})})).json();if(!n.success)throw Error(n.error||`重命名失败`);return r.value&&e===r.value.path&&(r.value={...r.value,path:n.path,title:t}),await d(),n}function v(){r.value&&(i.value=!0)}function y(){r.value=null,i.value=!1,s.value=``}return{currentDir:t,files:n,current:r,dirty:i,loading:a,error:o,hasCurrent:c,filesCount:l,listFiles:d,setDir:f,openFile:p,createFile:m,saveCurrent:h,deleteFile:g,renameFile:_,markDirty:v,closeCurrent:y}}),j={class:`mindmap-view`},M={class:`mm-toolbar`},N={class:`mm-toolbar-left`},P=[`title`],F={key:1,class:`mm-dir-empty`},I={class:`mm-toolbar-right`},L={key:0,class:`mm-status`},R=[`title`],z={key:0,class:`mm-status-dirty`},B={class:`mm-body`},V={class:`mm-sidebar`},H={class:`mm-sidebar-header`},fe={class:`mm-sidebar-title`},pe={class:`mm-sidebar-list`},me={key:0,class:`mm-sidebar-error`},he={key:1,class:`mm-sidebar-empty`},ge={key:2,class:`mm-sidebar-empty`},_e=[`onClick`],ve={class:`mm-file-info`},ye=[`title`],be={class:`mm-file-meta`},xe={class:`mm-editor`},Se={key:0,class:`mm-editor-empty`},Ce={class:`mm-editor-empty-title`},we={class:`mm-editor-empty-hint`},Te=1500,U=O(c({__name:`MindmapView`,setup(c){let E=A(),O=k(),{currentLocale:U}=se(le()),Ee=b(()=>{let e=O.theme;return e===`dark`?!0:e===`light`?!1:window.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}),W=S(null),G=S(!1);function De(){G.value=!0}function Oe(e){G.value=!1,e&&e.length>0&&E.setDir(e[0])}async function ke(){if(!E.currentDir){m.warning(D(`@MINDMAP:请先选择目录`));return}if(!await Y())return;let e=``;try{e=(await y.prompt(D(`@MINDMAP:输入文件名提示`),D(`@MINDMAP:新建思维导图`),{confirmButtonText:D(`@MINDMAP:新建`),cancelButtonText:D(`@MINDMAP:取消`),inputPlaceholder:D(`@MINDMAP:文件名占位`),inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||D(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await E.createFile(e,!0),m.success(D(`@MINDMAP:已新建并打开`))}catch(e){m.error(e?.message||D(`@MINDMAP:新建失败`))}}async function K(e=!1){if(E.current)try{let t=W.value?.exportData();if(!t){e||m.warning(D(`@MINDMAP:无法获取数据`));return}await E.saveCurrent(t),e||m.success(D(`@MINDMAP:已保存`))}catch(e){m.error(e?.message||D(`@MINDMAP:保存失败`))}}let q=null;function Ae(){!E.current||!E.dirty||(q&&clearTimeout(q),q=setTimeout(()=>{q=null,E.current&&E.dirty&&K(!0)},Te))}function J(){q&&=(clearTimeout(q),null)}async function Y(){if(!E.dirty||!E.current)return!0;try{await y.confirm(D(`@MINDMAP:未保存提示`).replace(`{title}`,E.current.title),D(`@MINDMAP:未保存的改动`),{confirmButtonText:D(`@MINDMAP:保存`),cancelButtonText:D(`@MINDMAP:丢弃`),distinguishCancelAndClose:!0,type:`warning`}),J();let e=W.value?.exportData();return e&&(await E.saveCurrent(e),m.success(D(`@MINDMAP:已保存`))),!0}catch(e){return e===`cancel`?(J(),!0):!1}}async function je(e){if(!(E.current&&E.current.path===e)&&await Y())try{await E.openFile(e,!0)}catch(e){m.error(e?.message||D(`@MINDMAP:打开失败`))}}async function Me(e){try{await y.confirm(D(`@MINDMAP:确认删除提示`).replace(`{title}`,e.title),D(`@MINDMAP:删除`),{confirmButtonText:D(`@MINDMAP:删除`),cancelButtonText:D(`@MINDMAP:取消`),type:`warning`})}catch{return}try{await E.deleteFile(e.path),m.success(D(`@MINDMAP:已删除`))}catch(e){m.error(e?.message||D(`@MINDMAP:删除失败`))}}async function Ne(e){let t=``;try{t=(await y.prompt(D(`@MINDMAP:输入新名称提示`),D(`@MINDMAP:重命名`),{confirmButtonText:D(`@MINDMAP:确定`),cancelButtonText:D(`@MINDMAP:取消`),inputValue:e.title,inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||D(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await E.renameFile(e.path,t),m.success(D(`@MINDMAP:已重命名`))}catch(e){m.error(e?.message||D(`@MINDMAP:重命名失败`))}}function X(e){E.markDirty(),Ae()}function Pe(e){}async function Fe(){if(!E.currentDir){m.warning(D(`@MINDMAP:请先选择目录`));return}let e=``,t=``;try{e=(await y.prompt(D(`@MINDMAP:粘贴Markdown提示`),D(`@MINDMAP:从Markdown导入`),{confirmButtonText:D(`@MINDMAP:导入`),cancelButtonText:D(`@MINDMAP:取消`),inputType:`textarea`,inputPlaceholder:D(`@MINDMAP:Markdown占位`),inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:内容不能为空`):!0})).value}catch{return}try{t=(await y.prompt(D(`@MINDMAP:输入文件名提示`),D(`@MINDMAP:文件名`),{confirmButtonText:D(`@MINDMAP:新建`),cancelButtonText:D(`@MINDMAP:取消`),inputValidator:e=>!e||!e.trim()?D(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||D(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await E.createFile(t,!0);let n=de(e,t),r=JSON.stringify(n,null,2);await E.saveCurrent(r),m.success(D(`@MINDMAP:已导入`))}catch(e){m.error(e?.message||D(`@MINDMAP:导入失败`))}}async function Ie(){if(W.value)try{let e=W.value.getMarkdown();await navigator.clipboard.writeText(e),m.success(D(`@MINDMAP:已复制Markdown`))}catch(e){m.error(e?.message||D(`@MINDMAP:复制失败`))}}function Z(e){(e.ctrlKey||e.metaKey)&&e.key===`s`&&(e.preventDefault(),E.current&&E.dirty&&(J(),K()))}let Q=S(0);r(()=>E.current?.path,()=>{Q.value++});let $=S(!1);function Le(){$.value=!$.value}let Re=b(()=>{let e=E.current?.content;if(!e)return null;try{return JSON.parse(e)}catch{return null}});i(async()=>{window.addEventListener(`keydown`,Z),E.currentDir&&await E.listFiles()}),n(()=>{window.removeEventListener(`keydown`,Z),J()});function ze(e){if(!e)return`-`;let t=new Date(e),n=Date.now()-e;return n<6e4?D(`@MINDMAP:刚刚`):n<36e5?`${Math.floor(n/6e4)}${D(`@MINDMAP:分钟前`)}`:n<864e5?`${Math.floor(n/36e5)}${D(`@MINDMAP:小时前`)}`:`${t.getMonth()+1}/${t.getDate()} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function Be(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`:`0 B`}return(n,r)=>{let i=e,c=re;return T(),C(`div`,j,[_(`div`,M,[_(`div`,N,[t(i,{size:`small`,icon:x(h),onClick:De},{default:u(()=>[s(p(x(D)(`@MINDMAP:选择目录`)),1)]),_:1},8,[`icon`]),x(E).currentDir?(T(),C(`span`,{key:0,class:`mm-dir-path`,title:x(E).currentDir},p(x(E).currentDir),9,P)):(T(),C(`span`,F,p(x(D)(`@MINDMAP:未选择目录`)),1))]),_(`div`,I,[t(i,{size:`small`,icon:x(o),disabled:!x(E).currentDir,onClick:ke},{default:u(()=>[s(p(x(D)(`@MINDMAP:新建`)),1)]),_:1},8,[`icon`,`disabled`]),t(i,{size:`small`,icon:x(ie),disabled:!x(E).currentDir,onClick:Fe},{default:u(()=>[s(p(x(D)(`@MINDMAP:从MD导入`)),1)]),_:1},8,[`icon`,`disabled`]),t(i,{size:`small`,icon:x(v),disabled:!x(E).current,onClick:Ie},{default:u(()=>[s(p(x(D)(`@MINDMAP:复制MD`)),1)]),_:1},8,[`icon`,`disabled`]),t(i,{size:`small`,type:`primary`,icon:x(oe),disabled:!x(E).current||!x(E).dirty,loading:x(E).loading,onClick:r[0]||=()=>{J(),K()}},{default:u(()=>[s(p(x(D)(`@MINDMAP:保存`)),1)]),_:1},8,[`icon`,`disabled`,`loading`]),x(E).current?(T(),C(`span`,L,[_(`span`,{class:`mm-status-title`,title:x(E).current.title},p(x(E).current.title),9,R),x(E).dirty?(T(),C(`span`,z,`●`)):f(``,!0)])):f(``,!0)])]),_(`div`,B,[_(`div`,V,[_(`div`,H,[_(`span`,fe,p(x(D)(`@MINDMAP:文件列表`)),1),t(i,{size:`small`,text:``,icon:x(a),loading:x(E).loading,onClick:r[1]||=e=>x(E).listFiles(),disabled:!x(E).currentDir},null,8,[`icon`,`loading`,`disabled`])]),d((T(),C(`div`,pe,[x(E).error&&!x(E).loading?(T(),C(`div`,me,p(x(E).error),1)):x(E).currentDir?x(E).files.length===0?(T(),C(`div`,ge,p(x(D)(`@MINDMAP:暂无思维导图`)),1)):(T(!0),C(ae,{key:3},l(x(E).files,e=>(T(),C(`div`,{key:e.path,class:ne([`mm-file-item`,{active:x(E).current?.path===e.path}]),onClick:t=>je(e.path)},[r[4]||=w(`<div class="mm-file-icon" data-v-cedb4fed><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-cedb4fed><circle cx="12" cy="12" r="2" data-v-cedb4fed></circle><circle cx="5" cy="5" r="2" data-v-cedb4fed></circle><circle cx="19" cy="5" r="2" data-v-cedb4fed></circle><circle cx="5" cy="19" r="2" data-v-cedb4fed></circle><circle cx="19" cy="19" r="2" data-v-cedb4fed></circle><line x1="10.5" y1="10.5" x2="6.5" y2="6.5" data-v-cedb4fed></line><line x1="13.5" y1="10.5" x2="17.5" y2="6.5" data-v-cedb4fed></line><line x1="10.5" y1="13.5" x2="6.5" y2="17.5" data-v-cedb4fed></line><line x1="13.5" y1="13.5" x2="17.5" y2="17.5" data-v-cedb4fed></line></svg></div>`,1),_(`div`,ve,[_(`div`,{class:`mm-file-title`,title:e.title},p(e.title),9,ye),_(`div`,be,p(ze(e.mtime))+` · `+p(Be(e.size)),1)]),_(`div`,{class:`mm-file-actions`,onClick:r[2]||=ee(()=>{},[`stop`])},[t(i,{size:`small`,text:``,icon:x(v),onClick:t=>Ne(e),title:x(D)(`@MINDMAP:重命名`)},null,8,[`icon`,`onClick`,`title`]),t(i,{size:`small`,text:``,type:`danger`,icon:x(te),onClick:t=>Me(e),title:x(D)(`@MINDMAP:删除`)},null,8,[`icon`,`onClick`,`title`])])],10,_e))),128)):(T(),C(`div`,he,p(x(D)(`@MINDMAP:请先选择目录`)),1))])),[[c,x(E).loading]])]),_(`div`,xe,[x(E).current?(T(),g(x(ue),{key:Q.value,ref_key:`mmRef`,ref:W,data:Re.value,"preview-mode":$.value,onChange:X,onSelect:Pe,onCanvasTogglePreview:Le},null,8,[`data`,`preview-mode`])):(T(),C(`div`,Se,[r[5]||=w(`<svg viewBox="0 0 24 24" width="56" height="56" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" data-v-cedb4fed><circle cx="12" cy="12" r="2" data-v-cedb4fed></circle><circle cx="5" cy="5" r="2" data-v-cedb4fed></circle><circle cx="19" cy="5" r="2" data-v-cedb4fed></circle><circle cx="5" cy="19" r="2" data-v-cedb4fed></circle><circle cx="19" cy="19" r="2" data-v-cedb4fed></circle><line x1="10.5" y1="10.5" x2="6.5" y2="6.5" data-v-cedb4fed></line><line x1="13.5" y1="10.5" x2="17.5" y2="6.5" data-v-cedb4fed></line><line x1="10.5" y1="13.5" x2="6.5" y2="17.5" data-v-cedb4fed></line><line x1="13.5" y1="13.5" x2="17.5" y2="17.5" data-v-cedb4fed></line></svg>`,1),_(`p`,Ce,p(x(D)(`@MINDMAP:思维导图编辑器`)),1),_(`p`,we,p(x(E).currentDir?x(D)(`@MINDMAP:从左侧选择或新建`):x(D)(`@MINDMAP:先选择目录提示`)),1)]))])]),t(x(ce),{visible:G.value,mode:`directory`,theme:Ee.value?`dark`:`light`,locale:x(U),onClose:r[3]||=e=>G.value=!1,onConfirm:Oe},null,8,[`visible`,`theme`,`locale`])])}}}),[[`__scopeId`,`data-v-cedb4fed`]]);export{U as default};
|
|
@@ -1 +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-node-menu-divider{background:#e2e8f0;height:1px;margin:2px 4px}.zm-node-menu-arrow{color:#94a3b8;margin-left:auto;font-size:14px;transition:transform .15s}.zm-node-menu-arrow.is-open{transform:rotate(90deg)}.zm-marker-picker{flex-direction:column;gap:6px;padding:4px 8px 6px;display:flex}.zm-marker-group{flex-direction:column;gap:3px;display:flex}.zm-marker-group-label{text-transform:uppercase;letter-spacing:.04em;color:#94a3b8;font-size:10px;font-weight:600}.zm-marker-grid{flex-wrap:wrap;gap:3px;display:flex}.zm-marker-cell{cursor:pointer;background:#f8fafc;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:all .1s;display:flex}.zm-marker-cell:hover{background:#e2e8f0;border-color:#cbd5e1}.zm-marker-cell.is-active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f633}.zm-marker-cell svg{display:block}.zm-marker-clear{font:inherit;color:#b91c1c;cursor:pointer;text-align:center;background:0 0;border:none;border-radius:4px;padding:3px;font-size:11px}.zm-marker-clear:hover{background:#fee2e2}.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-menu-divider{background:#e2e8f0;height:1px;margin:2px 4px}.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-drawer{background:#fafbfc;border-right:1px solid #e8eaed;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 12px 40px #0f172a14,0 2px 8px #0f172a0a}.zm-drawer--left.zm-drawer--canvas{border-right:1px solid #e8eaed;left:0}.zm-drawer--right.zm-drawer--canvas{border-left:1px solid #e8eaed;border-right:none;right:0}.zm-drawer-canvas-backdrop{z-index:39;cursor:pointer;-webkit-backdrop-filter:blur(2px);background:#0f172a2e;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 #e8eaed;border-right:none}.zm-drawer-header{background:#fff;border-bottom:1px solid #f0f1f3;flex-shrink:0;align-items:center;gap:8px;padding:16px 20px;display:flex}.zm-drawer-title{color:#0f172a;letter-spacing:-.01em;flex:1;margin:0;font-size:14px;font-weight:600}.zm-drawer-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;transition:background .12s,color .12s;display:flex}.zm-drawer-close:hover{color:#1e293b;background:#f1f5f9}.zm-drawer-body{flex:1;min-height:0;overflow:auto}.zm-outline-root{flex-direction:column;height:100%;display:flex}.zm-outline-search{flex-shrink:0;align-items:center;gap:6px;padding:8px 10px 4px;display:flex}.zm-outline-search-icon{color:#94a3b8;flex-shrink:0}.zm-outline-search-input{min-width:0;font:inherit;color:#1e293b;box-sizing:border-box;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;outline:none;flex:1;padding:5px 10px;font-size:12px;transition:border-color .12s,box-shadow .12s}.zm-outline-search-input:focus{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.zm-outline-search-input::placeholder{color:#94a3b8;font-size:11px}.zm-outline-search-count{color:#64748b;white-space:nowrap;text-align:center;flex-shrink:0;min-width:36px;font-size:11px}.zm-outline-search-empty{color:#ef4444}.zm-outline-search-clear{cursor:pointer;color:#94a3b8;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:16px;line-height:1;display:flex}.zm-outline-search-clear:hover{color:#1e293b;background:#f1f5f9}.zm-outline-actions{flex-shrink:0;justify-content:flex-end;padding:4px 10px;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-search-hit{background:#fffbeb;box-shadow:inset 3px 0 #f59e0b}.zm-outline-row.is-search-current{background:#fef3c7;box-shadow:inset 3px 0 #f97316,inset 0 0 0 1px #f973164d}.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;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:background .1s,color .1s,border-color .1s;display:none}.zm-outline-row:hover .zm-outline-row-action,.zm-outline-row.is-selected .zm-outline-row-action{display:inline-flex}.zm-outline-row-action:hover{color:#1d4ed8;background:#dbeafe;border-color:#bfdbfe}.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;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .1s,color .1s;display:none}.zm-outline-row:hover .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-copy{display:flex}.zm-outline-row-copy:hover{color:#475569;background:#e2e8f0}.zm-outline-row-copy.is-success{color:#047857;background:#ecfdf5;display:flex}.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-ecc6e0c5]{flex-direction:column;gap:14px;padding:16px 16px 24px;display:flex}.zm-settings-section[data-v-ecc6e0c5]{background:#fff;border:1px solid #eef0f3;border-radius:12px;padding:16px}.zm-settings-section--actions[data-v-ecc6e0c5]{background:0 0;border:none;padding:0}.zm-settings-section-title[data-v-ecc6e0c5]{color:#0f172a;letter-spacing:-.01em;align-items:baseline;gap:6px;margin:0 0 14px;font-size:13px;font-weight:600;display:flex}.zm-settings-section-sub[data-v-ecc6e0c5]{color:#64748b;text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:11px;font-weight:500;overflow:hidden}.zm-settings-field[data-v-ecc6e0c5]{color:#1e293b;justify-content:space-between;align-items:center;gap:12px;min-height:32px;margin:10px 0;font-size:13px;display:flex}.zm-settings-label[data-v-ecc6e0c5]{color:#334155;flex:1;font-weight:500}.zm-settings-sub[data-v-ecc6e0c5]{color:#64748b;margin-left:4px;font-family:ui-monospace,monospace;font-size:11px;font-weight:400}.zm-settings-value-tag[data-v-ecc6e0c5]{color:#64748b;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-family:ui-monospace,monospace;font-size:11px}.zm-settings-number[data-v-ecc6e0c5]{color:#0f172a;text-align:right;-moz-appearance:textfield;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;width:64px;padding:5px 10px;font-size:12px;transition:border-color .12s,box-shadow .12s}.zm-settings-number[data-v-ecc6e0c5]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-ecc6e0c5]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-ecc6e0c5]:focus{background:#fff;border-color:#3b82f6;outline:none;box-shadow:0 0 0 3px #3b82f61a}.zm-select[data-v-ecc6e0c5]{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;outline:none;min-width:100px;padding:5px 10px;font-family:inherit;font-size:12px;transition:border-color .12s,box-shadow .12s}.zm-select[data-v-ecc6e0c5]:focus,.zm-select[data-v-ecc6e0c5]:hover{border-color:#3b82f6}.zm-select[data-v-ecc6e0c5]:focus{background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-settings-hint[data-v-ecc6e0c5]{color:#94a3b8;margin:6px 0 0;font-size:11px;line-height:1.5}.zm-settings-divider[data-v-ecc6e0c5]{background:#f1f5f9;height:1px;margin:12px 0}.zm-slider[data-v-ecc6e0c5]{align-items:center;height:22px;margin:2px 0 6px;display:flex;position:relative}.zm-slider-track[data-v-ecc6e0c5]{pointer-events:none;background:#e2e8f0;border-radius:999px;height:4px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.zm-slider input[type=range][data-v-ecc6e0c5]{appearance:none;cursor:pointer;z-index:1;background:0 0;width:100%;height:22px;margin:0;position:relative}.zm-slider input[type=range][data-v-ecc6e0c5]::-webkit-slider-runnable-track{appearance:none;background:0 0;border-radius:999px;height:4px}.zm-slider input[type=range][data-v-ecc6e0c5]::-moz-range-track{background:0 0;border-radius:999px;height:4px}.zm-slider input[type=range][data-v-ecc6e0c5]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#fff;border:2px solid #3b82f6;border-radius:50%;width:16px;height:16px;margin-top:-6px;transition:border-color .12s,box-shadow .12s;box-shadow:0 1px 4px #3b82f633}.zm-slider input[type=range][data-v-ecc6e0c5]::-webkit-slider-thumb:hover{border-color:#2563eb;box-shadow:0 2px 8px #3b82f64d}.zm-slider input[type=range][data-v-ecc6e0c5]::-moz-range-thumb{cursor:pointer;background:#fff;border:2px solid #3b82f6;border-radius:50%;width:16px;height:16px;box-shadow:0 1px 4px #3b82f633}.zm-toggle[data-v-ecc6e0c5]{cursor:pointer;background:#cbd5e1;border:none;border-radius:999px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .15s;position:relative}.zm-toggle.is-on[data-v-ecc6e0c5]{background:#3b82f6}.zm-toggle-knob[data-v-ecc6e0c5]{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000002e}.zm-toggle.is-on .zm-toggle-knob[data-v-ecc6e0c5]{transform:translate(16px)}.zm-swatch-row[data-v-ecc6e0c5]{flex-wrap:wrap;gap:5px;margin:4px 0 10px;display:flex}.zm-swatch-row--compact[data-v-ecc6e0c5]{gap:4px;margin-bottom:6px}.zm-swatch[data-v-ecc6e0c5]{cursor:pointer;border:1.5px solid #e2e8f0;border-radius:7px;flex-shrink:0;width:22px;height:22px;padding:0;transition:transform .1s,border-color .12s,box-shadow .12s}.zm-swatch[data-v-ecc6e0c5]:hover{border-color:#94a3b8;transform:scale(1.12)}.zm-swatch.is-active[data-v-ecc6e0c5]{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-swatch.is-reset[data-v-ecc6e0c5]{color:#94a3b8;background:#fff;justify-content:center;align-items:center;font-size:12px;line-height:1;display:flex}.zm-swatch.is-reset[data-v-ecc6e0c5]:hover{color:#ef4444;border-color:#fca5a5}.zm-swatch--custom[data-v-ecc6e0c5]{background:conic-gradient(#f87171,#fbbf24,#34d399,#22d3ee,#818cf8,#c084fc,#f87171);border:1.5px solid #e2e8f0;position:relative;overflow:hidden}.zm-swatch--custom input[type=color][data-v-ecc6e0c5]{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.zm-color-input-wrap[data-v-ecc6e0c5]{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.zm-color-input[data-v-ecc6e0c5]{cursor:pointer;background:0 0;border:1.5px solid #e2e8f0;border-radius:7px;width:28px;height:22px;padding:0}.zm-color-input-text[data-v-ecc6e0c5]{color:#64748b;font-family:ui-monospace,monospace;font-size:11px}.zm-settings-field.zm-line-style-field[data-v-ecc6e0c5]{flex-direction:column;align-items:stretch;gap:6px}.zm-line-style-field .zm-settings-label[data-v-ecc6e0c5]{flex:none}.zm-line-style-group[data-v-ecc6e0c5]{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px;width:100%;display:grid}.zm-line-style-btn[data-v-ecc6e0c5]{cursor:pointer;color:#94a3b8;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:5px 4px;font-family:inherit;transition:all .12s;display:inline-flex}.zm-line-style-btn[data-v-ecc6e0c5]:hover{color:#475569;background:#fff;border-color:#cbd5e1}.zm-line-style-btn.is-on[data-v-ecc6e0c5]{color:#3b82f6;background:#eff6ff;border-color:#3b82f6}.zm-line-style-label[data-v-ecc6e0c5]{font-size:11px;font-weight:500}.zm-settings-preview[data-v-ecc6e0c5]{background:#f8fafc;border:1px solid #eef0f3;border-radius:10px;margin-top:12px;padding:10px 10px 8px}.zm-settings-preview svg[data-v-ecc6e0c5]{display:block}.zm-settings-preview-labels[data-v-ecc6e0c5]{color:#94a3b8;justify-content:space-between;margin-top:4px;padding:0 2px;font-size:10px;display:flex}.zm-palette-picker[data-v-ecc6e0c5]{background:#f8fafc;border:1px solid #eef0f3;border-radius:10px;margin:8px 0;padding:12px}.zm-palette-list[data-v-ecc6e0c5]{flex-direction:column;gap:6px;margin-top:4px;display:flex}.zm-palette-option[data-v-ecc6e0c5]{cursor:pointer;text-align:left;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:8px;width:100%;padding:7px 10px;transition:border-color .15s,background .15s;display:flex}.zm-palette-option[data-v-ecc6e0c5]:hover{background:#f8fafc;border-color:#cbd5e1}.zm-palette-option.is-active[data-v-ecc6e0c5]{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}.zm-palette-option-name[data-v-ecc6e0c5]{color:#1e293b;flex-shrink:0;min-width:36px;font-size:12px;font-weight:500}.zm-palette-option-swatches[data-v-ecc6e0c5]{border-radius:3px;flex:1;gap:2px;height:14px;display:flex;overflow:hidden}.zm-palette-option-swatch[data-v-ecc6e0c5]{flex:1;min-width:0;height:100%}.zm-palette-custom-editor[data-v-ecc6e0c5]{margin-top:8px}.zm-palette-textarea[data-v-ecc6e0c5]{color:#0f172a;resize:vertical;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;width:100%;min-height:36px;padding:7px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;transition:border-color .1s,box-shadow .1s}.zm-palette-textarea[data-v-ecc6e0c5]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.zm-palette-custom-actions[data-v-ecc6e0c5]{gap:6px;margin-top:6px;display:flex}.zm-palette-add[data-v-ecc6e0c5]{color:#3b82f6;cursor:pointer;background:#fff;border:1px dashed #bfdbfe;border-radius:8px;width:100%;margin-top:8px;padding:7px 8px;font-family:inherit;font-size:12px;font-weight:500;transition:all .1s}.zm-palette-add[data-v-ecc6e0c5]:hover{background:#eff6ff;border-color:#3b82f6}.zm-data-btn[data-v-ecc6e0c5]{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:5px;padding:6px 12px;font-family:inherit;font-size:12px;transition:all .1s;display:inline-flex}.zm-data-btn[data-v-ecc6e0c5]:hover{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.zm-data-btn.is-primary[data-v-ecc6e0c5]{color:#fff;background:#3b82f6;border-color:#3b82f6}.zm-data-btn.is-primary[data-v-ecc6e0c5]:hover{color:#fff;background:#2563eb;border-color:#2563eb}.zm-settings-reset[data-v-ecc6e0c5]{color:#64748b;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:10px;width:100%;padding:10px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .1s}.zm-settings-reset[data-v-ecc6e0c5]:hover{color:#ef4444;background:#fef2f2;border-color:#fecaca}.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 th{text-align:left;white-space:nowrap;background:#fde68a;border-right:1px solid #fcd34d;padding:6px 10px;font-weight:600}.zm-note-table th:last-child{border-right:none}.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-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}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-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 #0000;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:.4em;line-height:1.2;transition:box-shadow .15s;display:flex;position:absolute}.zm-node:hover{z-index:2;box-shadow:0 4px 12px #0000001a}.zm-node:not(.is-root):not(.is-editing){cursor:grab}.zm-node.is-root{cursor:default}.zm-node.is-dragging-source{opacity:.4;cursor:grabbing}.zm-node.is-drop-target{outline-offset:2px;outline:2px solid #4caf50;transition:outline-color .1s}.zm-node.is-drop-target-before{box-shadow:0 -3px #3b82f6,0 1px 2px #0000000f}.zm-node.is-drop-target-after{box-shadow:0 3px #3b82f6,0 1px 2px #0000000f}.zm-drop-indicator{pointer-events:none;z-index:9999;background:#3b82f6;border-radius:2px;position:absolute;box-shadow:0 0 6px #3b82f680}.zm-drag-ghost{pointer-events:none;z-index:10000;color:#333;white-space:nowrap;text-overflow:ellipsis;will-change:transform,left,top;background:#fff;border:1px solid #4caf50;border-radius:4px;max-width:200px;padding:4px 10px;font-size:13px;position:absolute;overflow:hidden;box-shadow:0 4px 12px #00000026}body.is-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.zm-node.is-root{font-weight:600}.zm-node.is-selected{outline-offset:2px;z-index:3;outline:2px solid #3b82f6}.zm-node.is-selected-secondary{outline-offset:2px;z-index:2;outline:2px solid #bfdbfe}.zm-text{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;white-space:pre-line;flex-shrink:1;min-width:0;overflow:hidden}.zm-input{color:inherit;font:inherit;text-align:center;resize:none;background:0 0;border:none;outline:none;width:100%;min-width:40px;padding:0;line-height:1.2;overflow:hidden}.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;border-radius:4px;margin-top:6px;padding:0 .8em .2em;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:#fffffff2;border:1px solid;border-radius:6px;margin:0;padding:6px 14px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em}.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:#fffffff2;border:1px solid;border-radius:6px;width:100%;font-size:.92em;overflow:hidden}.zm-rich-table th{text-align:left;opacity:.9;background:#ffffffbf;border-bottom:1px solid;border-right:1px solid;padding:3px 10px;font-weight:600}.zm-rich-table th:last-child{border-right:none}.zm-rich-table td{opacity:.9;border-top:1px solid;border-right:1px solid;padding:3px 10px}.zm-rich-table tr:last-child td{border-bottom:none}.zm-rich-table td:last-child{border-right:none}.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:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex;top:50%;right:-10px;transform:translateY(-50%);box-shadow:0 1px 4px #0f172a38}.zm-collapse-bar{background:var(--zm-collapse-color,#64748b);border-radius:1.5px;width:10px;height:2.5px;display:block}.zm-collapse.is-on-left{left:-10px;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:#3b82f6;border:2px solid #fff;border-radius:50%;width:14px;height:14px;transition:transform .1s;position:absolute;bottom:-6px;right:-6px;box-shadow:0 1px 4px #0f172a4d}.zm-img-resize-handle:hover{transform:scale(1.2)}.zm-node.is-resizing{cursor:nwse-resize!important}.zm-img-remove-btn{cursor:pointer;color:#64748b;z-index:4;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;padding:0;transition:all .1s;display:flex;position:absolute;top:-6px;right:-6px;box-shadow:0 1px 3px #0f172a26}.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 #e8eaed;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;transition:opacity .18s,transform .18s,background .1s,color .1s,box-shadow .12s;display:flex;position:absolute;transform:translateY(4px);box-shadow:0 2px 8px #0f172a0f,0 1px 2px #0f172a0a}.zm-canvas-fab.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.zm-canvas-fab:hover{color:#1e293b;background:#f8fafc;box-shadow:0 4px 16px #0f172a1a,0 1px 4px #0f172a0f}.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{-webkit-backdrop-filter:blur(12px)saturate(180%);z-index:10;background:#ffffffeb;border:1px solid #e2e8f099;border-radius:999px;align-items:center;gap:4px;padding:7px 12px;transition:opacity .18s,transform .18s;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0f172a0f,0 1px 3px #0f172a0a}.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:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:background .12s,color .12s;display:flex}.zm-tb-btn:hover{color:#0f172a;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:#e2e8f0b3;width:1px;height:18px;margin:0 4px}.zm-tb-tip{color:#64748b;text-align:center;min-width:38px;font-size:12px}.zm-tb-zoom{cursor:pointer;-webkit-user-select:none;user-select:none}.zm-tb-zoom:hover{color:#3b82f6}.zm-node.is-search-hit{outline-offset:2px;z-index:3;outline:2px solid #f59e0b}.zm-node.is-search-current{outline-offset:3px;z-index:4;outline:3px solid #f97316;box-shadow:0 0 0 4px #f9731626}.zm-node.is-search-dimmed{opacity:.35}.zm-node-markers{pointer-events:none;flex-shrink:0;align-items:center;gap:2px;display:flex}.zm-node-marker{flex-shrink:0;width:14px;height:14px;display:inline-flex}.zm-node-marker svg{width:14px;height:14px;display:block}.zm-node-tags{flex-wrap:wrap;justify-content:center;gap:3px;max-width:100%;margin-top:3px;display:flex;overflow:hidden}.zm-node-tag{white-space:nowrap;pointer-events:none;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:500;line-height:1.4;display:inline-block}.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-preview-exit{z-index:10;-webkit-backdrop-filter:blur(8px);color:#475569;cursor:pointer;background:#ffffffeb;border:1px solid #e8eaed;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:background .12s,color .12s,transform .12s;display:inline-flex;position:absolute;top:12px;right:12px;box-shadow:0 2px 8px #0f172a0f}.zm-app-preview-exit:hover{color:#0f172a;background:#f1f5f9;transform:scale(1.05)}.zm-app-canvas{flex:1;min-height:0;position:relative}
|
|
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-node-menu-divider{background:#e2e8f0;height:1px;margin:2px 4px}.zm-node-menu-arrow{color:#94a3b8;margin-left:auto;font-size:14px;transition:transform .15s}.zm-node-menu-arrow.is-open{transform:rotate(90deg)}.zm-marker-picker{flex-direction:column;gap:6px;padding:4px 8px 6px;display:flex}.zm-marker-group{flex-direction:column;gap:3px;display:flex}.zm-marker-group-label{text-transform:uppercase;letter-spacing:.04em;color:#94a3b8;font-size:10px;font-weight:600}.zm-marker-grid{flex-wrap:wrap;gap:3px;display:flex}.zm-marker-cell{cursor:pointer;background:#f8fafc;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:all .1s;display:flex}.zm-marker-cell:hover{background:#e2e8f0;border-color:#cbd5e1}.zm-marker-cell.is-active{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f633}.zm-marker-cell svg{display:block}.zm-marker-clear{font:inherit;color:#b91c1c;cursor:pointer;text-align:center;background:0 0;border:none;border-radius:4px;padding:3px;font-size:11px}.zm-marker-clear:hover{background:#fee2e2}.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-menu-divider{background:#e2e8f0;height:1px;margin:2px 4px}.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-drawer{background:#fafbfc;border-right:1px solid #e8eaed;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 12px 40px #0f172a14,0 2px 8px #0f172a0a}.zm-drawer--left.zm-drawer--canvas{border-right:1px solid #e8eaed;left:0}.zm-drawer--right.zm-drawer--canvas{border-left:1px solid #e8eaed;border-right:none;right:0}.zm-drawer-canvas-backdrop{z-index:39;cursor:pointer;-webkit-backdrop-filter:blur(2px);background:#0f172a2e;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 #e8eaed;border-right:none}.zm-drawer-header{background:#fff;border-bottom:1px solid #f0f1f3;flex-shrink:0;align-items:center;gap:8px;padding:16px 20px;display:flex}.zm-drawer-title{color:#0f172a;letter-spacing:-.01em;flex:1;margin:0;font-size:14px;font-weight:600}.zm-drawer-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;transition:background .12s,color .12s;display:flex}.zm-drawer-close:hover{color:#1e293b;background:#f1f5f9}.zm-drawer-body{flex:1;min-height:0;overflow:auto}.zm-outline-root{flex-direction:column;height:100%;display:flex}.zm-outline-search{flex-shrink:0;align-items:center;gap:6px;padding:8px 10px 4px;display:flex}.zm-outline-search-icon{color:#94a3b8;flex-shrink:0}.zm-outline-search-input{min-width:0;font:inherit;color:#1e293b;box-sizing:border-box;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;outline:none;flex:1;padding:5px 10px;font-size:12px;transition:border-color .12s,box-shadow .12s}.zm-outline-search-input:focus{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.zm-outline-search-input::placeholder{color:#94a3b8;font-size:11px}.zm-outline-search-count{color:#64748b;white-space:nowrap;text-align:center;flex-shrink:0;min-width:36px;font-size:11px}.zm-outline-search-empty{color:#ef4444}.zm-outline-search-clear{cursor:pointer;color:#94a3b8;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:16px;line-height:1;display:flex}.zm-outline-search-clear:hover{color:#1e293b;background:#f1f5f9}.zm-outline-actions{flex-shrink:0;justify-content:flex-end;padding:4px 10px;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-search-hit{background:#fffbeb;box-shadow:inset 3px 0 #f59e0b}.zm-outline-row.is-search-current{background:#fef3c7;box-shadow:inset 3px 0 #f97316,inset 0 0 0 1px #f973164d}.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;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:background .1s,color .1s,border-color .1s;display:none}.zm-outline-row:hover .zm-outline-row-action,.zm-outline-row.is-selected .zm-outline-row-action{display:inline-flex}.zm-outline-row-action:hover{color:#1d4ed8;background:#dbeafe;border-color:#bfdbfe}.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;background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .1s,color .1s;display:none}.zm-outline-row:hover .zm-outline-row-copy,.zm-outline-row.is-selected .zm-outline-row-copy{display:flex}.zm-outline-row-copy:hover{color:#475569;background:#e2e8f0}.zm-outline-row-copy.is-success{color:#047857;background:#ecfdf5;display:flex}.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-ed1e759c]{flex-direction:column;gap:14px;padding:16px 16px 24px;display:flex}.zm-settings-section[data-v-ed1e759c]{background:#fff;border:1px solid #eef0f3;border-radius:12px;padding:16px}.zm-settings-section--actions[data-v-ed1e759c]{background:0 0;border:none;padding:0}.zm-settings-section-title[data-v-ed1e759c]{color:#0f172a;letter-spacing:-.01em;align-items:baseline;gap:6px;margin:0 0 14px;font-size:13px;font-weight:600;display:flex}.zm-settings-section-sub[data-v-ed1e759c]{color:#64748b;text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:11px;font-weight:500;overflow:hidden}.zm-settings-field[data-v-ed1e759c]{color:#1e293b;justify-content:space-between;align-items:center;gap:12px;min-height:32px;margin:10px 0;font-size:13px;display:flex}.zm-settings-label[data-v-ed1e759c]{color:#334155;flex:1;font-weight:500}.zm-settings-sub[data-v-ed1e759c]{color:#64748b;margin-left:4px;font-family:ui-monospace,monospace;font-size:11px;font-weight:400}.zm-settings-value-tag[data-v-ed1e759c]{color:#64748b;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-family:ui-monospace,monospace;font-size:11px}.zm-settings-number[data-v-ed1e759c]{color:#0f172a;text-align:right;-moz-appearance:textfield;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;width:64px;padding:5px 10px;font-size:12px;transition:border-color .12s,box-shadow .12s}.zm-settings-number[data-v-ed1e759c]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-ed1e759c]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.zm-settings-number[data-v-ed1e759c]:focus{background:#fff;border-color:#3b82f6;outline:none;box-shadow:0 0 0 3px #3b82f61a}.zm-select[data-v-ed1e759c]{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;outline:none;min-width:100px;padding:5px 10px;font-family:inherit;font-size:12px;transition:border-color .12s,box-shadow .12s}.zm-select[data-v-ed1e759c]:focus,.zm-select[data-v-ed1e759c]:hover{border-color:#3b82f6}.zm-select[data-v-ed1e759c]:focus{background:#fff;box-shadow:0 0 0 3px #3b82f61a}.zm-settings-hint[data-v-ed1e759c]{color:#94a3b8;margin:6px 0 0;font-size:11px;line-height:1.5}.zm-settings-divider[data-v-ed1e759c]{background:#f1f5f9;height:1px;margin:12px 0}.zm-slider[data-v-ed1e759c]{align-items:center;height:22px;margin:2px 0 6px;display:flex;position:relative}.zm-slider-track[data-v-ed1e759c]{pointer-events:none;background:#e2e8f0;border-radius:999px;height:4px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.zm-slider input[type=range][data-v-ed1e759c]{appearance:none;cursor:pointer;z-index:1;background:0 0;width:100%;height:22px;margin:0;position:relative}.zm-slider input[type=range][data-v-ed1e759c]::-webkit-slider-runnable-track{appearance:none;background:0 0;border-radius:999px;height:4px}.zm-slider input[type=range][data-v-ed1e759c]::-moz-range-track{background:0 0;border-radius:999px;height:4px}.zm-slider input[type=range][data-v-ed1e759c]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#fff;border:2px solid #3b82f6;border-radius:50%;width:16px;height:16px;margin-top:-6px;transition:border-color .12s,box-shadow .12s;box-shadow:0 1px 4px #3b82f633}.zm-slider input[type=range][data-v-ed1e759c]::-webkit-slider-thumb:hover{border-color:#2563eb;box-shadow:0 2px 8px #3b82f64d}.zm-slider input[type=range][data-v-ed1e759c]::-moz-range-thumb{cursor:pointer;background:#fff;border:2px solid #3b82f6;border-radius:50%;width:16px;height:16px;box-shadow:0 1px 4px #3b82f633}.zm-toggle[data-v-ed1e759c]{cursor:pointer;background:#cbd5e1;border:none;border-radius:999px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .15s;position:relative}.zm-toggle.is-on[data-v-ed1e759c]{background:#3b82f6}.zm-toggle-knob[data-v-ed1e759c]{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000002e}.zm-toggle.is-on .zm-toggle-knob[data-v-ed1e759c]{transform:translate(16px)}.zm-swatch-row[data-v-ed1e759c]{flex-wrap:wrap;gap:5px;margin:4px 0 10px;display:flex}.zm-swatch-row--compact[data-v-ed1e759c]{gap:4px;margin-bottom:6px}.zm-swatch[data-v-ed1e759c]{cursor:pointer;border:1.5px solid #e2e8f0;border-radius:7px;flex-shrink:0;width:22px;height:22px;padding:0;transition:transform .1s,border-color .12s,box-shadow .12s}.zm-swatch[data-v-ed1e759c]:hover{border-color:#94a3b8;transform:scale(1.12)}.zm-swatch.is-active[data-v-ed1e759c]{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.zm-swatch.is-reset[data-v-ed1e759c]{color:#94a3b8;background:#fff;justify-content:center;align-items:center;font-size:12px;line-height:1;display:flex}.zm-swatch.is-reset[data-v-ed1e759c]:hover{color:#ef4444;border-color:#fca5a5}.zm-swatch--custom[data-v-ed1e759c]{background:conic-gradient(#f87171,#fbbf24,#34d399,#22d3ee,#818cf8,#c084fc,#f87171);border:1.5px solid #e2e8f0;position:relative;overflow:hidden}.zm-swatch--custom input[type=color][data-v-ed1e759c]{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.zm-color-input-wrap[data-v-ed1e759c]{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.zm-color-input[data-v-ed1e759c]{cursor:pointer;background:0 0;border:1.5px solid #e2e8f0;border-radius:7px;width:28px;height:22px;padding:0}.zm-color-input-text[data-v-ed1e759c]{color:#64748b;font-family:ui-monospace,monospace;font-size:11px}.zm-settings-field.zm-line-style-field[data-v-ed1e759c]{flex-direction:column;align-items:stretch;gap:6px}.zm-line-style-field .zm-settings-label[data-v-ed1e759c]{flex:none}.zm-line-style-group[data-v-ed1e759c]{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px;width:100%;display:grid}.zm-line-style-btn[data-v-ed1e759c]{cursor:pointer;color:#94a3b8;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:5px 4px;font-family:inherit;transition:all .12s;display:inline-flex}.zm-line-style-btn[data-v-ed1e759c]:hover{color:#475569;background:#fff;border-color:#cbd5e1}.zm-line-style-btn.is-on[data-v-ed1e759c]{color:#3b82f6;background:#eff6ff;border-color:#3b82f6}.zm-line-style-label[data-v-ed1e759c]{font-size:11px;font-weight:500}.zm-settings-preview[data-v-ed1e759c]{background:#f8fafc;border:1px solid #eef0f3;border-radius:10px;margin-top:12px;padding:10px 10px 8px}.zm-settings-preview svg[data-v-ed1e759c]{display:block}.zm-settings-preview-labels[data-v-ed1e759c]{color:#94a3b8;justify-content:space-between;margin-top:4px;padding:0 2px;font-size:10px;display:flex}.zm-palette-picker[data-v-ed1e759c]{background:#f8fafc;border:1px solid #eef0f3;border-radius:10px;margin:8px 0;padding:12px}.zm-palette-list[data-v-ed1e759c]{flex-direction:column;gap:6px;margin-top:4px;display:flex}.zm-palette-option[data-v-ed1e759c]{cursor:pointer;text-align:left;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:8px;width:100%;padding:7px 10px;transition:border-color .15s,background .15s;display:flex}.zm-palette-option[data-v-ed1e759c]:hover{background:#f8fafc;border-color:#cbd5e1}.zm-palette-option.is-active[data-v-ed1e759c]{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}.zm-palette-option-name[data-v-ed1e759c]{color:#1e293b;flex-shrink:0;min-width:36px;font-size:12px;font-weight:500}.zm-palette-option-swatches[data-v-ed1e759c]{border-radius:3px;flex:1;gap:2px;height:14px;display:flex;overflow:hidden}.zm-palette-option-swatch[data-v-ed1e759c]{flex:1;min-width:0;height:100%}.zm-palette-custom-editor[data-v-ed1e759c]{margin-top:8px}.zm-palette-textarea[data-v-ed1e759c]{color:#0f172a;resize:vertical;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;width:100%;min-height:36px;padding:7px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;transition:border-color .1s,box-shadow .1s}.zm-palette-textarea[data-v-ed1e759c]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.zm-palette-custom-actions[data-v-ed1e759c]{gap:6px;margin-top:6px;display:flex}.zm-palette-add[data-v-ed1e759c]{color:#3b82f6;cursor:pointer;background:#fff;border:1px dashed #bfdbfe;border-radius:8px;width:100%;margin-top:8px;padding:7px 8px;font-family:inherit;font-size:12px;font-weight:500;transition:all .1s}.zm-palette-add[data-v-ed1e759c]:hover{background:#eff6ff;border-color:#3b82f6}.zm-data-btn[data-v-ed1e759c]{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:5px;padding:6px 12px;font-family:inherit;font-size:12px;transition:all .1s;display:inline-flex}.zm-data-btn[data-v-ed1e759c]:hover{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.zm-data-btn.is-primary[data-v-ed1e759c]{color:#fff;background:#3b82f6;border-color:#3b82f6}.zm-data-btn.is-primary[data-v-ed1e759c]:hover{color:#fff;background:#2563eb;border-color:#2563eb}.zm-settings-reset[data-v-ed1e759c]{color:#64748b;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:10px;width:100%;padding:10px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .1s}.zm-settings-reset[data-v-ed1e759c]:hover{color:#ef4444;background:#fef2f2;border-color:#fecaca}.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 th{text-align:left;white-space:nowrap;background:#fde68a;border-right:1px solid #fcd34d;padding:6px 10px;font-weight:600}.zm-note-table th:last-child{border-right:none}.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-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}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-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 #0000;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:.4em;line-height:1.2;transition:box-shadow .15s;display:flex;position:absolute}.zm-node:hover{z-index:2;box-shadow:0 4px 12px #0000001a}.zm-node:not(.is-root):not(.is-editing){cursor:grab}.zm-node.is-root{cursor:default}.zm-node.is-dragging-source{opacity:.4;cursor:grabbing}.zm-node.is-drop-target{outline-offset:2px;outline:2px solid #4caf50;transition:outline-color .1s}.zm-node.is-drop-target-before{box-shadow:0 -3px #3b82f6,0 1px 2px #0000000f}.zm-node.is-drop-target-after{box-shadow:0 3px #3b82f6,0 1px 2px #0000000f}.zm-drop-indicator{pointer-events:none;z-index:9999;background:#3b82f6;border-radius:2px;position:absolute;box-shadow:0 0 6px #3b82f680}.zm-drag-ghost{pointer-events:none;z-index:10000;color:#333;white-space:nowrap;text-overflow:ellipsis;will-change:transform,left,top;background:#fff;border:1px solid #4caf50;border-radius:4px;max-width:200px;padding:4px 10px;font-size:13px;position:absolute;overflow:hidden;box-shadow:0 4px 12px #00000026}body.is-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.zm-node.is-root{font-weight:600}.zm-node.is-selected{outline-offset:2px;z-index:3;outline:2px solid #3b82f6}.zm-node.is-selected-secondary{outline-offset:2px;z-index:2;outline:2px solid #bfdbfe}.zm-text{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;white-space:pre-line;flex-shrink:1;min-width:0;overflow:hidden}.zm-input{color:inherit;font:inherit;text-align:center;resize:none;background:0 0;border:none;outline:none;width:100%;min-width:40px;padding:0;line-height:1.2;overflow:hidden}.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;border-radius:4px;margin-top:6px;padding:0 .8em .2em;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:#fffffff2;border:1px solid;border-radius:6px;margin:0;padding:6px 14px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.92em}.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:#fffffff2;border:1px solid;border-radius:6px;width:100%;font-size:.92em;overflow:hidden}.zm-rich-table th{text-align:left;opacity:.9;background:#ffffffbf;border-bottom:1px solid;border-right:1px solid;padding:3px 10px;font-weight:600}.zm-rich-table th:last-child{border-right:none}.zm-rich-table td{opacity:.9;border-top:1px solid;border-right:1px solid;padding:3px 10px}.zm-rich-table tr:last-child td{border-bottom:none}.zm-rich-table td:last-child{border-right:none}.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:none;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;display:flex;top:50%;right:-8px;transform:translateY(-50%);box-shadow:0 1px 3px #0f172a33}.zm-collapse-bar{background:var(--zm-collapse-color,#64748b);border-radius:1px;width:7px;height:2px;display:block}.zm-collapse.is-on-left{left:-8px;right:auto}.zm-collapse:hover{background:#fff;transform:translateY(-50%)scale(1.2)}.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:#3b82f6;border:2px solid #fff;border-radius:50%;width:14px;height:14px;transition:transform .1s;position:absolute;bottom:-6px;right:-6px;box-shadow:0 1px 4px #0f172a4d}.zm-img-resize-handle:hover{transform:scale(1.2)}.zm-node.is-resizing{cursor:nwse-resize!important}.zm-img-remove-btn{cursor:pointer;color:#64748b;z-index:4;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;padding:0;transition:all .1s;display:flex;position:absolute;top:-6px;right:-6px;box-shadow:0 1px 3px #0f172a26}.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 #e8eaed;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;transition:opacity .18s,transform .18s,background .1s,color .1s,box-shadow .12s;display:flex;position:absolute;transform:translateY(4px);box-shadow:0 2px 8px #0f172a0f,0 1px 2px #0f172a0a}.zm-canvas-fab.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.zm-canvas-fab:hover{color:#1e293b;background:#f8fafc;box-shadow:0 4px 16px #0f172a1a,0 1px 4px #0f172a0f}.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{-webkit-backdrop-filter:blur(12px)saturate(180%);z-index:10;background:#ffffffeb;border:1px solid #e2e8f099;border-radius:999px;align-items:center;gap:4px;padding:7px 12px;transition:opacity .18s,transform .18s;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0f172a0f,0 1px 3px #0f172a0a}.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:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:background .12s,color .12s;display:flex}.zm-tb-btn:hover{color:#0f172a;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:#e2e8f0b3;width:1px;height:18px;margin:0 4px}.zm-tb-tip{color:#64748b;text-align:center;min-width:38px;font-size:12px}.zm-tb-zoom{cursor:pointer;-webkit-user-select:none;user-select:none}.zm-tb-zoom:hover{color:#3b82f6}.zm-node.is-search-hit{outline-offset:2px;z-index:3;outline:2px solid #f59e0b}.zm-node.is-search-current{outline-offset:3px;z-index:4;outline:3px solid #f97316;box-shadow:0 0 0 4px #f9731626}.zm-node.is-search-dimmed{opacity:.35}.zm-node-markers{pointer-events:none;flex-shrink:0;align-items:center;gap:2px;display:flex}.zm-node-marker{flex-shrink:0;width:14px;height:14px;display:inline-flex}.zm-node-marker svg{width:14px;height:14px;display:block}.zm-node-tags{flex-wrap:wrap;justify-content:center;gap:3px;max-width:100%;margin-top:3px;display:flex;overflow:hidden}.zm-node-tag{white-space:nowrap;pointer-events:none;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:500;line-height:1.4;display:inline-block}.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-preview-exit{z-index:10;-webkit-backdrop-filter:blur(8px);color:#475569;cursor:pointer;background:#ffffffeb;border:1px solid #e8eaed;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:background .12s,color .12s,transform .12s;display:inline-flex;position:absolute;top:12px;right:12px;box-shadow:0 2px 8px #0f172a0f}.zm-app-preview-exit:hover{color:#0f172a;background:#f1f5f9;transform:scale(1.05)}.zm-app-canvas{flex:1;min-height:0;position:relative}
|