filecat 7.1.1 → 7.3.0

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.
Files changed (30) hide show
  1. package/build/dist/1142.2df73f922ad5f018d7fb.js +1 -0
  2. package/build/dist/1149.db8bfba469bbffe07b1c.js +1 -0
  3. package/build/dist/1384.8d1ae0401cf32bf88b83.js +1 -0
  4. package/build/dist/{2502.6a0501313a1fe1b8208a.js → 2502.f8b13f3430edb99be86f.js} +1 -1
  5. package/build/dist/{3328.85aa4fcbe515c670f1ad.js → 3328.4e573e64148ccdd95eb2.js} +1 -1
  6. package/build/dist/3659.97898b4c2bc7765a91f7.js +1 -0
  7. package/build/dist/5272.c6b01ba9d9321b267296.js +1 -0
  8. package/build/dist/5308.42feb31305850d55b34c.js +1 -0
  9. package/build/dist/6805.6b181f3ae37028391d63.js +1 -0
  10. package/build/dist/8603.d7eea8d253cff5aef62c.js +1 -0
  11. package/build/dist/8765.5f32a55b3f56992efb32.js +1 -0
  12. package/build/dist/9299.78bed0492387d25dd58b.js +1 -0
  13. package/build/dist/9546.de5433de4cead0a0e4b1.js +1 -0
  14. package/build/dist/9877.5bed2ede178cba58843b.js +1 -0
  15. package/build/dist/index.html +1 -1
  16. package/build/dist/main.fcdf5f00b8cdb69e55a5.js +2 -0
  17. package/build/main.js +1 -1
  18. package/package.json +1 -1
  19. package/build/dist/1149.cbeaf4f434dffe8aa534.js +0 -1
  20. package/build/dist/1384.edbad9c24d883a59724d.js +0 -1
  21. package/build/dist/3659.f0dbf1eed0113cfeb0d2.js +0 -1
  22. package/build/dist/5308.78bd4ed591fdfdcd82e7.js +0 -1
  23. package/build/dist/6805.e710a58739319eb7ae8a.js +0 -1
  24. package/build/dist/6966.2432063a0d9349aff6b4.js +0 -1
  25. package/build/dist/8603.5b96680516f93196c2c0.js +0 -1
  26. package/build/dist/8714.8fcad52f220ca72a1b6f.js +0 -1
  27. package/build/dist/8765.4b41dd887f09c4c1a556.js +0 -1
  28. package/build/dist/9546.421e124c9297955f5a4d.js +0 -1
  29. package/build/dist/main.d07c1bd328b47164e2a8.js +0 -2
  30. /package/build/dist/{main.d07c1bd328b47164e2a8.js.LICENSE.txt → main.fcdf5f00b8cdb69e55a5.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[1142],{71142(e,t,n){n.r(t),n.d(t,{default:()=>ae});var r=n(96540),s=n(7523),o=n(34843),c=n(82893),i=n(78247),a=n(23430),l=n(85997),u=n(57952),d=n(62042),m=n(53459),f=n(14284),v=n(57889),_=n(23496),h=n(86149),p=n(86504),g=n(67951),w=n(74848);function x(e){const{t}=(0,h.B)(),n=(0,r.useRef)(null),[s,o]=(0,r.useState)({marks:[],block:{name:"paragraph"}}),[c,i]=(0,r.useState)(null),a=(0,r.useCallback)(()=>{const t=e.get_view();if(!t)return;const n=t.state.selection,r=t.state.storedMarks??n.$from.marks();if(o({marks:r.map(e=>e.type.name),block:k(n.$from)}),n.empty)return void i(null);const s=t.coordsAtPos(n.from),c=t.coordsAtPos(n.to),a=(Math.min(s.left,c.left)+Math.max(s.right,c.right))/2,l=Math.min(s.top,c.top),u=Math.max(s.bottom,c.bottom);i({top:l,bottom:u,left:a})},[e.get_view]);(0,r.useEffect)(()=>{a();const t=e.get_view();if(!t)return;const n=()=>a();t.dom.addEventListener("keyup",n),t.dom.addEventListener("mouseup",n),document.addEventListener("selectionchange",n);const r=t.dom.closest(".md-editor-context");return r?.addEventListener("scroll",n,{passive:!0}),window.addEventListener("resize",n),()=>{t.dom.removeEventListener("keyup",n),t.dom.removeEventListener("mouseup",n),document.removeEventListener("selectionchange",n),r?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}},[a,e.get_view,e.refresh_key]);const l=t=>{const n=e.get_view();n&&(t(n.state,n.dispatch),n.focus(),a())},u=e=>s.marks.includes(e),d=e=>"heading"===s.block.name&&s.block.level===e,[m,f]=(0,r.useState)({w:0,h:36});if((0,r.useLayoutEffect)(()=>{if(!c||!n.current)return;const e=n.current.offsetWidth,t=n.current.offsetHeight;f(n=>n.w===e&&n.h===t?n:{w:e,h:t})},[c,e.refresh_key]),!c)return null;const v=(e,n,r,s,o=!1)=>(0,w.jsx)("button",{className:"mdtb__btn"+(o?" mdtb__btn--on":""),title:t(r),onMouseDown:e=>e.preventDefault(),onClick:s,children:n},e),_=m.w/2,p=_+4,x=Math.max(p,window.innerWidth-_-4),y=document.querySelector(".header")?.getBoundingClientRect().bottom??0,b=c.top-m.h-8,j=b<y+4,E={top:j?Math.min(c.bottom+8,window.innerHeight-m.h-4):b,left:Math.min(x,Math.max(p,c.left))};return(0,w.jsxs)("div",{className:"mdtb mdtb--floating"+(j?" mdtb--below":""),ref:n,style:E,children:[v("h1","H1","一级标题",()=>l((0,g.uf)("heading",{level:1})),d(1)),v("h2","H2","二级标题",()=>l((0,g.uf)("heading",{level:2})),d(2)),v("h3","H3","三级标题",()=>l((0,g.uf)("heading",{level:3})),d(3)),(0,w.jsx)("span",{className:"mdtb__sep"}),v("b","B","加粗",()=>l((0,g.NH)("strong")),u("strong")),v("i","I","斜体",()=>l((0,g.NH)("em")),u("em")),v("s","S","删除线",()=>l((0,g.NH)("strike")),u("strike")),v("code","</>","行内代码",()=>l((0,g.NH)("code")),u("code")),(0,w.jsx)("span",{className:"mdtb__sep"}),v("ul","≔","无序列表",()=>l(g.fK)),v("ol","1.","有序列表",()=>l(g.oB)),v("quote","❝","引用",()=>l(g.Vu))]})}function k(e){for(let t=e.depth;t>0;t--){const n=e.node(t).type.name;if("heading"===n)return{name:"heading",level:e.node(t).attrs.level};if("paragraph"===n)return{name:"paragraph"}}return{name:"paragraph"}}var y=n(75725),b=n(86059);const j="cut",E="copy",S="paste",C="strong",N="em",L="strike",A="code",R="h1",H="h2",M="h3",G="paragraph",z="bullet",B="ordered",P="quote",$="code_block",F="clean",D="row_before",K="row_after",T="row_delete",U="col_before",W="col_after",Y="col_delete",X="header_toggle",q="cell_merge",I="cell_split",V="table_delete",J="table_insert",O="select_all";function Z(e){const{t}=(0,h.B)(),[n,s]=(0,r.useState)(null),o=(0,r.useRef)(e.get_view);o.current=e.get_view,(0,r.useEffect)(()=>{const e=e=>{const t=o.current();if(!t)return;const n=e.target;if(!n||!n.closest(".md-filecat-content"))return;e.preventDefault();const r=t.posAtCoords({left:e.clientX,top:e.clientY});if(r){const e=t.state.selection;if(r.pos<e.from||r.pos>e.to){const{TextSelection:e}=t.state.selection.constructor;try{t.dispatch(t.state.tr.setSelection(e.near(t.state.doc.resolve(r.pos))))}catch{}}}const c=!!n.closest("td, th");s({x:e.clientX,y:e.clientY,in_table:c||(0,b.aH)(t.state)})};return document.addEventListener("contextmenu",e,!0),()=>document.removeEventListener("contextmenu",e,!0)},[]);const c=()=>s(null),i=(0,r.useCallback)(e=>{const t=o.current();t&&(e(t.state,t.dispatch),t.focus(),c())},[]),a=e=>{const t=o.current();t?.focus(),document.execCommand(e),c()};if(!n)return null;const l=n.in_table?[{r:t("上方插入行"),v:D},{r:t("下方插入行"),v:K},{r:t("左侧插入列"),v:U},{r:t("右侧插入列"),v:W},{r:t("删除行"),v:T},{r:t("删除列"),v:Y},{r:t("切换表头行"),v:X},{r:t("合并单元格"),v:q},{r:t("拆分单元格"),v:I},{r:t("删除表格"),v:V}]:[],u=[{r:t("剪切"),v:j},{r:t("复制"),v:E},{r:t("粘贴"),v:S},{r:t("格式"),v:"format",items:[{r:t("加粗"),v:C},{r:t("斜体"),v:N},{r:t("删除线"),v:L},{r:t("行内代码"),v:A}]},{r:t("段落"),v:"block",items:[{r:t("一级标题"),v:R},{r:t("二级标题"),v:H},{r:t("三级标题"),v:M},{r:t("正文"),v:G}]},{r:t("插入"),v:"insert",items:[{r:t("无序列表"),v:z},{r:t("有序列表"),v:B},{r:t("引用"),v:P},{r:t("代码块"),v:$},{r:t("插入表格"),v:J}]},...l.length?[{r:t("表格"),v:"table",items:l}]:[],{r:t("清除格式"),v:F},{r:t("全选"),v:O}];return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(y.rY,{click:c}),(0,w.jsx)(y.Pu,{x:n.x,y:n.y,items:u,click:t=>{switch(t){case j:return a("cut");case E:return a("copy");case S:return a("paste");case C:return i((0,g.NH)("strong"));case N:return i((0,g.NH)("em"));case L:return i((0,g.NH)("strike"));case A:return i((0,g.NH)("code"));case R:return i((0,g.uf)("heading",{level:1}));case H:return i((0,g.uf)("heading",{level:2}));case M:return i((0,g.uf)("heading",{level:3}));case G:return i((0,g.uf)("paragraph"));case z:return i(g.fK);case B:return i(g.oB);case P:return i(g.Vu);case $:return i((0,g.uf)("code_block"));case J:return c(),void e.on_insert_table?.();case D:return i(b.JD);case K:return i(b.gC);case U:return i(b.RC);case W:return i(b.GU);case T:return i(b.aR);case Y:return i(b.gR);case X:return i(b.uC);case q:return i(b.w7);case I:return i(b.L0);case V:return i(b.kG);case F:return i((e,t)=>{const{from:n,to:r}=e.selection;let s=e.tr;return e.doc.nodesBetween(n,r,(e,t)=>{if(e.isText)for(const n of e.marks)s=s.removeMark(t,t+e.nodeSize,n.type)}),t?.(s),!0});case O:return i((e,t)=>{const{TextSelection:n}=e.selection.constructor;return t?.(e.tr.setSelection(n.create(e.doc,0,e.doc.content.size))),!0})}}})]})}var Q=n(64877);function ee(e){const t=[];if(!e)return t;const n=e.split(/(\n)/);let r=null,s=0;for(let e=0;e<n.length;e+=2){const o=n[e],c=s;s+=o.length+(n[e+1]?.length??0);const i=o.endsWith("\r")?o.slice(0,-1):o,a=i.trimStart(),l=/^(`{3,}|~{3,})/.exec(a);if(l){const e=l[1][0];null===r?r=e:r===e&&(r=null);continue}if(null!==r)continue;const u=/^ {0,3}(#{1,6})\s+(.*)$/.exec(i);if(!u)continue;const d=u[1].length,m=u[2].replace(/\s+#+\s*$/,"").trim();t.push({level:d,text:m,pos:c})}return t}var te=n(69918),ne=n(96763),re=n(40505);function se(e){const{t}=(0,h.B)(),[n,s]=(0,r.useState)(!1),[i,a]=(0,r.useState)({x:0,y:0}),[u,d]=(0,r.useState)([]),[m]=(0,o.fp)(c.AG.user_base_info);(0,r.useEffect)(()=>{if(!n)return;let e=!1;return(0,ne.Kz)().then(t=>{e||d(t)}),()=>{e=!0}},[n]);const f=(e,t)=>(0,w.jsx)("div",{style:{...(0,re.ok)(t===m?.user_data?.md_editor_theme)},children:e});return(0,w.jsxs)(r.Fragment,{children:[(0,w.jsx)(l.rA,{icon:"palette",title:t("主题"),onClick:e=>{a({x:e.clientX,y:e.clientY}),s(!0)}}),n&&(0,w.jsx)(y.rY,{click:()=>s(!1),children:(0,w.jsx)(y.Pu,{x:i.x,y:i.y,items:[{r:f(t("follow_sys"),""),v:""},...u.map(e=>({r:f(e.id,e.id),v:e.id}))],click:t=>{s(!1),e.on_change(t)}})})]})}var oe=n(2543),ce=n(86090),ie=n(87361);function ae(){const{t:e}=(0,h.B)(),t=(0,ce.Zp)(),{check_user_auth:n}=(0,i.MH)(),g=n(a.oV.md_editor_setting),[k,y]=(0,o.fp)(c.AG.md_editor),b=(0,o.fp)(c.AG.md_editor_last_context)[1],j=(0,r.useRef)(null),[E,S]=(0,r.useState)(null),[C,N]=(0,r.useState)(!1),[L,A]=(0,r.useState)(!1),[R,H]=(0,r.useState)(0),M=(0,r.useRef)(null),[G,z]=(0,r.useState)([]),[B,P]=(0,r.useState)(-1),[$,F]=(0,r.useState)(15),[D,K]=(0,r.useState)(!1),T=(0,r.useRef)(null),U=(0,r.useRef)(null),[W,Y]=(0,o.fp)(c.AG.md_editor_show_outline),[X,q]=(0,o.fp)(c.AG.md_editor_mode),I=(0,r.useCallback)(()=>{const e="wysiwyg"===X?"source":"wysiwyg",t=M.current;t&&("source"===e?t.enter_source_mode():t.exit_source_mode(),q(e))},[X]),[V]=(0,o.fp)(c.AG.md_editor_setting),[J,O]=(0,o.fp)(c.AG.md_theme_css),[re]=(0,o.fp)(c.AG.user_base_info),{initUserInfo:ae}=(0,r.useContext)(s.F),le=(0,r.useRef)(null),ue=(0,r.useRef)(null);(0,r.useEffect)(()=>{ue.current},[re]),(0,r.useEffect)(()=>{(0,te.Ce)(le.current,V)},[V]);(0,r.useEffect)(()=>{(0,ne.bN)("editor",J)},[J]),(0,r.useEffect)(()=>{const e=()=>{(0,ne.sO)().then(O)};return window.addEventListener(ne.o3,e),()=>window.removeEventListener(ne.o3,e)},[]);const de=(0,r.useRef)([]),me=(0,r.useCallback)(()=>{const e=M.current;if(!e)return;const t=e.is_source_mode()?ee(e.get_markdown()):e.get_headings();de.current=t,z(t)},[]),fe=(0,r.useCallback)(()=>{const e=M.current,t=e?.get_view();if(!e||!t)return;const n=e.is_source_mode()?t.state.selection.from-1:t.state.selection.from;let r=-1;for(const e of de.current){if(!(e.pos<=n))break;r=e.pos}P(r)},[]);(0,r.useEffect)(()=>{let t=!1;if(k?.url)return A(!1),N(!0),v.l.get(k.url).then(e=>{if(t)return;S(e??"")}).catch(()=>{t||((0,d.zN)(e("打开失败")),S(""))}).finally(()=>{t||N(!1)}),()=>{t=!0};S(null)},[k?.url]),(0,r.useEffect)(()=>{const e=()=>H(e=>e+1);return document.addEventListener("selectionchange",e),()=>document.removeEventListener("selectionchange",e)},[]);const ve=(0,r.useRef)(I);ve.current=I,(0,r.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"/"===e.key&&(e.preventDefault(),e.stopPropagation(),ve.current())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[]),(0,r.useEffect)(()=>{me(),fe()},[R,X,me,fe]);const _e=(0,r.useCallback)(oe.throttle(e=>{if(!T.current||!U.current)return;const t=parseFloat(getComputedStyle(T.current).fontSize),n=e.clientX/t,r=window.innerWidth/t-4,s=2.25+U.current.offsetWidth/t;n<=r&&n>=s&&F(parseFloat(n.toFixed(2)))},32),[]),he=()=>{K(!1),T.current?.removeEventListener("pointermove",_e)},pe=async()=>{if(!k?.name||!k?.path)return;const t=M.current?.get_markdown();if(void 0===t)return;const n=k.path.slice(0,k.path.length-k.name.length),r=`${encodeURIComponent(n)}${k.name}`;(await f.$M.post(`save/${r}`,{context:t})).code===m.m.Success?(A(!1),(0,d.SK)(e("保存成功"))):(0,d.zN)(e("保存失败"))},ge=(0,r.useRef)(pe);ge.current=pe;const we=()=>{y({}),A(!1),S(null),M.current=null,k?.close?.()},xe=(0,r.useMemo)(()=>k?.url??"md_editor",[k?.url]);return k?.name?(0,w.jsxs)("div",{id:"md-editor-container",ref:le,children:[(0,w.jsx)(u.A,{ignore_tags:!0,left_children:[(0,w.jsx)(l.rA,{title:e("关闭"),icon:"close",onClick:we},1),(0,w.jsx)("div",{className:"md-editor-title",children:k.name},3),...L?[(0,w.jsx)(l.rA,{title:e("保存"),icon:"save",onClick:pe},2)]:[],(0,w.jsx)(l.rA,{title:e("大纲"),icon:"list",onClick:()=>Y(e=>!e),selected:W},4),(0,w.jsx)(l.rA,{title:e("wysiwyg"===X?"源码模式":"实时编辑模式"),icon:"wysiwyg"===X?"code":"edit",onClick:I},5),(0,w.jsx)(se,{on_change:async t=>{const n=await f.wm.post(_.s.user_save_private_attr,{is_md_theme:!0,md_editor_theme:t});n?.code===m.m.Success?(ue.current=t,await ae(),(0,d.SK)(e("保存成功"))):(0,d.zN)(e("保存失败"))}},8),(0,w.jsx)(l.rA,{title:e("导出PDF"),icon:"print",onClick:()=>{window.print()}},7),...g?[(0,w.jsx)(l.rA,{title:e("编辑器设置"),icon:"settings",onClick:()=>{we(),t(ie.o.md_editor_setting_page)}},6)]:[]]}),(0,w.jsxs)("div",{className:"md-editor-context",ref:T,children:[C&&(0,w.jsxs)("div",{className:"common-box common-box-center",children:[e("加载中"),"..."]}),!C&&null!==E&&(0,w.jsxs)(r.Fragment,{children:[W&&(0,w.jsx)("div",{className:"md-outline-panel",style:{width:`${$}em`},children:(0,w.jsx)(Q.A,{items:G,active_pos:B,on_click:e=>{const t=M.current;t&&(t.scroll_to_pos(t.is_source_mode()?e.pos+1:e.pos),P(e.pos))}})}),W&&(0,w.jsx)("div",{className:"md-editor-divider",ref:U,onPointerDown:()=>{K(!0),T.current?.addEventListener("pointermove",_e)},onPointerUp:he}),D&&(0,w.jsx)("div",{className:"md-editor-drag-overlay",onPointerUp:he}),(0,w.jsx)("div",{className:"md-editor-scroll",children:(0,w.jsxs)("div",{className:"md-editor-sheet",children:["wysiwyg"===X&&(0,w.jsx)(x,{get_view:()=>M.current?.get_view()??null,refresh_key:R}),(0,w.jsx)(p.A,{value:E,ref:M,initial_source_mode:"source"===X,on_ready:e=>{const t=e.is_source_mode()?ee(e.get_markdown()):e.get_headings();de.current=t,z(t),P(-1)},on_change:()=>{L||A(!0),j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{const e=M.current?.get_markdown()??"";e&&b(e)},800)},on_save:()=>ge.current(),on_selection_change:()=>H(e=>e+1),on_source_mode_change:e=>{q(e?"source":"wysiwyg"),H(e=>e+1)}},xe),"wysiwyg"===X&&(0,w.jsx)(Z,{get_view:()=>M.current?.get_view()??null,on_insert_table:()=>{M.current?.insert_table(3,3),A(!0)}})]})})]})]})]}):null}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[1149],{26559(e,n,t){var i=t(96540),o=t(34843),d=t(82893),r=t(86504),a=t(69918),s=t(8332),m=t(74848);const l=i.memo(function(e){const[n]=(0,o.fp)(d.AG.md_editor_last_context),[t]=(0,i.useState)(n?.trim()?n:s.$);return(0,m.jsx)("div",{className:e.className,ref:n=>e.setting&&(0,a.Ce)(n,e.setting),children:(0,m.jsx)("div",{className:"md-editor-scroll",children:(0,m.jsx)("div",{className:"md-editor-sheet",children:(0,m.jsx)(r.A,{value:t})})})})});t.d(n,["A",0,l])},8332(e,n,t){t.d(n,["$",0,'# 一级标题 Heading 1\n\n## 二级标题 Heading 2\n\n### 三级标题 Heading 3\n\n#### 四级标题 Heading 4\n\n##### 五级标题 Heading 5\n\n###### 六级标题 Heading 6\n\n这是一段普通正文,用来观察字体、字号、行高和文字颜色。中间可以包含 **加粗文字**、*斜体文字*、~~删除线~~、`行内代码` 以及 [一个链接](https://github.com/xiaobaidadada/filecat)。\n\n> 这是一段引用文字。\n> 引用通常用来强调摘录的内容,左侧一般会有一条竖线。\n\n- 无序列表第一项\n- 无序列表第二项\n - 嵌套的子项\n- 无序列表第三项\n\n1. 有序列表第一项\n2. 有序列表第二项\n3. 有序列表第三项\n\n```javascript\n// 代码块\nfunction greet(name) {\n console.log(`Hello, ${name}!`);\n}\ngreet("filecat");\n```\n\n| 列一 | 列二 | 列三 |\n| --- | --- | --- |\n| 内容 A | 内容 B | 内容 C |\n| 内容 D | 内容 E | 内容 F |\n\n---\n\n最后一段正文,用于观察段落之间的间距。\n',"V",0,'/* ===== md 主题 =====\n 选择器请从 .md-editor-sheet 开始写 —— 它是正文容器的类名,\n 编辑器与右侧预览用的是同一个类名,一处书写、两处生效。\n\n 注意:css 原样注入页面,不做任何改写。\n 写成 body、h1 这种全局选择器会真的作用到整个后台界面,不要这么写。\n\n 下面每一组都可以直接改,不需要的整段删掉即可。\n ============================================ */\n\n/* ---------- 正文 ---------- */\n.md-editor-sheet {\n font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; /* 字体 */\n font-size: 16px; /* 字号 */\n line-height: 1.7; /* 行高:1.7 约为字号的 1.7 倍 */\n color: #333333; /* 文字颜色 */\n}\n\n/* ---------- 整页底色 ----------\n 底色必须写在 .md-editor-scroll(滚动容器)上,不要写在 .md-editor-sheet。\n 纸张高度只有一屏,写在纸张上的底色长文档一滚就露底(上半截有色、下半截变回灰)。\n 深色主题尤其要注意:这一条不写,滚动时就会白一半黑一半。 */\n.md-editor-scroll {\n background: #ffffff;\n}\n\n/* ---------- 标题 h1 ~ h6 ---------- */\n.md-editor-sheet h1 {\n font-size: 2em; /* 相对正文字号的倍数 */\n font-weight: 600; /* 字重:400 常规 / 600 半粗 / 700 粗 */\n color: #1a1a1a;\n margin-top: 1.4em;\n margin-bottom: 0.6em;\n padding-bottom: 0.3em;\n border-bottom: 1px solid #eaecef; /* 标题下划线,不需要就删掉这行 */\n}\n.md-editor-sheet h2 { font-size: 1.5em; font-weight: 600; margin-top: 1.3em; margin-bottom: 0.6em; }\n.md-editor-sheet h3 { font-size: 1.25em; font-weight: 600; margin-top: 1.2em; margin-bottom: 0.5em; }\n.md-editor-sheet h4 { font-size: 1em; font-weight: 600; margin-top: 1.1em; margin-bottom: 0.5em; }\n.md-editor-sheet h5 { font-size: 0.9em; font-weight: 600; margin-top: 1em; margin-bottom: 0.5em; }\n.md-editor-sheet h6 { font-size: 0.85em; font-weight: 600; color: #6a737d; margin-top: 1em; margin-bottom: 0.5em; }\n\n/* ---------- 段落与行内元素 ---------- */\n.md-editor-sheet p {\n margin: 0 0 1em; /* 段落间距:上 右 下 左,下边距控制段与段的距离 */\n}\n.md-editor-sheet strong { font-weight: 600; } /* 加粗文字 */\n.md-editor-sheet em { font-style: italic; } /* 斜体文字 */\n.md-editor-sheet a { color: #0366d6; text-decoration: none; } /* 链接颜色;加下划线写 underline */\n.md-editor-sheet a:hover { text-decoration: underline; } /* 鼠标悬停时的链接样式 */\n.md-editor-sheet del { color: #999999; } /* 删除线文字 */\n\n/* ---------- 引用 ---------- */\n.md-editor-sheet blockquote {\n margin: 0 0 1em;\n padding: 0.4em 1em;\n color: #6a737d; /* 引用文字颜色 */\n border-left: 4px solid #dfe2e5; /* 左侧竖线,这是引用最明显的特征 */\n background: #f6f8fa; /* 引用底色,不需要就删掉 */\n}\n\n/* ---------- 代码 ---------- */\n.md-editor-sheet code {\n font-family: Consolas, Monaco, "Courier New", monospace; /* 等宽字体 */\n font-size: 0.88em;\n color: #476582; /* 行内代码文字色 */\n background: rgba(27, 31, 35, 0.05); /* 行内代码底色 */\n padding: 0.2em 0.4em;\n border-radius: 3px; /* 圆角 */\n}\n.md-editor-sheet pre {\n padding: 1em;\n overflow: auto; /* 内容太宽时出现横向滚动条 */\n background: #f6f8fa; /* 代码块底色 */\n border-radius: 6px;\n margin: 0 0 1em;\n}\n.md-editor-sheet pre code {\n background: transparent; /* 代码块里的 code 不要再叠一层底色 */\n padding: 0;\n}\n\n/* ---------- 列表 ---------- */\n.md-editor-sheet ul, .md-editor-sheet ol {\n padding-left: 2em; /* 缩进 */\n margin: 0 0 1em;\n}\n.md-editor-sheet li { margin: 0.25em 0; } /* 列表项之间的间距 */\n\n/* ---------- 表格 ---------- */\n.md-editor-sheet table {\n width: 100%;\n border-collapse: collapse; /* 相邻边框合并成一条线 */\n margin: 0 0 1em;\n}\n.md-editor-sheet table th, .md-editor-sheet table td {\n padding: 6px 13px;\n border: 1px solid #dfe2e5; /* 单元格边框 */\n}\n.md-editor-sheet table th {\n font-weight: 600;\n background: #f6f8fa; /* 表头底色 */\n}\n\n/* ---------- 分割线 ---------- */\n.md-editor-sheet hr {\n height: 1px; /* 线的粗细 */\n border: 0;\n background: #e1e4e8; /* 线的颜色 */\n margin: 1.6em 0;\n}\n\n/* ---------- 图片 ---------- */\n.md-editor-sheet img {\n max-width: 100%; /* 防止大图撑破版面 */\n border-radius: 4px;\n}\n'])},45907(e,n,t){t.d(n,{y:()=>d});var i=t(34843),o=t(82893);function d(){const[e,n]=(0,i.fp)(o.AG.confirm);return({sub_title:e,confirm_fun:t,title:i,context_div:o})=>{n({open:!0,sub_title:e,handle:()=>{t(),n({open:!1,handle:null})},title:i,context_div:o})}}},11149(e,n,t){t.r(n),t.d(n,{default:()=>w});var i=t(96540),o=t(86149),d=t(86090),r=t(85997),a=t(4412),s=t(75725),m=t(70447),l=t(61443),c=t(62042),h=t(78247),f=t(23430),g=t(87361),p=t(69918),x=t(26559),u=t(96763),b=t(45907),_=t(34843),k=t(82893),y=t(74848);const j=[{key:"content_max_width",label:"正文最大宽度"},{key:"content_padding",label:"正文左右边距"},{key:"font_size",label:"正文字号"},{key:"line_height",label:"行高"}],v=/^\d+(\.\d+)?(px|%|rem|em|vw|vh|ch)?$/;function w(){const{t:e}=(0,o.B)(),n=(0,d.Zp)(),{check_user_auth:t}=(0,h.MH)(),w=(0,b.y)(),C=t(f.oV.md_editor_setting),[,z]=(0,_.fp)(k.AG.md_editor_setting),[,N]=(0,_.fp)(k.AG.md_theme_css),[F,A]=(0,i.useState)({}),[G,S]=(0,i.useState)(!0),[H,$]=(0,i.useState)(!1),[E,P]=(0,i.useState)([]),[B,K]=(0,i.useState)(p.FG.theme);(0,i.useEffect)(()=>{Promise.all([(0,p.gC)(),(0,u.Kz)()]).then(([e,n])=>{const t={};j.forEach(n=>t[n.key]=e[n.key]??""),A(t),K(e.theme??p.FG.theme),P(n)}).finally(()=>S(!1))},[]);const V=E.find(e=>e.id===B),Z=e=>{const n=(F[e]??"").trim();return v.test(n)?n:p.FG[e]};return(0,y.jsxs)("div",{children:[(0,y.jsx)(a.aZ,{position:"right",children:(0,y.jsx)(r.rA,{icon:"arrow_back",title:e("上一页"),onClick:()=>n(-1)})}),(0,y.jsx)(s.jW,{isFull:!0,more:!0,children:(0,y.jsx)(s.NN,{children:(0,y.jsx)(s.xh,{children:(0,y.jsxs)(s.fI,{children:[(0,y.jsx)(s.VP,{widthPer:33,maxWidth:"30rem",children:(0,y.jsx)(m.Zp,{title:e("编辑器设置"),titleCom:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(r.C3,{text:e("恢复默认"),clickFun:()=>{const e={};j.forEach(n=>e[n.key]=p.FG[n.key]),A(e)}}),C&&(0,y.jsx)(r.$n,{text:e(H?"保存中":"保存"),clickFun:()=>{H||(async()=>{for(const n of j){const t=(F[n.key]??"").trim();if(!v.test(t))return void(0,c.zN)(`${e(n.label)}: ${e("请输入合法的 CSS 值,例如 10px、3rem、80%")}`)}const n={};j.forEach(e=>n[e.key]=F[e.key].trim()),n.theme=B,$(!0);try{const t=await(0,p.fy)(n);if(t){(0,c.SK)(e("保存成功"));const n={};j.forEach(e=>n[e.key]=t[e.key]??""),A(n),K(t.theme??p.FG.theme),z({...t}),(0,u.sO)().then(N)}else(0,c.zN)(e("保存失败"))}finally{$(!1)}})()}})]}),children:G?(0,y.jsxs)("div",{className:"common-box common-box-center",children:[e("加载中"),"..."]}):(0,y.jsxs)("div",{className:"md-setting-form",children:[(0,y.jsx)(l.BC,{vertical:!0,label:e("主题"),children:(0,y.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.4rem"},children:[(0,y.jsx)(l.l6,{value:B,onChange:e=>K(e),disabled:!C,options:[{title:e("不使用主题"),value:""},...E.map(e=>({title:e.id,value:e.id}))]}),(0,y.jsx)(r.rA,{icon:"add",title:e("新建主题"),onClick:()=>n(g.o.md_theme_editor_page)}),(0,y.jsx)(r.rA,{icon:"edit",title:e("编辑主题"),onClick:()=>n(`${g.o.md_theme_editor_page}?id=${encodeURIComponent(B)}`)}),V&&(0,y.jsx)(r.rA,{icon:"delete",title:e("删除主题"),onClick:()=>{return n=V,void w({sub_title:e("确认删除这个主题吗?"),confirm_fun:async()=>{await(0,u._8)(n.id)?((0,c.SK)(e("删除成功")),P(await(0,u.Kz)()),B===n.id&&K(p.FG.theme)):(0,c.zN)(e("删除失败"))}});var n}})]})}),j.map(n=>(0,y.jsx)(l.BC,{vertical:!0,label:e(n.label),children:(0,y.jsx)("input",{className:"input input--block",type:"text",spellCheck:!1,disabled:!C,placeholder:p.FG[n.key],value:F[n.key]??"",onChange:e=>A(t=>({...t,[n.key]:e.target.value}))})},n.key)),!C&&(0,y.jsx)("p",{className:"md-editor-setting-page__desc",children:e("nprmtp")})]})})}),(0,y.jsx)(s.VP,{widthPer:50,maxWidth:"60rem",children:(0,y.jsx)(m.Zp,{title:e("预览"),children:(0,y.jsx)(x.A,{className:"md-editor-setting-page__preview",setting:{content_max_width:Z("content_max_width"),content_padding:Z("content_padding"),font_size:Z("font_size"),line_height:Z("line_height")}})})})]})})})})]})}}}]);