@akairos/pipeline 0.18.1 → 0.19.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.
- package/ARTICLE-THEMES.md +2 -0
- package/README.md +27 -4
- package/package.json +7 -5
- package/src/adapter-loader.ts +24 -4
- package/src/adapter-types.ts +14 -0
- package/src/article-theme.test.ts +55 -0
- package/src/article-theme.ts +10 -2
- package/src/commands/article-theme.ts +1 -1
- package/src/commands/init.ts +2 -0
- package/src/commands/publish.ts +1 -1
- package/src/commands/typeset-assets-sync.test.ts +12 -1
- package/src/commands/wechat-export.ts +9 -4
- package/src/plugin-runner.ts +10 -4
- package/src/plugin-runtime.test.ts +19 -0
- package/src/plugin-runtime.ts +11 -2
- package/src/providers/index.ts +4 -2
- package/src/runtime-package.ts +13 -6
- package/src/wechat-preview/assets/browser-dist/.vite/manifest.json +1280 -5
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/src/wechat-preview/assets/browser-dist/assets/apl-B4CMkyY2.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/asciiarmor-Df11BRmG.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/asn1-EdZsLKOL.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/asterisk-B-8jnY81.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/clike-B9uivgTg.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/clojure-BMjYHr_A.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/cmake-BQqOBYOt.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/cobol-CWcv1MsR.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/coffeescript-S37ZYGWr.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/commonlisp-DBKNyK5s.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/crystal-SjHAIU92.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/css-BnMrqG3P.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/cypher-C_CwsFkJ.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/d-pRatUO7H.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/diff-DbItnlRl.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/dockerfile-BKs6k2Af.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/dtd-DF_7sFjM.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/dylan-DwRh75JA.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/ebnf-CDyGwa7X.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/ecl-Cabwm37j.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/eiffel-CnydiIhH.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/elm-vLlmbW-K.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/erlang-BNw1qcRV.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/factor-kuTfRLto.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/fcl-Kvtd6kyn.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/forth-Ffai-XNe.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/fortran-DYz_wnZ1.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/gas-Bneqetm1.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/gherkin-heZmZLOM.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/groovy-D9Dt4D0W.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/haskell-Cw1EW3IL.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/haxe-H-WmDvRZ.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/http-DBlCnlav.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/idl-BEugSyMb.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-B13lCSuc.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BDdU9pNh.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BFLGVgsp.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BHJY0B4E.js +8 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BOnKEJxh.js +7 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BPmBcGI-.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BTVIa90Y.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BYV6TA8f.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BlVpb0dF.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BqKARoyW.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-BzHql5Rp.js +20 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-CPFEJ9fX.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-CdxKyTX6.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-CyXDvcwY.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-DA7Z4paG.js +13 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-DDQGWU_D.js +3 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-DENMoE5l.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-D_EI5vFS.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-DpuVrwze.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-IBlhKHQr.js +8 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-ifI5svkD.js +2 -0
- package/src/wechat-preview/assets/browser-dist/assets/index-vRiJxvj2.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/javascript-iXu5QeM3.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/julia-DuME0IfC.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/livescript-BwQOo05w.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/lua-VAEuO923.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/mathematica-DTrFuWx2.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/mbox-CNhZ1qSd.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/mirc-CjQqDB4T.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/mllike-CXdrOF99.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/modelica-Dc1JOy9r.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/mscgen-BA5vi2Kp.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/mumps-BT43cFF4.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/nginx-DdIZxoE0.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/nsis-LY0VT_u5.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/ntriples-BfvgReVJ.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/octave-Ck1zUtKM.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/oz-BzwKVEFT.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/pascal--L3eBynH.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/perl-CdXCOZ3F.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/pig-CevX1Tat.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/powershell-CFHJl5sT.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/properties-C78fOPTZ.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/protobuf-ChK-085T.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/pug-DeIclll2.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/puppet-DMA9R1ak.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/python-BuPzkPfP.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/q-pXgVlZs6.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/r-B6wPVr8A.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/rpm-CTu-6PCP.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/ruby-BK5aLJev.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/sas-B4kiWyti.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/scheme-C41bIUwD.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/shell-CjFT_Tl9.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/sieve-C3Gn_uJK.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/simple-mode-GW_nhZxv.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/smalltalk-CnHTOXQT.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/solr-DehyRSwq.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/sparql-DkYu6x3z.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/sql-D0XecflT.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/stex-C3f8Ysf7.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/style-Cif_gYUW.css +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/stylus-B533Al4x.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/swift-BzpIVaGY.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/tcl-DVfN8rqt.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/textile-CnDTJFAw.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/tiki-DGYXhP31.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/toml-Bm5Em-hy.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/troff-wAsdV37c.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/ttcn-CfJYG6tj.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/turtle-B1tBg_DP.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/vb-CmGdzxic.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/vbscript-BuJXcnF6.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/velocity-D8B20fx6.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/verilog-C6RDOZhf.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/vhdl-lSbBsy5d.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/webidl-ZXfAyPTL.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/{wechat-renderer-GgNrlSLi.js → wechat-renderer-CcHuq7M-.js} +83 -61
- package/src/wechat-preview/assets/browser-dist/assets/xquery-DzFWVndE.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/yacas-BJ4BC0dw.js +1 -0
- package/src/wechat-preview/assets/browser-dist/assets/z80-Hz9HOZM7.js +1 -0
- package/src/wechat-preview/assets/browser-dist/editor-export.js +1 -1
- package/src/wechat-preview/assets/browser-dist/src/wechat-preview/browser/studio/studio.html +215 -165
- package/src/wechat-preview/assets/browser-dist/studio.js +1148 -237
- package/src/wechat-preview/browser/studio/color-palettes.ts +28 -0
- package/src/wechat-preview/browser/studio/config-manager.ts +49 -0
- package/src/wechat-preview/browser/studio/milkdown-article-menu.ts +251 -0
- package/src/wechat-preview/browser/studio/myno-editor.ts +122 -0
- package/src/wechat-preview/browser/studio/studio.css +493 -250
- package/src/wechat-preview/browser/studio/studio.html +213 -163
- package/src/wechat-preview/browser/studio/studio.ts +684 -211
- package/src/wechat-preview/browser/studio/style-packs.ts +201 -0
- package/src/wechat-preview/browser/studio/syntax-presets.test.ts +10 -32
- package/src/wechat-preview/browser/studio/syntax-presets.ts +19 -357
- package/src/wechat-preview/fixtures/all-nodes.md +2 -11
- package/src/wechat-preview/index.ts +35 -14
- package/src/wechat-preview/server/http.ts +64 -8
- package/src/wechat-preview/server/studio.test.ts +60 -1
- package/src/wechat-preview/wechat-export.integration.test.ts +49 -8
- package/src/wechat-preview/wechat-renderer.ts +134 -11
- package/src/workflow.test.ts +2 -0
- package/src/wechat-preview/assets/browser-dist/assets/style-C9-YtTIm.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var d=(function(){function e(w){return{type:w,style:"keyword"}}for(var n=e("operator"),t={type:"atom",style:"atom"},i={type:"punctuation",style:null},o={type:"axis_specifier",style:"qualifier"},l={",":i},p=["after","all","allowing","ancestor","ancestor-or-self","any","array","as","ascending","at","attribute","base-uri","before","boundary-space","by","case","cast","castable","catch","child","collation","comment","construction","contains","content","context","copy","copy-namespaces","count","decimal-format","declare","default","delete","descendant","descendant-or-self","descending","diacritics","different","distance","document","document-node","element","else","empty","empty-sequence","encoding","end","entire","every","exactly","except","external","first","following","following-sibling","for","from","ftand","ftnot","ft-option","ftor","function","fuzzy","greatest","group","if","import","in","inherit","insensitive","insert","instance","intersect","into","invoke","is","item","language","last","lax","least","let","levels","lowercase","map","modify","module","most","namespace","next","no","node","nodes","no-inherit","no-preserve","not","occurs","of","only","option","order","ordered","ordering","paragraph","paragraphs","parent","phrase","preceding","preceding-sibling","preserve","previous","processing-instruction","relationship","rename","replace","return","revalidation","same","satisfies","schema","schema-attribute","schema-element","score","self","sensitive","sentence","sentences","sequence","skip","sliding","some","stable","start","stemming","stop","strict","strip","switch","text","then","thesaurus","times","to","transform","treat","try","tumbling","type","typeswitch","union","unordered","update","updating","uppercase","using","validate","value","variable","version","weight","when","where","wildcards","window","with","without","word","words","xquery"],r=0,a=p.length;r<a;r++)l[p[r]]=e(p[r]);for(var g=["xs:anyAtomicType","xs:anySimpleType","xs:anyType","xs:anyURI","xs:base64Binary","xs:boolean","xs:byte","xs:date","xs:dateTime","xs:dateTimeStamp","xs:dayTimeDuration","xs:decimal","xs:double","xs:duration","xs:ENTITIES","xs:ENTITY","xs:float","xs:gDay","xs:gMonth","xs:gMonthDay","xs:gYear","xs:gYearMonth","xs:hexBinary","xs:ID","xs:IDREF","xs:IDREFS","xs:int","xs:integer","xs:item","xs:java","xs:language","xs:long","xs:Name","xs:NCName","xs:negativeInteger","xs:NMTOKEN","xs:NMTOKENS","xs:nonNegativeInteger","xs:nonPositiveInteger","xs:normalizedString","xs:NOTATION","xs:numeric","xs:positiveInteger","xs:precisionDecimal","xs:QName","xs:short","xs:string","xs:time","xs:token","xs:unsignedByte","xs:unsignedInt","xs:unsignedLong","xs:unsignedShort","xs:untyped","xs:untypedAtomic","xs:yearMonthDuration"],r=0,a=g.length;r<a;r++)l[g[r]]=t;for(var f=["eq","ne","lt","le","gt","ge",":=","=",">",">=","<","<=",".","|","?","and","or","div","idiv","mod","*","/","+","-"],r=0,a=f.length;r<a;r++)l[f[r]]=n;for(var v=["self::","attribute::","child::","descendant::","descendant-or-self::","parent::","ancestor::","ancestor-or-self::","following::","preceding::","following-sibling::","preceding-sibling::"],r=0,a=v.length;r<a;r++)l[v[r]]=o;return l})();function x(e,n,t){return n.tokenize=t,t(e,n)}function u(e,n){var t=e.next(),i=!1,o=_(e);if(t=="<"){if(e.match("!--",!0))return x(e,n,N);if(e.match("![CDATA",!1))return n.tokenize=E,"tag";if(e.match("?",!1))return x(e,n,A);var l=e.eat("/");e.eatSpace();for(var p="",r;r=e.eat(/[^\s\u00a0=<>\"\'\/?]/);)p+=r;return x(e,n,S(p,l))}else{if(t=="{")return s(n,{type:"codeblock"}),null;if(t=="}")return c(n),null;if(b(n))return t==">"?"tag":t=="/"&&e.eat(">")?(c(n),"tag"):"variable";if(/\d/.test(t))return e.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/),"atom";if(t==="("&&e.eat(":"))return s(n,{type:"comment"}),x(e,n,z);if(!o&&(t==='"'||t==="'"))return m(e,n,t);if(t==="$")return x(e,n,T);if(t===":"&&e.eat("="))return"keyword";if(t==="(")return s(n,{type:"paren"}),null;if(t===")")return c(n),null;if(t==="[")return s(n,{type:"bracket"}),null;if(t==="]")return c(n),null;var a=d.propertyIsEnumerable(t)&&d[t];if(o&&t==='"')for(;e.next()!=='"';);if(o&&t==="'")for(;e.next()!=="'";);a||e.eatWhile(/[\w\$_-]/);var g=e.eat(":");!e.eat(":")&&g&&e.eatWhile(/[\w\$_-]/),e.match(/^[ \t]*\(/,!1)&&(i=!0);var f=e.current();return a=d.propertyIsEnumerable(f)&&d[f],i&&!a&&(a={type:"function_call",style:"def"}),D(n)?(c(n),"variable"):((f=="element"||f=="attribute"||a.type=="axis_specifier")&&s(n,{type:"xmlconstructor"}),a?a.style:"variable")}}function z(e,n){for(var t=!1,i=!1,o=0,l;l=e.next();){if(l==")"&&t)if(o>0)o--;else{c(n);break}else l==":"&&i&&o++;t=l==":",i=l=="("}return"comment"}function I(e,n){return function(t,i){for(var o;o=t.next();)if(o==e){c(i),n&&(i.tokenize=n);break}else if(t.match("{",!1)&&h(i))return s(i,{type:"codeblock"}),i.tokenize=u,"string";return"string"}}function m(e,n,t,i){let o=I(t,i);return s(n,{type:"string",name:t,tokenize:o}),x(e,n,o)}function T(e,n){var t=/[\w\$_-]/;if(e.eat('"')){for(;e.next()!=='"';);e.eat(":")}else e.eatWhile(t),e.match(":=",!1)||e.eat(":");return e.eatWhile(t),n.tokenize=u,"variable"}function S(e,n){return function(t,i){if(t.eatSpace(),n&&t.eat(">"))return c(i),i.tokenize=u,"tag";if(t.eat("/")||s(i,{type:"tag",name:e,tokenize:u}),t.eat(">"))i.tokenize=u;else return i.tokenize=y,"tag";return"tag"}}function y(e,n){var t=e.next();return t=="/"&&e.eat(">")?(h(n)&&c(n),b(n)&&c(n),"tag"):t==">"?(h(n)&&c(n),"tag"):t=="="?null:t=='"'||t=="'"?m(e,n,t,y):(h(n)||s(n,{type:"attribute",tokenize:y}),e.eat(/[a-zA-Z_:]/),e.eatWhile(/[-a-zA-Z0-9_:.]/),e.eatSpace(),(e.match(">",!1)||e.match("/",!1))&&(c(n),n.tokenize=u),"attribute")}function N(e,n){for(var t;t=e.next();)if(t=="-"&&e.match("->",!0))return n.tokenize=u,"comment"}function E(e,n){for(var t;t=e.next();)if(t=="]"&&e.match("]",!0))return n.tokenize=u,"comment"}function A(e,n){for(var t;t=e.next();)if(t=="?"&&e.match(">",!0))return n.tokenize=u,"processingInstruction"}function b(e){return k(e,"tag")}function h(e){return k(e,"attribute")}function D(e){return k(e,"xmlconstructor")}function _(e){return e.current()==='"'?e.match(/^[^\"]+\"\:/,!1):e.current()==="'"?e.match(/^[^\"]+\'\:/,!1):!1}function k(e,n){return e.stack.length&&e.stack[e.stack.length-1].type==n}function s(e,n){e.stack.push(n)}function c(e){e.stack.pop();var n=e.stack.length&&e.stack[e.stack.length-1].tokenize;e.tokenize=n||u}const C={name:"xquery",startState:function(){return{tokenize:u,cc:[],stack:[]}},token:function(e,n){if(e.eatSpace())return null;var t=n.tokenize(e,n);return t},languageData:{commentTokens:{block:{open:"(:",close:":)"}}}};export{C as xQuery};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(e){for(var n={},r=e.split(" "),o=0;o<r.length;++o)n[r[o]]=!0;return n}var a=t("Assert BackQuote D Defun Deriv For ForEach FromFile FromString Function Integrate InverseTaylor Limit LocalSymbols Macro MacroRule MacroRulePattern NIntegrate Rule RulePattern Subst TD TExplicitSum TSum Taylor Taylor1 Taylor2 Taylor3 ToFile ToStdout ToString TraceRule Until While"),f="(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)",u="(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)",p=new RegExp(f),d=new RegExp(u),k=new RegExp(u+"?_"+u),s=new RegExp(u+"\\s*\\(");function l(e,n){var r;if(r=e.next(),r==='"')return n.tokenize=v,n.tokenize(e,n);if(r==="/"){if(e.eat("*"))return n.tokenize=h,n.tokenize(e,n);if(e.eat("/"))return e.skipToEnd(),"comment"}e.backUp(1);var o=e.match(/^(\w+)\s*\(/,!1);o!==null&&a.hasOwnProperty(o[1])&&n.scopes.push("bodied");var i=c(n);if(i==="bodied"&&r==="["&&n.scopes.pop(),(r==="["||r==="{"||r==="(")&&n.scopes.push(r),i=c(n),(i==="["&&r==="]"||i==="{"&&r==="}"||i==="("&&r===")")&&n.scopes.pop(),r===";")for(;i==="bodied";)n.scopes.pop(),i=c(n);return e.match(/\d+ *#/,!0,!1)?"qualifier":e.match(p,!0,!1)?"number":e.match(k,!0,!1)?"variableName.special":e.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":e.match(s,!0,!1)?(e.backUp(1),"variableName.function"):e.match(d,!0,!1)?"variable":e.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%|#)/,!0,!1)?"operator":"error"}function v(e,n){for(var r,o=!1,i=!1;(r=e.next())!=null;){if(r==='"'&&!i){o=!0;break}i=!i&&r==="\\"}return o&&!i&&(n.tokenize=l),"string"}function h(e,n){for(var r,o;(o=e.next())!=null;){if(r==="*"&&o==="/"){n.tokenize=l;break}r=o}return"comment"}function c(e){var n=null;return e.scopes.length>0&&(n=e.scopes[e.scopes.length-1]),n}const b={name:"yacas",startState:function(){return{tokenize:l,scopes:[]}},token:function(e,n){return e.eatSpace()?null:n.tokenize(e,n)},indent:function(e,n,r){if(e.tokenize!==l&&e.tokenize!==null)return null;var o=0;return(n==="]"||n==="];"||n==="}"||n==="};"||n===");")&&(o=-1),(e.scopes.length+o)*r.unit},languageData:{electricInput:/[{}\[\]()\;]/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};export{b as yacas};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function o(t){var n,l;t?(n=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,l=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(n=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,l=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var u=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,d=/^(n?[zc]|p[oe]?|m)\b/i,f=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,c=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{name:"z80",startState:function(){return{context:0}},token:function(e,i){if(e.column()||(i.context=0),e.eatSpace())return null;var r;if(e.eatWhile(/\w/))if(t&&e.eat(".")&&e.eatWhile(/\w/),r=e.current(),e.indentation()){if((i.context==1||i.context==4)&&u.test(r))return i.context=4,"variable";if(i.context==2&&d.test(r))return i.context=4,"variableName.special";if(n.test(r))return i.context=1,"keyword";if(l.test(r))return i.context=2,"keyword";if(i.context==4&&c.test(r))return"number";if(f.test(r))return"error"}else return e.match(c)?"number":null;else{if(e.eat(";"))return e.skipToEnd(),"comment";if(e.eat('"')){for(;(r=e.next())&&r!='"';)r=="\\"&&e.next();return"string"}else if(e.eat("'")){if(e.match(/\\?.'/))return"number"}else if(e.eat(".")||e.sol()&&e.eat("#")){if(i.context=5,e.eatWhile(/\w/))return"def"}else if(e.eat("$")){if(e.eatWhile(/[\da-f]/i))return"number"}else if(e.eat("%")){if(e.eatWhile(/[01]/))return"number"}else e.next()}return null}}}const a=o(!1),s=o(!0);export{s as ez80,a as z80};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as m,r as d,d as _,c as u,g as l,a as w,b as g,e as f,f as h}from"./assets/wechat-renderer-
|
|
1
|
+
import{E as m,r as d,d as _,c as u,g as l,a as w,b as g,e as f,f as h}from"./assets/wechat-renderer-CcHuq7M-.js";async function E(){const t=window.__ZZHUB_WECHAT_PAYLOAD__;if(!t)throw new Error("Missing __ZZHUB_WECHAT_PAYLOAD__");const e=document.getElementById("editor-host");if(!e)throw new Error("Missing editor host");const o=m.make().config(s=>{s.set(d,e),s.set(_,t.markdown)}).use(u).use(l).use(w());await o.create();const n=new DOMParser().parseFromString(o.action(g()),"text/html");for(const s of n.querySelectorAll("img")){const r=s.getAttribute("src")||"";if(r&&t.assetBaseUrl&&!/^(?:[a-z][a-z0-9+.-]*:|\/)/i.test(r)){const a=new URL(r,t.assetBaseUrl);s.setAttribute("src",a.protocol==="file:"?decodeURIComponent(a.pathname):a.href)}}const i=n.body.innerHTML,c=await f({semanticHtml:i,baseCss:h,customCss:t.customCss,structure:t.structure,editorVars:t.editorVars,theme:t.exportTheme});await o.destroy(),window.__ZZHUB_SET_RESULT__({status:"success",html:c,semanticHtml:i})}E().catch(t=>{const e=t instanceof Error?t.message:String(t);window.__ZZHUB_SET_RESULT__({status:"error",error:e})});
|
package/src/wechat-preview/assets/browser-dist/src/wechat-preview/browser/studio/studio.html
CHANGED
|
@@ -3,41 +3,60 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>
|
|
6
|
+
<title>myno — 微信公众号排版工作台</title>
|
|
7
7
|
<script type="module" crossorigin src="/studio.js"></script>
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/assets/wechat-renderer-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/style-
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/assets/wechat-renderer-CcHuq7M-.js">
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/style-Cif_gYUW.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<!-- Header -->
|
|
13
13
|
<header class="studio-header">
|
|
14
14
|
<div class="brand-section">
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
<div class="brand-icon">
|
|
16
|
+
<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2">
|
|
17
|
+
<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1-2.5-2.5Z"/>
|
|
18
|
+
<path d="M6 6h10M6 10h10M6 14h6"/>
|
|
19
|
+
</svg>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="brand-text">
|
|
22
|
+
<span class="brand-title">myno</span>
|
|
23
|
+
<span class="brand-subtitle">WeChat Visual Studio</span>
|
|
24
|
+
</div>
|
|
25
|
+
<span id="config-mode-badge" class="badge badge-subtle">账号配置</span>
|
|
18
26
|
</div>
|
|
19
27
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
28
|
+
<!-- Center Config Selector -->
|
|
29
|
+
<div class="header-center">
|
|
30
|
+
<div class="config-selector-group">
|
|
31
|
+
<label for="account-select" class="selector-label">目标配置:</label>
|
|
32
|
+
<select id="account-select" class="select-control">
|
|
24
33
|
<option value="default">默认账号 (default)</option>
|
|
25
34
|
</select>
|
|
35
|
+
<button id="btn-import-config" class="btn btn-ghost btn-sm" title="导入已有 wechat-style.json 排版配置">
|
|
36
|
+
<span>📥 导入配置</span>
|
|
37
|
+
</button>
|
|
38
|
+
<input type="file" id="file-import-config" accept=".json" style="display: none;">
|
|
39
|
+
<button id="btn-export-config" class="btn btn-ghost btn-sm" title="导出独立 wechat-style.json,可在 CLI 使用 --article-theme 引用">
|
|
40
|
+
<span>📤 导出配置</span>
|
|
41
|
+
</button>
|
|
26
42
|
</div>
|
|
43
|
+
</div>
|
|
27
44
|
|
|
28
|
-
|
|
45
|
+
<!-- Right Actions -->
|
|
46
|
+
<div class="header-actions">
|
|
47
|
+
<button id="btn-reset" class="btn btn-secondary btn-sm" title="恢复当前账号默认样式">
|
|
29
48
|
<span>🔄 重置</span>
|
|
30
49
|
</button>
|
|
31
50
|
|
|
32
|
-
<button id="btn-save" class="btn btn-primary" title="保存当前调整至本地 config.json">
|
|
33
|
-
<span>💾
|
|
51
|
+
<button id="btn-save" class="btn btn-primary btn-sm" title="保存当前调整至本地 config.json 的当前账号">
|
|
52
|
+
<span>💾 保存至账号</span>
|
|
34
53
|
</button>
|
|
35
54
|
|
|
36
|
-
<button id="btn-copy" class="btn btn-success" title="
|
|
55
|
+
<button id="btn-copy" class="btn btn-success btn-sm" title="复制包含内联样式的富文本,可直接粘贴到微信公众平台草稿箱">
|
|
37
56
|
<span>📋 一键复制到公众号</span>
|
|
38
57
|
</button>
|
|
39
58
|
|
|
40
|
-
<a href="/" class="btn" title="
|
|
59
|
+
<a href="/" class="btn btn-ghost btn-sm" title="查看最近渲染记录">
|
|
41
60
|
<span>📜 历史记录</span>
|
|
42
61
|
</a>
|
|
43
62
|
</div>
|
|
@@ -45,228 +64,260 @@
|
|
|
45
64
|
|
|
46
65
|
<!-- Body -->
|
|
47
66
|
<main class="studio-body">
|
|
48
|
-
<!-- Left:
|
|
67
|
+
<!-- Left: Style & Tuning Panel -->
|
|
49
68
|
<aside class="panel left-panel">
|
|
50
69
|
<nav class="tab-nav">
|
|
51
|
-
<button id="tab-btn-style" class="tab-btn active">🎨
|
|
52
|
-
<button id="tab-btn-syntax" class="tab-btn">🧩
|
|
70
|
+
<button id="tab-btn-style" class="tab-btn active">🎨 排版风格</button>
|
|
71
|
+
<button id="tab-btn-syntax" class="tab-btn">🧩 组件库与语法</button>
|
|
53
72
|
</nav>
|
|
54
73
|
|
|
55
74
|
<!-- Tab 1: Style Tuning -->
|
|
56
75
|
<div id="tab-content-style" class="tab-content">
|
|
57
|
-
<!--
|
|
58
|
-
<
|
|
59
|
-
<div class="section-
|
|
60
|
-
<span
|
|
76
|
+
<!-- 1. Curated Style Packs (Visual First for beginners) -->
|
|
77
|
+
<section class="config-section">
|
|
78
|
+
<div class="section-title">
|
|
79
|
+
<span>✨ 精选排版风格 (一键套用)</span>
|
|
61
80
|
</div>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
<div class="form-label">
|
|
65
|
-
<span>正文字号</span>
|
|
66
|
-
<span id="val-font-size" class="form-val">16px</span>
|
|
67
|
-
</div>
|
|
68
|
-
<input type="range" id="input-font-size" class="slider-input" min="14" max="18" step="1" value="16">
|
|
81
|
+
<div id="style-packs-grid" class="style-packs-grid">
|
|
82
|
+
<!-- Populated dynamically by studio.ts -->
|
|
69
83
|
</div>
|
|
84
|
+
</section>
|
|
70
85
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
</div>
|
|
76
|
-
<input type="range" id="input-line-height" class="slider-input" min="1.5" max="2.2" step="0.02" value="1.84">
|
|
86
|
+
<!-- 2. Quick Typography Tuning (Segmented controls) -->
|
|
87
|
+
<section class="config-section">
|
|
88
|
+
<div class="section-title">
|
|
89
|
+
<span>📐 快速版心调节</span>
|
|
77
90
|
</div>
|
|
78
91
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
<span
|
|
92
|
+
<!-- Font size segmented control -->
|
|
93
|
+
<div class="control-group">
|
|
94
|
+
<div class="control-label">
|
|
95
|
+
<span>正文字号</span>
|
|
96
|
+
<span id="val-font-size" class="control-val">16px</span>
|
|
83
97
|
</div>
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<
|
|
90
|
-
<span id="val-para-spacing" class="form-val">1.18em</span>
|
|
98
|
+
<div id="seg-font-size" class="segmented-control">
|
|
99
|
+
<button type="button" class="seg-btn" data-val="14">14 较小</button>
|
|
100
|
+
<button type="button" class="seg-btn" data-val="15">15 适中</button>
|
|
101
|
+
<button type="button" class="seg-btn active" data-val="16">16 标准</button>
|
|
102
|
+
<button type="button" class="seg-btn" data-val="17">17 较大</button>
|
|
103
|
+
<button type="button" class="seg-btn" data-val="18">18 大号</button>
|
|
91
104
|
</div>
|
|
92
|
-
<input type="range" id="input-
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
|
|
96
|
-
<!-- Colors -->
|
|
97
|
-
<div class="config-section">
|
|
98
|
-
<div class="section-label">
|
|
99
|
-
<span>🎨 颜色系统</span>
|
|
105
|
+
<input type="range" id="input-font-size" class="slider-input hidden-slider" min="14" max="18" step="1" value="16">
|
|
100
106
|
</div>
|
|
101
107
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
108
|
+
<!-- Line height segmented control -->
|
|
109
|
+
<div class="control-group">
|
|
110
|
+
<div class="control-label">
|
|
111
|
+
<span>正文行距</span>
|
|
112
|
+
<span id="val-line-height" class="control-val">1.84</span>
|
|
113
|
+
</div>
|
|
114
|
+
<div id="seg-line-height" class="segmented-control">
|
|
115
|
+
<button type="button" class="seg-btn" data-val="1.65">紧凑 1.65</button>
|
|
116
|
+
<button type="button" class="seg-btn active" data-val="1.84">标准 1.84</button>
|
|
117
|
+
<button type="button" class="seg-btn" data-val="2.0">疏朗 2.0</button>
|
|
105
118
|
</div>
|
|
106
|
-
<
|
|
107
|
-
<option value="">-- 选择推荐调色盘 (一键应用) --</option>
|
|
108
|
-
</select>
|
|
109
|
-
<div id="palette-desc" class="preset-desc">可一键应用 Kinfolk 森林绿、Loro Piana 燕麦大地、纽约客石板蓝等</div>
|
|
119
|
+
<input type="range" id="input-line-height" class="slider-input hidden-slider" min="1.5" max="2.2" step="0.02" value="1.84">
|
|
110
120
|
</div>
|
|
111
121
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
122
|
+
<!-- Brand color swatches -->
|
|
123
|
+
<div class="control-group">
|
|
124
|
+
<div class="control-label">
|
|
125
|
+
<span>品牌主题色</span>
|
|
115
126
|
</div>
|
|
116
|
-
<div class="color-
|
|
127
|
+
<div id="color-swatches" class="color-swatches-row">
|
|
128
|
+
<button type="button" class="swatch-btn" style="background:#ca6093;" data-color="#ca6093" title="胭脂粉"></button>
|
|
129
|
+
<button type="button" class="swatch-btn" style="background:#18181b;" data-color="#18181b" title="纸墨黑"></button>
|
|
130
|
+
<button type="button" class="swatch-btn" style="background:#2563eb;" data-color="#2563eb" title="科技蓝"></button>
|
|
131
|
+
<button type="button" class="swatch-btn" style="background:#059669;" data-color="#059669" title="薄荷绿"></button>
|
|
132
|
+
<button type="button" class="swatch-btn" style="background:#7c3aed;" data-color="#7c3aed" title="极光紫"></button>
|
|
133
|
+
<button type="button" class="swatch-btn" style="background:#945938;" data-color="#945938" title="焦糖陶土"></button>
|
|
134
|
+
<button type="button" class="swatch-btn" style="background:#881337;" data-color="#881337" title="丝绒酒红"></button>
|
|
135
|
+
<button type="button" class="swatch-btn" style="background:#0284c7;" data-color="#0284c7" title="天蓝"></button>
|
|
136
|
+
</div>
|
|
137
|
+
<div class="color-picker-inline">
|
|
117
138
|
<input type="color" id="picker-brand-color" class="color-picker" value="#ca6093">
|
|
118
139
|
<input type="text" id="hex-brand-color" class="color-hex" value="#ca6093">
|
|
119
140
|
</div>
|
|
120
141
|
</div>
|
|
121
142
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
143
|
+
<!-- H2 visual style pills -->
|
|
144
|
+
<div class="control-group">
|
|
145
|
+
<div class="control-label">
|
|
146
|
+
<span>二级标题 (H2) 风格</span>
|
|
125
147
|
</div>
|
|
126
|
-
<div
|
|
127
|
-
<
|
|
128
|
-
<
|
|
148
|
+
<div id="seg-h2-preset" class="pills-grid">
|
|
149
|
+
<button type="button" class="pill-btn active" data-preset="pillar">竖条呼吸柱</button>
|
|
150
|
+
<button type="button" class="pill-btn" data-preset="gradient-pill">渐变胶囊</button>
|
|
151
|
+
<button type="button" class="pill-btn" data-preset="bottom-line">底部细线</button>
|
|
152
|
+
<button type="button" class="pill-btn" data-preset="contrast-green">绿底反差</button>
|
|
153
|
+
<button type="button" class="pill-btn" data-preset="card-tag">上标卡片</button>
|
|
154
|
+
<button type="button" class="pill-btn" data-preset="plain">极简纯字</button>
|
|
129
155
|
</div>
|
|
130
156
|
</div>
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
<
|
|
137
|
-
|
|
138
|
-
|
|
157
|
+
</section>
|
|
158
|
+
|
|
159
|
+
<!-- 3. Advanced Accordion (Collapsed by default for clarity) -->
|
|
160
|
+
<details class="accordion-section">
|
|
161
|
+
<summary class="accordion-summary">
|
|
162
|
+
<span>⚙️ 进阶颜色与排版微调</span>
|
|
163
|
+
<span class="accordion-arrow">›</span>
|
|
164
|
+
</summary>
|
|
165
|
+
<div class="accordion-body">
|
|
166
|
+
<!-- Palette Selector -->
|
|
167
|
+
<div class="control-group">
|
|
168
|
+
<div class="control-label">
|
|
169
|
+
<span>预设经典色盘</span>
|
|
170
|
+
</div>
|
|
171
|
+
<select id="palette-select" class="select-control full-width">
|
|
172
|
+
<option value="">-- 选择推荐调色盘 (一键应用) --</option>
|
|
173
|
+
</select>
|
|
174
|
+
<div id="palette-desc" class="form-hint"></div>
|
|
139
175
|
</div>
|
|
140
|
-
</div>
|
|
141
176
|
|
|
142
|
-
|
|
143
|
-
<div class="
|
|
144
|
-
<span
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
177
|
+
<!-- Fine Colors -->
|
|
178
|
+
<div class="control-group">
|
|
179
|
+
<div class="control-label"><span>正文字色 (Body Text)</span></div>
|
|
180
|
+
<div class="color-picker-inline">
|
|
181
|
+
<input type="color" id="picker-text-color" class="color-picker" value="#292526">
|
|
182
|
+
<input type="text" id="hex-text-color" class="color-hex" value="#292526">
|
|
183
|
+
</div>
|
|
149
184
|
</div>
|
|
150
|
-
</div>
|
|
151
185
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
<
|
|
186
|
+
<div class="control-group">
|
|
187
|
+
<div class="control-label"><span>二级标题字色 (H2)</span></div>
|
|
188
|
+
<div class="color-picker-inline">
|
|
189
|
+
<input type="color" id="picker-h2-color" class="color-picker" value="#1f1b1c">
|
|
190
|
+
<input type="text" id="hex-h2-color" class="color-hex" value="#1f1b1c">
|
|
191
|
+
</div>
|
|
155
192
|
</div>
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<
|
|
193
|
+
|
|
194
|
+
<div class="control-group">
|
|
195
|
+
<div class="control-label"><span>三级标题字色 (H3)</span></div>
|
|
196
|
+
<div class="color-picker-inline">
|
|
197
|
+
<input type="color" id="picker-h3-color" class="color-picker" value="#5c5658">
|
|
198
|
+
<input type="text" id="hex-h3-color" class="color-hex" value="#5c5658">
|
|
199
|
+
</div>
|
|
159
200
|
</div>
|
|
160
|
-
</div>
|
|
161
201
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
<
|
|
202
|
+
<div class="control-group">
|
|
203
|
+
<div class="control-label"><span>引用边框与重点色</span></div>
|
|
204
|
+
<div class="color-picker-inline">
|
|
205
|
+
<input type="color" id="picker-quote-color" class="color-picker" value="#e8c9d7">
|
|
206
|
+
<input type="text" id="hex-quote-color" class="color-hex" value="#e8c9d7">
|
|
207
|
+
</div>
|
|
165
208
|
</div>
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
<
|
|
209
|
+
|
|
210
|
+
<div class="control-group">
|
|
211
|
+
<div class="control-label"><span>分割线颜色 (Divider)</span></div>
|
|
212
|
+
<div class="color-picker-inline">
|
|
213
|
+
<input type="color" id="picker-divider-color" class="color-picker" value="#e2dcdf">
|
|
214
|
+
<input type="text" id="hex-divider-color" class="color-hex" value="#e2dcdf">
|
|
215
|
+
</div>
|
|
169
216
|
</div>
|
|
170
|
-
</div>
|
|
171
|
-
</div>
|
|
172
217
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
</div>
|
|
218
|
+
<!-- Fine Spacing -->
|
|
219
|
+
<div class="control-group">
|
|
220
|
+
<div class="control-label">
|
|
221
|
+
<span>字间距 (Letter Spacing)</span>
|
|
222
|
+
<span id="val-letter-spacing" class="control-val">0.012em</span>
|
|
223
|
+
</div>
|
|
224
|
+
<input type="range" id="input-letter-spacing" class="slider-input" min="0" max="0.05" step="0.002" value="0.012">
|
|
225
|
+
</div>
|
|
182
226
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
227
|
+
<div class="control-group">
|
|
228
|
+
<div class="control-label">
|
|
229
|
+
<span>段落间距 (Margin Bottom)</span>
|
|
230
|
+
<span id="val-para-spacing" class="control-val">1.18em</span>
|
|
231
|
+
</div>
|
|
232
|
+
<input type="range" id="input-para-spacing" class="slider-input" min="0.8" max="2.0" step="0.01" value="1.18">
|
|
233
|
+
</div>
|
|
188
234
|
|
|
189
|
-
|
|
190
|
-
<
|
|
191
|
-
<
|
|
192
|
-
|
|
235
|
+
<!-- Structure -->
|
|
236
|
+
<div class="control-group">
|
|
237
|
+
<label class="switch-row">
|
|
238
|
+
<span>二级标题自动编号 (01, 02)</span>
|
|
193
239
|
<input type="checkbox" id="switch-numbered-headings">
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
</label>
|
|
197
|
-
</div>
|
|
240
|
+
</label>
|
|
241
|
+
</div>
|
|
198
242
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
<
|
|
243
|
+
<div class="control-group">
|
|
244
|
+
<div class="control-label"><span>标题前缀标签 (例: CHAPTER)</span></div>
|
|
245
|
+
<input type="text" id="input-heading-label" class="text-input" placeholder="如:CHAPTER">
|
|
202
246
|
</div>
|
|
203
|
-
<input type="text" id="input-heading-label" class="color-hex" style="width:100%" placeholder="如:CHAPTER">
|
|
204
|
-
</div>
|
|
205
247
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
<
|
|
248
|
+
<div class="control-group">
|
|
249
|
+
<div class="control-label"><span>引言前缀标签 (例: 摘录)</span></div>
|
|
250
|
+
<input type="text" id="input-quote-label" class="text-input" placeholder="如:摘录">
|
|
209
251
|
</div>
|
|
210
|
-
<input type="text" id="input-quote-label" class="color-hex" style="width:100%" placeholder="如:摘录">
|
|
211
|
-
</div>
|
|
212
|
-
</div>
|
|
213
252
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
253
|
+
<!-- Syntax Preset Categories -->
|
|
254
|
+
<div class="control-group">
|
|
255
|
+
<div class="control-label"><span>各语法节点风格预设</span></div>
|
|
256
|
+
<div id="syntax-preset-container">
|
|
257
|
+
<!-- Populated dynamically -->
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<!-- Custom CSS -->
|
|
262
|
+
<div class="control-group">
|
|
263
|
+
<div class="control-label"><span>自定义 CSS 覆盖</span></div>
|
|
264
|
+
<textarea id="input-custom-css" class="code-textarea" placeholder="/* 在此处输入自定义 CSS 规则,实时生效 */ .milkdown .editor p { text-align: justify; }"></textarea>
|
|
265
|
+
</div>
|
|
218
266
|
</div>
|
|
219
|
-
|
|
220
|
-
</div>
|
|
267
|
+
</details>
|
|
221
268
|
</div>
|
|
222
269
|
|
|
223
|
-
<!-- Tab 2: Syntax Cheatsheet -->
|
|
270
|
+
<!-- Tab 2: Syntax & Components Cheatsheet -->
|
|
224
271
|
<div id="tab-content-syntax" class="tab-content" style="display: none;">
|
|
272
|
+
<div class="syntax-guide-intro">
|
|
273
|
+
<span>💡 提示:在中间编辑器中,输入 <code>/</code> 即可快速唤起微信专属组件菜单!</span>
|
|
274
|
+
</div>
|
|
225
275
|
<div id="syntax-card-list">
|
|
226
276
|
<!-- Populated dynamically by studio.ts -->
|
|
227
277
|
</div>
|
|
228
278
|
</div>
|
|
229
279
|
</aside>
|
|
230
280
|
|
|
231
|
-
<!-- Center:
|
|
281
|
+
<!-- Center: Editor Panel -->
|
|
232
282
|
<section class="panel editor-panel">
|
|
233
283
|
<div class="panel-header">
|
|
234
|
-
<div class="
|
|
235
|
-
<
|
|
236
|
-
<
|
|
284
|
+
<div class="editor-mode-toggle">
|
|
285
|
+
<button id="btn-mode-visual" class="mode-btn active" title="Milkdown 所见即所得编辑">✨ 所见即所得</button>
|
|
286
|
+
<button id="btn-mode-source" class="mode-btn" title="查看并编辑 Markdown 源码">📝 源码模式</button>
|
|
237
287
|
</div>
|
|
238
|
-
<div class="editor-
|
|
239
|
-
<button id="btn-load-sample" class="btn" title="
|
|
240
|
-
<button id="btn-clear-md" class="btn" title="清空编辑器内容">🗑️ 清空</button>
|
|
288
|
+
<div class="editor-header-actions">
|
|
289
|
+
<button id="btn-load-sample" class="btn btn-ghost btn-sm" title="加载全语法官方验收稿">📄 官方测试稿</button>
|
|
290
|
+
<button id="btn-clear-md" class="btn btn-ghost btn-sm" title="清空编辑器内容">🗑️ 清空</button>
|
|
241
291
|
</div>
|
|
242
292
|
</div>
|
|
243
293
|
|
|
244
|
-
|
|
294
|
+
<!-- Interactive Crepe Editor Surface -->
|
|
295
|
+
<div id="editor-workspace" class="editor-workspace">
|
|
296
|
+
<div id="milkdown-editor-root" class="milkdown-editor-surface"></div>
|
|
297
|
+
<textarea id="editor-markdown" class="editor-textarea-source" spellcheck="false" placeholder="在此粘贴或输入 Markdown 文章内容..." style="display: none;"></textarea>
|
|
298
|
+
</div>
|
|
245
299
|
|
|
246
300
|
<div class="editor-footer">
|
|
247
301
|
<span id="editor-stats">字数: 0 字 | 预计阅读: 1 分钟</span>
|
|
248
|
-
<span
|
|
302
|
+
<span class="editor-sync-indicator">⚡ 所见即所得实时排版</span>
|
|
249
303
|
</div>
|
|
250
304
|
</section>
|
|
251
305
|
|
|
252
|
-
<!-- Right:
|
|
306
|
+
<!-- Right: Mobile Device Simulation (430px) -->
|
|
253
307
|
<section class="panel preview-panel">
|
|
254
308
|
<div class="panel-header">
|
|
255
309
|
<div class="panel-title">
|
|
256
|
-
<span
|
|
257
|
-
<span>微信手机仿真视口 (430px)</span>
|
|
258
|
-
</div>
|
|
259
|
-
<div>
|
|
260
|
-
<button id="btn-toggle-view" class="btn" style="font-size: 11px;">🔍 查看 HTML 源码</button>
|
|
310
|
+
<span>📱 手机仿真视口 (430px)</span>
|
|
261
311
|
</div>
|
|
312
|
+
<button id="btn-toggle-view" class="btn btn-ghost btn-xs">🔍 HTML 源码</button>
|
|
262
313
|
</div>
|
|
263
314
|
|
|
264
|
-
<div class="preview-container">
|
|
315
|
+
<div class="preview-scroll-container">
|
|
265
316
|
<!-- Phone Simulator Frame -->
|
|
266
317
|
<div class="device-frame">
|
|
267
318
|
<div class="device-notch-bar">
|
|
268
319
|
<span>9:41</span>
|
|
269
|
-
<span
|
|
320
|
+
<span class="device-app-title">公众号正文</span>
|
|
270
321
|
<span>100% 🔋</span>
|
|
271
322
|
</div>
|
|
272
323
|
<div id="preview-screen" class="device-screen">
|
|
@@ -275,8 +326,8 @@
|
|
|
275
326
|
</div>
|
|
276
327
|
|
|
277
328
|
<!-- HTML Code Viewer (Hidden by default) -->
|
|
278
|
-
<div id="html-source-container" style="display: none;
|
|
279
|
-
<textarea id="html-source-code" class="
|
|
329
|
+
<div id="html-source-container" class="html-source-box" style="display: none;">
|
|
330
|
+
<textarea id="html-source-code" class="code-textarea" readonly></textarea>
|
|
280
331
|
</div>
|
|
281
332
|
</div>
|
|
282
333
|
</section>
|
|
@@ -285,9 +336,8 @@
|
|
|
285
336
|
<!-- Toast Notification -->
|
|
286
337
|
<div id="toast-container" class="toast-container"></div>
|
|
287
338
|
|
|
288
|
-
<!-- Hidden Milkdown Engine Mount Host -->
|
|
289
|
-
<div id="studio-editor-host"></div>
|
|
339
|
+
<!-- Hidden Milkdown Engine Mount Host (if needed for background AST juice conversion) -->
|
|
340
|
+
<div id="studio-editor-host" style="display: none;"></div>
|
|
290
341
|
|
|
291
|
-
<!-- Studio Script -->
|
|
292
342
|
</body>
|
|
293
343
|
</html>
|