[{"data":1,"prerenderedAt":557},["ShallowReactive",2],{"quirekit-doc:\u002Fplugins\u002Fconfiguration":3},{"id":4,"title":5,"body":6,"description":547,"extension":548,"keywords":549,"locale":550,"meta":551,"navigation":186,"order":165,"path":552,"section":553,"seo":554,"stem":555,"__hash__":556},"docs\u002Fplugins\u002Fconfiguration.zh-CN.md","配置插件",{"type":7,"value":8,"toc":539},"minimark",[9,22,26,35,143,146,149,152,235,241,254,334,341,344,405,411,448,470,473,476,480,483,490,499,512,515,518,535],[10,11,12,13,17,18,21],"p",{},"假设产品只允许一、二级标题。需要修改的是 Heading 的 ",[14,15,16],"code",{},"levels"," 配置：它决定这个编辑器接受哪些标题级别。把当前段落改成二级标题，则是运行时的 ",[14,19,20],{},"toggleHeading"," 命令。这两个操作发生在不同阶段。",[23,24,25],"h2",{"id":25},"先找对装配位置",[10,27,28,29,34],{},"先查看参考页顶部的 Classic、Block 状态及所需预设，详细规则见",[30,31,33],"a",{"href":32},"\u002Fplugins\u002Fcompatibility","选择编辑器与接入方式","。适用范围与许可标签分别判断。",[36,37,38,54],"table",{},[39,40,41],"thead",{},[42,43,44,48,51],"tr",{},[45,46,47],"th",{},"你接入的是什么",[45,49,50],{},"放在哪里",[45,52,53],{},"例子",[55,56,57,72,84,98,111,128],"tbody",{},[42,58,59,63,69],{},[60,61,62],"td",{},"文档节点、文字格式、编辑行为、View 注册",[60,64,65,66],{},"Core 的 ",[14,67,68],{},"extensions",[60,70,71],{},"Heading、Link、Search、canvasViewExtension",[42,73,74,77,81],{},[60,75,76],{},"一组 Core 扩展",[60,78,65,79],{},[14,80,68],{},[60,82,83],{},"StarterKit、TextStyleKit",[42,85,86,89,95],{},[60,87,88],{},"产品的菜单、侧栏、文件服务",[60,90,91,92],{},"Classic 的 ",[14,93,94],{},"plugins",[60,96,97],{},"createClassicWordDocxPlugin、createClassicEditorPdfPlugin",[42,99,100,103,108],{},[60,101,102],{},"完整产品装配策略",[60,104,91,105],{},[14,106,107],{},"preset",[60,109,110],{},"createClassicWordPreset、createClassicWordProPreset",[42,112,113,116,125],{},[60,114,115],{},"Block 默认内容与图形工作区选项",[60,117,118,121,122,124],{},[14,119,120],{},"createBlockEditor"," 的 ",[14,123,107],{}," 配置对象",[60,126,127],{},"starterKit、flowchart、mindMap",[42,129,130,133,140],{},[60,131,132],{},"Block 附加能力数组",[60,134,135,136,121,138],{},"展开到 ",[14,137,120],{},[14,139,68],{},[60,141,142],{},"createBlockTableExtensions、createBlockNumberingExtensions",[10,144,145],{},"名称中带 Classic 的扩展也可能仍是 Core Extension，例如 ClassicWordTable。以每页的接入说明为准，不能只按名字猜。",[23,147,148],{"id":148},"配置一个预设里的插件",[10,150,151],{},"StarterKit 已包含 Heading，直接改它的子项，不要再追加一个 Heading。",[153,154,159],"pre",{"className":155,"code":156,"language":157,"meta":158,"style":158},"language-ts shiki shiki-themes github-light github-light github-dark","import { StarterKit } from '@quirekit\u002Fstarter-kit'\n\nconst extensions = [\n  StarterKit.configure({ heading: { levels: [1, 2] } }),\n]\n","ts","",[14,160,161,181,188,204,229],{"__ignoreMap":158},[162,163,166,170,174,177],"span",{"class":164,"line":165},"line",1,[162,167,169],{"class":168},"sDD9d","import",[162,171,173],{"class":172},"sVPnS"," { StarterKit } ",[162,175,176],{"class":168},"from",[162,178,180],{"class":179},"s-HEn"," '@quirekit\u002Fstarter-kit'\n",[162,182,184],{"class":164,"line":183},2,[162,185,187],{"emptyLinePlaceholder":186},true,"\n",[162,189,191,194,198,201],{"class":164,"line":190},3,[162,192,193],{"class":168},"const",[162,195,197],{"class":196},"sUNQB"," extensions",[162,199,200],{"class":168}," =",[162,202,203],{"class":172}," [\n",[162,205,207,210,214,217,220,223,226],{"class":164,"line":206},4,[162,208,209],{"class":172},"  StarterKit.",[162,211,213],{"class":212},"sgQzM","configure",[162,215,216],{"class":172},"({ heading: { levels: [",[162,218,219],{"class":196},"1",[162,221,222],{"class":172},", ",[162,224,225],{"class":196},"2",[162,227,228],{"class":172},"] } }),\n",[162,230,232],{"class":164,"line":231},5,[162,233,234],{"class":172},"]\n",[10,236,237,238,240],{},"将这个数组交给 Editor 的 ",[14,239,68],{},"。创建后的标题解析、命令和快捷键都只接受这两个级别，宿主工具栏也应只提供相应入口。",[10,242,243,244,247,248,250,251,253],{},"如果需要自己提供同名实现，先把预设的对应项设为 ",[14,245,246],{},"false","，再装替代扩展。只有字段类型允许 ",[14,249,246],{}," 时才能这样关闭，不要给任意配置都传 ",[14,252,246],{},"。",[153,255,257],{"className":155,"code":256,"language":157,"meta":158,"style":158},"import { StarterKit } from '@quirekit\u002Fstarter-kit'\nimport { Heading } from '@quirekit\u002Fextension-heading'\n\nconst extensions = [\n  StarterKit.configure({ heading: false }),\n  Heading.configure({ levels: [1, 2] }),\n]\n",[14,258,259,269,281,285,295,309,329],{"__ignoreMap":158},[162,260,261,263,265,267],{"class":164,"line":165},[162,262,169],{"class":168},[162,264,173],{"class":172},[162,266,176],{"class":168},[162,268,180],{"class":179},[162,270,271,273,276,278],{"class":164,"line":183},[162,272,169],{"class":168},[162,274,275],{"class":172}," { Heading } ",[162,277,176],{"class":168},[162,279,280],{"class":179}," '@quirekit\u002Fextension-heading'\n",[162,282,283],{"class":164,"line":190},[162,284,187],{"emptyLinePlaceholder":186},[162,286,287,289,291,293],{"class":164,"line":206},[162,288,193],{"class":168},[162,290,197],{"class":196},[162,292,200],{"class":168},[162,294,203],{"class":172},[162,296,297,299,301,304,306],{"class":164,"line":231},[162,298,209],{"class":172},[162,300,213],{"class":212},[162,302,303],{"class":172},"({ heading: ",[162,305,246],{"class":196},[162,307,308],{"class":172}," }),\n",[162,310,312,315,317,320,322,324,326],{"class":164,"line":311},6,[162,313,314],{"class":172},"  Heading.",[162,316,213],{"class":212},[162,318,319],{"class":172},"({ levels: [",[162,321,219],{"class":196},[162,323,222],{"class":172},[162,325,225],{"class":196},[162,327,328],{"class":172},"] }),\n",[162,330,332],{"class":164,"line":331},7,[162,333,234],{"class":172},[10,335,336,337,253],{},"这两种方式选一种即可。上面只展示要修改的装配片段，完整容器与挂载见",[30,338,340],{"href":339},"\u002Fguide\u002Fquick-start","快速开始",[23,342,343],{"id":343},"配置和正文内容分开",[36,345,346,359],{},[39,347,348],{},[42,349,350,353,356],{},[45,351,352],{},"内容",[45,354,355],{},"生命周期",[45,357,358],{},"示例",[55,360,361,372,383,394],{},[42,362,363,366,369],{},[60,364,365],{},"插件 options",[60,367,368],{},"创建或装配扩展时决定",[60,370,371],{},"Heading 的 levels",[42,373,374,377,380],{},[60,375,376],{},"节点、标记属性",[60,378,379],{},"保存到规范文档，通过命令修改",[60,381,382],{},"当前标题的 level、链接的 href",[42,384,385,388,391],{},[60,386,387],{},"storage",[60,389,390],{},"当前编辑器的运行状态或读取接口",[60,392,393],{},"characterCount.characters()",[42,395,396,399,402],{},[60,397,398],{},"宿主服务",[60,400,401],{},"由应用创建和释放",[60,403,404],{},"校对 provider、图形工作区、网络连接",[10,406,407,410],{},[14,408,409],{},".configure()"," 返回扩展的配置副本，不会把一个已经挂载的实例就地改造。已有文档中的二级标题也不会因为你改了配置对象自动变成一级；需要修改正文时调用命令。",[153,412,414],{"className":155,"code":413,"language":157,"meta":158,"style":158},"editor.chain().focus().toggleHeading({ level: 2 }).run()\n",[14,415,416],{"__ignoreMap":158},[162,417,418,421,424,427,430,432,434,437,439,442,445],{"class":164,"line":165},[162,419,420],{"class":172},"editor.",[162,422,423],{"class":212},"chain",[162,425,426],{"class":172},"().",[162,428,429],{"class":212},"focus",[162,431,426],{"class":172},[162,433,20],{"class":212},[162,435,436],{"class":172},"({ level: ",[162,438,225],{"class":196},[162,440,441],{"class":172}," }).",[162,443,444],{"class":212},"run",[162,446,447],{"class":172},"()\n",[10,449,450,451,453,454,457,458,461,462,465,466,253],{},"命令返回 ",[14,452,246],{}," 时不应继续显示成功。例如当前 Heading 只允许一、二级，传 ",[14,455,456],{},"level: 3"," 会被拒绝。接界面时使用 ",[14,459,460],{},"editor.can()","、",[14,463,464],{},"editor.isActive()"," 与事务订阅，见",[30,467,469],{"href":468},"\u002Fbuild\u002Fcommands","把命令接到产品界面",[23,471,472],{"id":472},"试一下配置后的行为",[10,474,475],{},"下面允许一、二级标题。先点二级标题，再尝试三级：二级操作会更新正文，三级操作返回失败并保留原文。源码只包含当前例程需要的创建、按钮和销毁逻辑。",[477,478],"docs-demo",{"name":479},"plugins\u002Fconfiguration",[23,481,482],{"id":482},"读懂每页的默认值",[10,484,485,486,489],{},"配置页列出当前入口自己的默认值。预设可能再次覆盖它：例如直接创建 Proofing 时 provider 为 ",[14,487,488],{},"null","，完整 Word kit 可选择默认校对服务。应同时阅读你实际使用的装配层。",[10,491,492,495,496,498],{},[14,493,494],{},"undefined"," 表示没有显式传值，子扩展或宿主装配仍可能选择回退。StarterKit 的子项未设置时默认启用，配置对象覆盖该子项的选项；",[14,497,246],{}," 才关闭它。",[10,500,501,503,504,507,508,511],{},[14,502,488],{}," 往往表示没有接入某个服务，例如图形 ",[14,505,506],{},"open"," 或校对 ",[14,509,510],{},"provider","。它不代表扩展会自动请求网络服务。哪些能力需要宿主端口，每页的用途和配置说明都会分别指出。",[23,513,514],{"id":514},"安装后还需要什么",[10,516,517],{},"只有文档模型不会自动产生全部产品界面，也不能保证每种 View 和导出格式都能呈现它。按所需效果检查三个地方：当前 View 是否支持该能力；图形、校对或协作需要的宿主服务是否已接入；保存与导出是否保留相应内容。",[10,519,520,521,525,526,530,531,253],{},"从",[30,522,524],{"href":523},"\u002Fplugins","全部插件","进入具体能力的参考页。想做完整产品时继续",[30,527,529],{"href":528},"\u002Fbuild","构建产品","；产品文件服务的例程见",[30,532,534],{"href":533},"\u002Fbuild\u002Fproduct-plugin","开发产品插件",[536,537,538],"style",{},"html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":158,"searchDepth":183,"depth":183,"links":540},[541,542,543,544,545,546],{"id":25,"depth":183,"text":25},{"id":148,"depth":183,"text":148},{"id":343,"depth":183,"text":343},{"id":472,"depth":183,"text":472},{"id":482,"depth":183,"text":482},{"id":514,"depth":183,"text":514},"先判断装配位置，再区分创建配置、文档属性、命令和运行状态。","md",null,"zh-CN",{},"\u002Fplugins\u002Fconfiguration","插件总览",{"title":5,"description":547},"plugins\u002Fconfiguration.zh-CN","iHpt4dAI8jUoz2601XEBCkVWmf0CPmZLNgV2887qN5U",1793045210727]