[{"data":1,"prerenderedAt":399},["ShallowReactive",2],{"quirekit-doc:\u002Fapi\u002Fextensions":3},{"id":4,"title":5,"body":6,"description":388,"extension":389,"keywords":390,"locale":391,"meta":392,"navigation":393,"order":383,"path":394,"section":395,"seo":396,"stem":397,"__hash__":398},"docs\u002Fapi\u002Fextensions.zh-CN.md","扩展：配置、贡献与能力合同",{"type":7,"value":8,"toc":381},"minimark",[9,13,211,226,229,340,351,355,358,362,365,368,371],[10,11,12],"h2",{"id":12},"配置与组合",[14,15,16,32],"table",{},[17,18,19],"thead",{},[20,21,22,26,29],"tr",{},[23,24,25],"th",{},"入口\u002F钩子",[23,27,28],{},"返回或职责",[23,30,31],{},"约束",[33,34,35,50,67,80,93,106,119,132,148,165,178,194],"tbody",{},[20,36,37,44,47],{},[38,39,40],"td",{},[41,42,43],"code",{},"Extension.create(config)",[38,45,46],{},"行为扩展定义",[38,48,49],{},"不新增 Schema 节点",[20,51,52,61,64],{},[38,53,54,57,58],{},[41,55,56],{},"Node.create(config)"," \u002F ",[41,59,60],{},"Mark.create(config)",[38,62,63],{},"节点\u002F标记定义",[38,65,66],{},"Node 的 group\u002Fcontent、Mark 的约束进入同一个 Schema",[20,68,69,74,77],{},[38,70,71],{},[41,72,73],{},".configure(options)",[38,75,76],{},"配置后的扩展",[38,78,79],{},"为每个产品实例独立装配，不能修改共享全局 options",[20,81,82,87,90],{},[38,83,84],{},[41,85,86],{},".extend(config)",[38,88,89],{},"在原定义上扩展",[38,91,92],{},"有意替换同名能力，检查调用原 hook 的方式和顺序",[20,94,95,100,103],{},[38,96,97],{},[41,98,99],{},"addOptions()",[38,101,102],{},"默认配置",[38,104,105],{},"配置不是持久正文",[20,107,108,113,116],{},[38,109,110],{},[41,111,112],{},"addStorage()",[38,114,115],{},"实例状态",[38,117,118],{},"不把应持久化的业务属性藏进 storage",[20,120,121,126,129],{},[38,122,123],{},[41,124,125],{},"addExtensions()",[38,127,128],{},"子扩展数组",[38,130,131],{},"预设或聚合包的组合点，避免重复 Schema 所有者",[20,133,134,142,145],{},[38,135,136,57,139],{},[41,137,138],{},"addAttributes()",[41,140,141],{},"addGlobalAttributes()",[38,143,144],{},"属性定义",[38,146,147],{},"明确默认值、解析、序列化和迁移",[20,149,150,155,158],{},[38,151,152],{},[41,153,154],{},"addCommands()",[38,156,157],{},"raw command factories",[38,159,160,161,164],{},"增强 ",[41,162,163],{},"Commands\u003CReturnType>","，commands\u002Fchain\u002Fcan 使用同一类型",[20,166,167,172,175],{},[38,168,169],{},[41,170,171],{},"addKeyboardShortcuts()",[38,173,174],{},"按键映射",[38,176,177],{},"调同一命令，返回是否处理",[20,179,180,188,191],{},[38,181,182,57,185],{},[41,183,184],{},"addInputRules()",[41,186,187],{},"addPasteRules()",[38,189,190],{},"输入\u002F粘贴规则",[38,192,193],{},"与现有历史和 Schema 一起验证",[20,195,196,201,204],{},[38,197,198],{},[41,199,200],{},"addProseMirrorPlugins()",[38,202,203],{},"PM plugins",[38,205,206,207,210],{},"沿用当前 ",[41,208,209],{},"@quirekit\u002Fpm"," 身份，不混装另一份上游内核",[212,213,214,215,220,221,225],"p",{},"最小行为例程见",[216,217,219],"a",{"href":218},"\u002Fplugins\u002Fcustom","自定义插件","；包含规范内容与 retained View 的完整例程见",[216,222,224],{"href":223},"\u002Fbuild\u002Fextension","内容扩展","。",[10,227,228],{"id":228},"能力贡献的所有者",[14,230,231,244],{},[17,232,233],{},[20,234,235,238,241],{},[23,236,237],{},"钩子",[23,239,240],{},"下游消费方",[23,242,243],{},"不是自动获得的能力",[33,245,246,259,272,285,298,314,327],{},[20,247,248,253,256],{},[38,249,250],{},[41,251,252],{},"addViewAdapters()",[38,254,255],{},"Core 挂载生命周期",[38,257,258],{},"Schema 本身不提供输入与绘制",[20,260,261,266,269],{},[38,262,263],{},[41,264,265],{},"addDocumentProfiles()",[38,267,268],{},"排版引擎的 facet 解析",[38,270,271],{},"Core 不解释 Word 属性或单位",[20,273,274,279,282],{},[38,275,276],{},[41,277,278],{},"addLayoutProviders()",[38,280,281],{},"View\u002FEngine",[38,283,284],{},"HTML CSS 不自动变成 Canvas 布局",[20,286,287,292,295],{},[38,288,289],{},[41,290,291],{},"addSelectionAdapters()",[38,293,294],{},"结构选择编译与命令目标",[38,296,297],{},"可绘制不代表可正确跨组选择",[20,299,300,305,311],{},[38,301,302],{},[41,303,304],{},"addDocx()",[38,306,307,308],{},"实例 ",[41,309,310],{},"editor.docx",[38,312,313],{},"序列化为 JSON 不代表 DOCX 往返成立",[20,315,316,321,324],{},[38,317,318],{},[41,319,320],{},"addAccessibility()",[38,322,323],{},"无障碍语义 owner",[38,325,326],{},"只画文字不等于语义可达",[20,328,329,334,337],{},[38,330,331],{},[41,332,333],{},"addAiCapabilities()",[38,335,336],{},"AI 核心",[38,338,339],{},"feature 声明事实和 described command，不自建模型工具或提示词",[212,341,342,343,346,347,225],{},"产品 UI 的 ",[41,344,345],{},"addRibbonItems"," 等贡献需要相应产品注册表消费；纯 Core 实例不会凭这些声明生成界面。参见",[216,348,350],{"href":349},"\u002Fbuild\u002Fproduct-plugin","产品插件",[10,352,354],{"id":353},"文档-profile-与布局-provider","文档 profile 与布局 provider",[212,356,357],{},"profile 提供模型级语义，如页面、段落、表格和绘图。一个 facet 只能有一个所有者；缺失项走中立默认。它与单个 custom Node 的布局 provider 不是同一抽象。",[359,360],"docs-api",{"name":361},"QuireDocumentProfileRegistration",[212,363,364],{},"provider 声明 nodeTypes 和 capability，并返回带源范围\u002F快照版本的布局产品。注册通过公开子入口；不要把内部类型名误当成根入口 export。",[359,366],{"name":367},"QuireLayoutProviderRegistration",[359,369],{"name":370},"createQuireLayoutProviderRegistration",[212,372,373,374,225,377,380],{},"具体的测量 → child flow → retained region 和 structured selection 见",[216,375,376],{"href":223},"完整源码",[41,378,379],{},"layoutDependency: { kind: 'document' }"," 只有在 provider 不读取未声明的外部可变状态时才成立，不能作为通用性能开关。",{"title":382,"searchDepth":383,"depth":383,"links":384},"",2,[385,386,387],{"id":12,"depth":383,"text":12},{"id":228,"depth":383,"text":228},{"id":353,"depth":383,"text":354},"从 Node\u002FMark 与命令到 profile、布局和结构选区的实际职责。","md",null,"zh-CN",{},true,"\u002Fapi\u002Fextensions","API 与参考",{"title":5,"description":388},"api\u002Fextensions.zh-CN","831RufKpMSTC-92X-pBrITgl0Pg1c2bGkAKB8qbD8xg",1793045209084]