[{"data":1,"prerenderedAt":401},["ShallowReactive",2],{"quirekit-doc:\u002Fen\u002Fapi\u002Fextensions":3},{"id":4,"title":5,"body":6,"description":390,"extension":391,"keywords":392,"locale":393,"meta":394,"navigation":395,"order":385,"path":396,"section":397,"seo":398,"stem":399,"__hash__":400},"docs\u002Fapi\u002Fextensions.en.md","Extensions: configuration and capability contracts",{"type":7,"value":8,"toc":383},"minimark",[9,14,212,227,231,342,353,357,360,364,367,370,373],[10,11,13],"h2",{"id":12},"configuration-and-composition","Configuration and composition",[15,16,17,33],"table",{},[18,19,20],"thead",{},[21,22,23,27,30],"tr",{},[24,25,26],"th",{},"Entry\u002Fhook",[24,28,29],{},"Result or responsibility",[24,31,32],{},"Constraint",[34,35,36,51,68,81,94,107,120,133,149,166,179,195],"tbody",{},[21,37,38,45,48],{},[39,40,41],"td",{},[42,43,44],"code",{},"Extension.create(config)",[39,46,47],{},"Behavior definition",[39,49,50],{},"No schema node",[21,52,53,62,65],{},[39,54,55,58,59],{},[42,56,57],{},"Node.create()"," \u002F ",[42,60,61],{},"Mark.create()",[39,63,64],{},"Node\u002Fmark definition",[39,66,67],{},"Node content\u002Fgroup and mark restrictions enter one schema",[21,69,70,75,78],{},[39,71,72],{},[42,73,74],{},".configure(options)",[39,76,77],{},"Configured extension",[39,79,80],{},"Assemble per instance rather than mutating shared options",[21,82,83,88,91],{},[39,84,85],{},[42,86,87],{},".extend(config)",[39,89,90],{},"Extended definition",[39,92,93],{},"Replace intentionally; verify parent-hook invocation and ordering",[21,95,96,101,104],{},[39,97,98],{},[42,99,100],{},"addOptions()",[39,102,103],{},"Defaults",[39,105,106],{},"Options are not persistent document data",[21,108,109,114,117],{},[39,110,111],{},[42,112,113],{},"addStorage()",[39,115,116],{},"Instance state",[39,118,119],{},"Persist business attributes in schema where required",[21,121,122,127,130],{},[39,123,124],{},[42,125,126],{},"addExtensions()",[39,128,129],{},"Child extensions",[39,131,132],{},"Composition point with unique schema owners",[21,134,135,143,146],{},[39,136,137,58,140],{},[42,138,139],{},"addAttributes()",[42,141,142],{},"addGlobalAttributes()",[39,144,145],{},"Attributes",[39,147,148],{},"Define defaults, parsing, serialization and migration",[21,150,151,156,159],{},[39,152,153],{},[42,154,155],{},"addCommands()",[39,157,158],{},"Raw command factories",[39,160,161,162,165],{},"Augment ",[42,163,164],{},"Commands\u003CReturnType>"," for direct\u002Fchain\u002Fcan modes",[21,167,168,173,176],{},[39,169,170],{},[42,171,172],{},"addKeyboardShortcuts()",[39,174,175],{},"Key handlers",[39,177,178],{},"Use the same commands and return handling results",[21,180,181,189,192],{},[39,182,183,58,186],{},[42,184,185],{},"addInputRules()",[42,187,188],{},"addPasteRules()",[39,190,191],{},"Rules",[39,193,194],{},"Verify schema and history behavior",[21,196,197,202,205],{},[39,198,199],{},[42,200,201],{},"addProseMirrorPlugins()",[39,203,204],{},"PM plugins",[39,206,207,208,211],{},"Use the same ",[42,209,210],{},"@quirekit\u002Fpm"," identity",[213,214,215,216,221,222,226],"p",{},"See ",[217,218,220],"a",{"href":219},"\u002Fen\u002Fplugins\u002Fcustom","custom behavior"," and the ",[217,223,225],{"href":224},"\u002Fen\u002Fbuild\u002Fextension","complete content extension",".",[10,228,230],{"id":229},"capability-owners","Capability owners",[15,232,233,246],{},[18,234,235],{},[21,236,237,240,243],{},[24,238,239],{},"Hook",[24,241,242],{},"Consumer",[24,244,245],{},"What is not automatic",[34,247,248,261,274,287,300,316,329],{},[21,249,250,255,258],{},[39,251,252],{},[42,253,254],{},"addViewAdapters()",[39,256,257],{},"Core mount lifetime",[39,259,260],{},"Schema does not provide input\u002Fpainting",[21,262,263,268,271],{},[39,264,265],{},[42,266,267],{},"addDocumentProfiles()",[39,269,270],{},"Engine facet resolution",[39,272,273],{},"Core does not interpret Word fields or units",[21,275,276,281,284],{},[39,277,278],{},[42,279,280],{},"addLayoutProviders()",[39,282,283],{},"View\u002FEngine",[39,285,286],{},"HTML CSS does not become Canvas layout",[21,288,289,294,297],{},[39,290,291],{},[42,292,293],{},"addSelectionAdapters()",[39,295,296],{},"Structured selection and command targets",[39,298,299],{},"Drawing is not selection correctness",[21,301,302,307,313],{},[39,303,304],{},[42,305,306],{},"addDocx()",[39,308,309,310],{},"Instance ",[42,311,312],{},"editor.docx",[39,314,315],{},"JSON persistence does not establish DOCX round trips",[21,317,318,323,326],{},[39,319,320],{},[42,321,322],{},"addAccessibility()",[39,324,325],{},"Accessibility owner",[39,327,328],{},"Drawing text does not provide accessible semantics",[21,330,331,336,339],{},[39,332,333],{},[42,334,335],{},"addAiCapabilities()",[39,337,338],{},"AI core",[39,340,341],{},"Features supply facts and described commands, not model tools\u002Fprompts",[213,343,344,345,348,349,226],{},"Product UI hooks such as ",[42,346,347],{},"addRibbonItems"," require a consuming product registry. Pure Core does not create chrome from these declarations. See ",[217,350,352],{"href":351},"\u002Fen\u002Fbuild\u002Fproduct-plugin","product plugins",[10,354,356],{"id":355},"profiles-and-providers","Profiles and providers",[213,358,359],{},"Profiles supply model-wide page, paragraph, table and drawing semantics. Each facet has one owner; missing facets use neutral defaults. A profile is distinct from a custom Node's layout provider.",[361,362],"docs-api",{"name":363},"QuireDocumentProfileRegistration",[213,365,366],{},"Providers declare node types and capabilities and return products with source ranges and snapshot identity. Use public subpaths; an internal type name is not necessarily exported at the package root.",[361,368],{"name":369},"QuireLayoutProviderRegistration",[361,371],{"name":372},"createQuireLayoutProviderRegistration",[213,374,215,375,378,379,382],{},[217,376,377],{"href":224},"complete source"," for measurement → child flow → retained regions and selection. ",[42,380,381],{},"layoutDependency: { kind: 'document' }"," is valid only for a concrete provider that reads no undeclared external mutable state, not as a general performance switch.",{"title":384,"searchDepth":385,"depth":385,"links":386},"",2,[387,388,389],{"id":12,"depth":385,"text":13},{"id":229,"depth":385,"text":230},{"id":355,"depth":385,"text":356},"Practical responsibilities from nodes\u002Fmarks and commands to profiles, layout and selection.","md",null,"en",{},true,"\u002Fen\u002Fapi\u002Fextensions","API and reference",{"title":5,"description":390},"api\u002Fextensions.en","duw2Ue7Mf3QgKTFG7H1PwZ2k-_BXyDGJdEhy5KeGwrA",1793045209978]